openTEPES 4.18.1__py3-none-any.whl → 4.18.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openTEPES/__init__.py +1 -1
- openTEPES/openTEPES.py +3 -3
- openTEPES/openTEPES_InputData.py +3 -3
- openTEPES/openTEPES_Main.py +4 -4
- openTEPES/openTEPES_ModelFormulation.py +10 -10
- openTEPES/openTEPES_OutputResults.py +23 -12
- {opentepes-4.18.1.dist-info → opentepes-4.18.2.dist-info}/METADATA +1 -1
- {opentepes-4.18.1.dist-info → opentepes-4.18.2.dist-info}/RECORD +11 -11
- {opentepes-4.18.1.dist-info → opentepes-4.18.2.dist-info}/LICENSE +0 -0
- {opentepes-4.18.1.dist-info → opentepes-4.18.2.dist-info}/WHEEL +0 -0
- {opentepes-4.18.1.dist-info → opentepes-4.18.2.dist-info}/entry_points.txt +0 -0
openTEPES/__init__.py
CHANGED
|
@@ -14,7 +14,7 @@ Open Generation, Storage, and Transmission Operation and Expansion Planning Mode
|
|
|
14
14
|
>>> import openTEPES as oT
|
|
15
15
|
>>> oT.routine("9n", "C:\\Users\\UserName\\Documents\\GitHub\\openTEPES", "glpk")
|
|
16
16
|
"""
|
|
17
|
-
__version__ = "4.18.
|
|
17
|
+
__version__ = "4.18.2"
|
|
18
18
|
|
|
19
19
|
from .openTEPES_Main import main
|
|
20
20
|
from .openTEPES import *
|
openTEPES/openTEPES.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) -
|
|
2
|
+
Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - January 15, 2024
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
# import dill as pickle
|
|
@@ -39,8 +39,8 @@ def openTEPES_run(DirName, CaseName, SolverName, pIndOutputResults, pIndLogConso
|
|
|
39
39
|
idxDict['y' ] = 1
|
|
40
40
|
|
|
41
41
|
#%% model declaration
|
|
42
|
-
mTEPES = ConcreteModel('Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.
|
|
43
|
-
print( 'Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.
|
|
42
|
+
mTEPES = ConcreteModel('Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.2 - January 15, 2024')
|
|
43
|
+
print( 'Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.2 - January 15, 2024', file=open(f'{_path}/openTEPES_version_{CaseName}.log','w'))
|
|
44
44
|
|
|
45
45
|
pIndOutputResults = [j for i,j in idxDict.items() if i == pIndOutputResults][0]
|
|
46
46
|
pIndLogConsole = [j for i,j in idxDict.items() if i == pIndLogConsole ][0]
|
openTEPES/openTEPES_InputData.py
CHANGED
|
@@ -1086,9 +1086,9 @@ def InputData(DirName, CaseName, mTEPES, pIndLogConsole):
|
|
|
1086
1086
|
# pMaxPowerElec = pMaxPowerElec.where(pMaxPowerElec >= pMinPowerElec, pMinPowerElec)
|
|
1087
1087
|
# pMaxCharge = pMaxCharge.where (pMaxCharge >= pMinCharge, pMinCharge )
|
|
1088
1088
|
|
|
1089
|
-
#Decrease Minimum to reach maximum
|
|
1089
|
+
# Decrease Minimum to reach maximum
|
|
1090
1090
|
pMinPowerElec = pMinPowerElec.where(pMinPowerElec <= pMaxPowerElec, pMaxPowerElec)
|
|
1091
|
-
pMinCharge = pMinCharge.where (pMinCharge
|
|
1091
|
+
pMinCharge = pMinCharge.where (pMinCharge <= pMaxCharge, pMaxCharge )
|
|
1092
1092
|
|
|
1093
1093
|
#Calculate 2nd Blocks
|
|
1094
1094
|
pMaxPower2ndBlock = pMaxPowerElec - pMinPowerElec
|
|
@@ -1313,7 +1313,7 @@ def InputData(DirName, CaseName, mTEPES, pIndLogConsole):
|
|
|
1313
1313
|
mTEPES.pIndBinGenOperat = Param(initialize=pIndBinGenOperat , within=Binary, doc='Indicator of binary generation operation decisions', mutable=True)
|
|
1314
1314
|
mTEPES.pIndBinSingleNode = Param(initialize=pIndBinSingleNode , within=Binary, doc='Indicator of single node within a electric network case', mutable=True)
|
|
1315
1315
|
mTEPES.pIndBinGenRamps = Param(initialize=pIndBinGenRamps , within=Binary, doc='Indicator of using or not the ramp constraints', mutable=True)
|
|
1316
|
-
mTEPES.pIndBinGenMinTime = Param(initialize=pIndBinGenMinTime , within=Binary, doc='Indicator of using or not the min time constraints',
|
|
1316
|
+
mTEPES.pIndBinGenMinTime = Param(initialize=pIndBinGenMinTime , within=Binary, doc='Indicator of using or not the min up/dw time constraints', mutable=True)
|
|
1317
1317
|
mTEPES.pIndBinLineCommit = Param(initialize=pIndBinLineCommit , within=Binary, doc='Indicator of binary electric network switching decisions', mutable=True)
|
|
1318
1318
|
mTEPES.pIndBinNetLosses = Param(initialize=pIndBinNetLosses , within=Binary, doc='Indicator of binary electric network ohmic losses', mutable=True)
|
|
1319
1319
|
mTEPES.pIndHydroTopology = Param(initialize=pIndHydroTopology , within=Binary, doc='Indicator of reservoir and hydropower topology' )
|
openTEPES/openTEPES_Main.py
CHANGED
|
@@ -660,7 +660,7 @@
|
|
|
660
660
|
# For more information on this, and how to apply and follow the GNU AGPL, see
|
|
661
661
|
# <https://www.gnu.org/licenses/>.
|
|
662
662
|
|
|
663
|
-
# Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - December
|
|
663
|
+
# Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - December 23, 2024
|
|
664
664
|
# simplicity and transparency in power systems planning
|
|
665
665
|
|
|
666
666
|
# Developed by
|
|
@@ -685,7 +685,7 @@ import time
|
|
|
685
685
|
# import pkg_resources
|
|
686
686
|
from .openTEPES import openTEPES_run
|
|
687
687
|
|
|
688
|
-
print('\033[1;32mOpen Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.
|
|
688
|
+
print('\033[1;32mOpen Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.2 - January 15, 2024\033[0m')
|
|
689
689
|
print('\033[34m#### Academic research license - for non-commercial use only ####\033[0m \n')
|
|
690
690
|
|
|
691
691
|
parser = argparse.ArgumentParser(description='Introducing main parameters...')
|
|
@@ -737,9 +737,9 @@ def main():
|
|
|
737
737
|
# Computing the elapsed time
|
|
738
738
|
ElapsedTime = round(time.time() - StartTime)
|
|
739
739
|
print('Total time ... {} s'.format(ElapsedTime))
|
|
740
|
-
path_to_write_time = os.path.join(args.dir,args.case,f'openTEPES_time_{
|
|
740
|
+
path_to_write_time = os.path.join(args.dir,args.case,f'openTEPES_time_{CASE}.log')
|
|
741
741
|
with open(path_to_write_time, 'w') as f:
|
|
742
|
-
f'Elapsed time
|
|
742
|
+
f.write('Elapsed time '+str(ElapsedTime)+' s')
|
|
743
743
|
# Final message
|
|
744
744
|
print('End of the run ************')
|
|
745
745
|
print('\033[34m#### Academic research license - for non-commercial use only ####\033[0m')
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) -
|
|
2
|
+
Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - January 07, 2025
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
import time
|
|
@@ -1079,7 +1079,7 @@ def GenerationOperationModelFormulationRampMinTime(OptModel, mTEPES, pIndLogCons
|
|
|
1079
1079
|
else:
|
|
1080
1080
|
pEpsilon = 1e-4
|
|
1081
1081
|
|
|
1082
|
-
def eRampUpState(OptModel,
|
|
1082
|
+
def eRampUpState(OptModel,n,nr):
|
|
1083
1083
|
if mTEPES.pStableTime[nr] and mTEPES.pMaxPower2ndBlock[p,sc,n,nr] and (p,nr) in mTEPES.pnr and mTEPES.pDuration[p,sc,n]():
|
|
1084
1084
|
if pIndStableTimeDeadBand:
|
|
1085
1085
|
if mTEPES.pRampUp[nr]:
|
|
@@ -1110,7 +1110,7 @@ def GenerationOperationModelFormulationRampMinTime(OptModel, mTEPES, pIndLogCons
|
|
|
1110
1110
|
if pIndLogConsole == 1:
|
|
1111
1111
|
print('eRampUpState ... ', len(getattr(OptModel, f'eRampUpState_{p}_{sc}_{st}')), ' rows')
|
|
1112
1112
|
|
|
1113
|
-
def eRampDwState(OptModel,
|
|
1113
|
+
def eRampDwState(OptModel,n,nr):
|
|
1114
1114
|
if mTEPES.pStableTime[nr] and mTEPES.pMaxPower2ndBlock[p,sc,n,nr] and (p,nr) in mTEPES.pnr and mTEPES.pDuration[p,sc,n]():
|
|
1115
1115
|
if pIndStableTimeDeadBand:
|
|
1116
1116
|
if mTEPES.pRampDw[nr]:
|
|
@@ -1168,7 +1168,7 @@ def GenerationOperationModelFormulationRampMinTime(OptModel, mTEPES, pIndLogCons
|
|
|
1168
1168
|
print('eMinDownTime ... ', len(getattr(OptModel, f'eMinDownTime_{p}_{sc}_{st}')), ' rows')
|
|
1169
1169
|
|
|
1170
1170
|
if pIndSimplexFormulation:
|
|
1171
|
-
def eMinStableTime(OptModel,
|
|
1171
|
+
def eMinStableTime(OptModel,n,nr):
|
|
1172
1172
|
if (mTEPES.pStableTime[nr] and mTEPES.pMaxPower2ndBlock[p,sc,n,nr] and mTEPES.n.ord(n) >= mTEPES.pStableTime[nr] + 2):
|
|
1173
1173
|
return OptModel.vRampUpState[p,sc,n,nr] + sum(OptModel.vRampDwState[p,sc,n2,nr] for n2 in list(mTEPES.n2)[mTEPES.n.ord(n)-mTEPES.pStableTime[nr]-1:mTEPES.n.ord(n)-1]) <= 1
|
|
1174
1174
|
else:
|
|
@@ -1181,9 +1181,9 @@ def GenerationOperationModelFormulationRampMinTime(OptModel, mTEPES, pIndLogCons
|
|
|
1181
1181
|
for nr in mTEPES.nr:
|
|
1182
1182
|
if (mTEPES.pStableTime[nr] and mTEPES.pMaxPower2ndBlock[p,sc,n,nr] and mTEPES.n.ord(n) >= mTEPES.pStableTime[nr] + 2):
|
|
1183
1183
|
for n2 in list(mTEPES.n2)[mTEPES.n.ord(n)-mTEPES.pStableTime[nr]-1:mTEPES.n.ord(n)-1]:
|
|
1184
|
-
MinStableTimeLoadLevels.append((n,
|
|
1184
|
+
MinStableTimeLoadLevels.append((n,n2,nr))
|
|
1185
1185
|
|
|
1186
|
-
def eMinStableTime(OptModel,
|
|
1186
|
+
def eMinStableTime(OptModel,n,n2,nr):
|
|
1187
1187
|
return OptModel.vRampUpState[p,sc,n,nr] + OptModel.vRampDwState[p,sc,n2,nr] <= 1
|
|
1188
1188
|
setattr(OptModel, f'eMinStableTime_{p}_{sc}_{st}', Constraint(MinStableTimeLoadLevels, rule=eMinStableTime, doc='minimum stable time [p.u.]'))
|
|
1189
1189
|
|
|
@@ -1514,13 +1514,13 @@ def NetworkHeatOperationModelFormulation(OptModel, mTEPES, pIndLogConsole, p, sc
|
|
|
1514
1514
|
chp2n[nd].append(chp)
|
|
1515
1515
|
|
|
1516
1516
|
def eEnergy2Heat(OptModel,n,chp):
|
|
1517
|
-
if
|
|
1518
|
-
return OptModel.vTotalOutputHeat[p,sc,n,chp] == OptModel.vTotalOutput[p,sc,n,chp] / mTEPES.pPower2HeatRatio[chp]
|
|
1517
|
+
if (p,chp) in mTEPES.pchp and chp in mTEPES.ch and chp not in mTEPES.bo:
|
|
1518
|
+
return OptModel.vTotalOutputHeat[p,sc,n,chp] == OptModel.vTotalOutput [p,sc,n,chp] / mTEPES.pPower2HeatRatio [chp]
|
|
1519
1519
|
elif (p,chp) in mTEPES.pchp and chp in mTEPES.hp:
|
|
1520
1520
|
return OptModel.vTotalOutputHeat[p,sc,n,chp] == OptModel.vESSTotalCharge[p,sc,n,chp] / mTEPES.pProductionFunctionHeat[chp]
|
|
1521
1521
|
else:
|
|
1522
1522
|
return Constraint.Skip
|
|
1523
|
-
setattr(OptModel, f'eEnergy2Heat_{p}_{sc}_{st}', Constraint(mTEPES.n, mTEPES.chp, rule=eEnergy2Heat, doc='Energy to heat conversion [
|
|
1523
|
+
setattr(OptModel, f'eEnergy2Heat_{p}_{sc}_{st}', Constraint(mTEPES.n, mTEPES.chp, rule=eEnergy2Heat, doc='Energy to heat conversion [GW]'))
|
|
1524
1524
|
|
|
1525
1525
|
if pIndLogConsole == 1:
|
|
1526
1526
|
print('eEnergy2Heat ... ', len(getattr(OptModel, f'eEnergy2Heat_{p}_{sc}_{st}')), ' rows')
|
|
@@ -1531,7 +1531,7 @@ def NetworkHeatOperationModelFormulation(OptModel, mTEPES, pIndLogConsole, p, sc
|
|
|
1531
1531
|
sum(OptModel.vFlowHeat[p,sc,n,nd,nf,cc] for nf,cc in lout[nd] if (p,nd,nf,cc) in mTEPES.pha) + sum(OptModel.vFlowHeat[p,sc,n,ni,nd,cc] for ni,cc in lin[nd] if (p,ni,nd,cc) in mTEPES.pha)) == mTEPES.pDemandHeat[p,sc,n,nd]
|
|
1532
1532
|
else:
|
|
1533
1533
|
return Constraint.Skip
|
|
1534
|
-
setattr(OptModel, f'eBalanceHeat_{p}_{sc}_{st}', Constraint(mTEPES.n, mTEPES.nd, rule=eBalanceHeat, doc='Heat load generation balance [
|
|
1534
|
+
setattr(OptModel, f'eBalanceHeat_{p}_{sc}_{st}', Constraint(mTEPES.n, mTEPES.nd, rule=eBalanceHeat, doc='Heat load generation balance [GW]'))
|
|
1535
1535
|
|
|
1536
1536
|
if pIndLogConsole == 1:
|
|
1537
1537
|
print('eBalanceHeat ... ', len(getattr(OptModel, f'eBalanceHeat_{p}_{sc}_{st}')), ' rows')
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) -
|
|
2
|
+
Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - January 15, 2025
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
import time
|
|
@@ -366,10 +366,10 @@ def GenerationOperationResults(DirName, CaseName, OptModel, mTEPES, pIndTechnolo
|
|
|
366
366
|
StartTime = time.time()
|
|
367
367
|
|
|
368
368
|
# generators to area (n2a)
|
|
369
|
-
n2a = defaultdict(list)
|
|
370
|
-
for ar,nr in mTEPES.ar*mTEPES.nr:
|
|
371
|
-
|
|
372
|
-
|
|
369
|
+
# n2a = defaultdict(list)
|
|
370
|
+
# for ar,nr in mTEPES.ar*mTEPES.nr:
|
|
371
|
+
# if (ar,nr) in mTEPES.a2g:
|
|
372
|
+
# n2a[ar].append(nr)
|
|
373
373
|
g2a = defaultdict(list)
|
|
374
374
|
for ar,g in mTEPES.a2g:
|
|
375
375
|
g2a[ar].append(g)
|
|
@@ -1451,6 +1451,12 @@ def FlexibilityResults(DirName, CaseName, OptModel, mTEPES):
|
|
|
1451
1451
|
for gt,g in mTEPES.t2g:
|
|
1452
1452
|
g2t[gt].append(g)
|
|
1453
1453
|
|
|
1454
|
+
# nodes to area (d2a)
|
|
1455
|
+
d2a = defaultdict(list)
|
|
1456
|
+
for ar,nd in mTEPES.ar*mTEPES.nd:
|
|
1457
|
+
if (nd,ar) in mTEPES.ndar:
|
|
1458
|
+
d2a[ar].append(nd)
|
|
1459
|
+
|
|
1454
1460
|
OutputToFile = pd.Series(data=[sum(OptModel.vTotalOutput[p,sc,n,g]() for g in g2t[gt] if (p,g) in mTEPES.pg) for p,sc,n,gt in mTEPES.psngt], index=pd.Index(mTEPES.psngt))
|
|
1455
1461
|
OutputToFile *= 1e3
|
|
1456
1462
|
TechnologyOutput = OutputToFile.loc[:,:,:,:]
|
|
@@ -1470,15 +1476,20 @@ def FlexibilityResults(DirName, CaseName, OptModel, mTEPES):
|
|
|
1470
1476
|
NetESSTechnologyOutput[p,sc,n,ot] = MeanESSTechnologyOutput[ot] - ESSTechnologyOutput[p,sc,n,ot]
|
|
1471
1477
|
NetESSTechnologyOutput.to_frame(name='MW').reset_index().pivot_table(index=['level_0','level_1','level_2'], columns='level_3', values='MW', aggfunc='sum').rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityTechnologyESS_{CaseName}.csv', sep=',')
|
|
1472
1478
|
|
|
1473
|
-
MeanDemand = pd.Series(data=[sum(mTEPES.pDemandElec[p,sc,n,nd] for nd in
|
|
1474
|
-
OutputToFile = pd.Series(data=[sum(mTEPES.pDemandElec[p,sc,n,nd] for nd in
|
|
1479
|
+
MeanDemand = pd.Series(data=[sum(mTEPES.pDemandElec[p,sc,n,nd] for nd in d2a[ar]) for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar)).groupby(level=3).mean()
|
|
1480
|
+
OutputToFile = pd.Series(data=[sum(mTEPES.pDemandElec[p,sc,n,nd] for nd in d2a[ar]) - MeanDemand[ar] for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar))
|
|
1481
|
+
OutputToFile *= 1e3
|
|
1482
|
+
OutputToFile.to_frame(name='MW').reset_index().pivot_table(index=['level_0','level_1','level_2'], columns='level_3', values='MW', aggfunc='sum').rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityDemand_{CaseName}.csv', sep=',')
|
|
1483
|
+
|
|
1484
|
+
MeanENS = pd.Series(data=[sum(OptModel.vENS[p,sc,n,nd]() for nd in d2a[ar]) for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar)).groupby(level=3).mean()
|
|
1485
|
+
OutputToFile = pd.Series(data=[sum(OptModel.vENS[p,sc,n,nd]() for nd in d2a[ar]) - MeanENS[ar] for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar))
|
|
1475
1486
|
OutputToFile *= 1e3
|
|
1476
|
-
OutputToFile.to_frame(name='
|
|
1487
|
+
OutputToFile.to_frame(name='MW').reset_index().pivot_table(index=['level_0','level_1','level_2'], columns='level_3', values='MW', aggfunc='sum').rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityPNS_{CaseName}.csv', sep=',')
|
|
1477
1488
|
|
|
1478
|
-
|
|
1479
|
-
OutputToFile = pd.Series(data=[sum(OptModel.
|
|
1489
|
+
MeanFlow = pd.Series(data=[sum(OptModel.vFlowElec[p,sc,n,nd,nf,cc]() for nd,nf,cc,af in mTEPES.la*mTEPES.ar if nd in d2a[ar] and nf in d2a[af] and af != ar) for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar)).groupby(level=3).mean()
|
|
1490
|
+
OutputToFile = pd.Series(data=[sum(OptModel.vFlowElec[p,sc,n,nd,nf,cc]() for nd,nf,cc,af in mTEPES.la*mTEPES.ar if nd in d2a[ar] and nf in d2a[af] and af != ar) - MeanFlow[ar] for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar))
|
|
1480
1491
|
OutputToFile *= 1e3
|
|
1481
|
-
OutputToFile.to_frame(name='
|
|
1492
|
+
OutputToFile.to_frame(name='MW').reset_index().pivot_table(index=['level_0','level_1','level_2'], columns='level_3', values='MW', aggfunc='sum').rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityNetwork_{CaseName}.csv', sep=',')
|
|
1482
1493
|
|
|
1483
1494
|
WritingResultsTime = time.time() - StartTime
|
|
1484
1495
|
StartTime = time.time()
|
|
@@ -1879,7 +1890,7 @@ def EconomicResults(DirName, CaseName, OptModel, mTEPES, pIndAreaOutput, pIndPlo
|
|
|
1879
1890
|
if (nd,re) in mTEPES.n2g:
|
|
1880
1891
|
r2n[nd].append(re)
|
|
1881
1892
|
|
|
1882
|
-
# generators to area (g2a)
|
|
1893
|
+
# generators to area (n2a)(g2a)
|
|
1883
1894
|
n2a = defaultdict(list)
|
|
1884
1895
|
for ar,nr in mTEPES.ar*mTEPES.nr:
|
|
1885
1896
|
if (ar,nr) in mTEPES.a2g:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: openTEPES
|
|
3
|
-
Version: 4.18.
|
|
3
|
+
Version: 4.18.2
|
|
4
4
|
Summary: Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES)
|
|
5
5
|
Home-page: https://pascua.iit.comillas.edu/aramos/openTEPES/index.html
|
|
6
6
|
Author: IIT-EnergySystemModels
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
openTEPES/__init__.py,sha256=
|
|
1
|
+
openTEPES/__init__.py,sha256=QGVjYBk-tvIK0QGDJpFU41UnmWDlethIi7LhVqv_huw,832
|
|
2
2
|
openTEPES/openTEPES.mapbox_token,sha256=xsXNkwGp2vzXqQy2zVkyLhhNcNWniK2BMeOFpc5SZHI,93
|
|
3
|
-
openTEPES/openTEPES.py,sha256=
|
|
4
|
-
openTEPES/openTEPES_InputData.py,sha256=
|
|
5
|
-
openTEPES/openTEPES_Main.py,sha256=
|
|
6
|
-
openTEPES/openTEPES_ModelFormulation.py,sha256=
|
|
7
|
-
openTEPES/openTEPES_OutputResults.py,sha256=
|
|
3
|
+
openTEPES/openTEPES.py,sha256=SfROIuJtiLpcrkuizmooHZ8yUndnEjspA1d08J1Tbpw,20736
|
|
4
|
+
openTEPES/openTEPES_InputData.py,sha256=VuKwKbugL9z2jEXIvDrtcbt2L2_ZvZxf2YzcLdP7XqA,212075
|
|
5
|
+
openTEPES/openTEPES_Main.py,sha256=vXh1GYdfn7JzIe7kXiSCl2S9RQdPem7HmUHcf8jacp0,39867
|
|
6
|
+
openTEPES/openTEPES_ModelFormulation.py,sha256=U9HxoeqO96C-jgcYjX03Ie4zWCXT-hPp2zGIIXlAjV0,115918
|
|
7
|
+
openTEPES/openTEPES_OutputResults.py,sha256=xO3BFeCYWMTBJJrCs-9rTWFeSd0zUb3FVjDIVR2Dap4,207496
|
|
8
8
|
openTEPES/openTEPES_ProblemSolving.py,sha256=XRZolKfwqPMH61P3GKklGWoUQ_v9S8jlypaJKALo-Q8,14776
|
|
9
9
|
openTEPES/openTEPES_gitinfo.py,sha256=6fA1fa-JcyusSc_HcjPiCgnV9zn-fZwdG-kK0a5Fxc8,2004
|
|
10
10
|
openTEPES/.idea/.name,sha256=jiwfcnJ20wztcvpny4SHcqmAIWK-w5tCqN9TWf0GOkw,11
|
|
@@ -335,8 +335,8 @@ openTEPES/sSEP/oT_Dict_Storage_sSEP.csv,sha256=H2rJXZvoMuT-25sI2GpG8IuiNKD-dxuty
|
|
|
335
335
|
openTEPES/sSEP/oT_Dict_Technology_sSEP.csv,sha256=MCTpplzz7_eVPKQfOw35c86ib6CTtW6UK6JrbCJ8wls,170
|
|
336
336
|
openTEPES/sSEP/oT_Dict_ZoneToArea_sSEP.csv,sha256=AUDCs5Bg6sw9f2pVjGP1o4IJjXFF_VrokOGf_V3QsEI,24
|
|
337
337
|
openTEPES/sSEP/oT_Dict_Zone_sSEP.csv,sha256=TBud-fvbFbiAsuutxTYe8wWlv_x1P8oyWXILMpYiXJc,13
|
|
338
|
-
opentepes-4.18.
|
|
339
|
-
opentepes-4.18.
|
|
340
|
-
opentepes-4.18.
|
|
341
|
-
opentepes-4.18.
|
|
342
|
-
opentepes-4.18.
|
|
338
|
+
opentepes-4.18.2.dist-info/entry_points.txt,sha256=gNNPrDaTsRuRJXI1FLNgqMX1CiJ45bEp1dEDH7ZB8Oc,49
|
|
339
|
+
opentepes-4.18.2.dist-info/LICENSE,sha256=4O7bphXVzRuYavtsWzpLGuM3E-fp3HTRna7F4yIfnS4,35184
|
|
340
|
+
opentepes-4.18.2.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
|
341
|
+
opentepes-4.18.2.dist-info/METADATA,sha256=0K3Xm4OnlFCgugK1j379l_i_iWFjqVd2xSWOFciWGo0,17788
|
|
342
|
+
opentepes-4.18.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|