Plot installed capacity
In [1]:
Copied!
"""
Installed Capacity
===================================
This is an example using the core model.
"""
"""
Installed Capacity
===================================
This is an example using the core model.
"""
Out[1]:
'\nInstalled Capacity\n===================================\n\nThis is an example using the core model.\n'
In [2]:
Copied!
import matplotlib.pyplot as plt
from energyscope.energyscope import Energyscope
from energyscope.models import core
import matplotlib.pyplot as plt
from energyscope.energyscope import Energyscope
from energyscope.models import core
In [3]:
Copied!
thresh = 1
figsize = (10, 6)
thresh = 1
figsize = (10, 6)
In [4]:
Copied!
# Create a model and calculate the results
es_core = Energyscope(model=core)
results = es_core.calc()
# Create a model and calculate the results
es_core = Energyscope(model=core)
results = es_core.calc()
[INFO] Activating AMPL license with UUID
--------------------------------------------------------------------------- SystemError Traceback (most recent call last) File /builds/energyscope/energyscope/src/energyscope/energyscope.py:41, in Energyscope.es_model(self) 40 modules.activate(ampl_uuid) ---> 41 self.__es_model = AMPL() 42 except SystemError: 43 # Try to create the object a second time to prevent errors when starting `ampl_lic` File ~/.local/share/hatch/env/virtual/energyscope/4BIeM0-F/docs/lib/python3.10/site-packages/amplpy/ampl.py:105, in AMPL.__init__(self, environment) 104 if environment is None: --> 105 self._impl = amplpython.AMPL() 106 else: SystemError: License not valid. Message: License file /root/.local/share/hatch/env/virtual/energyscope/4BIeM0-F/docs/lib/python3.10/site-packages/ampl_module_base/bin/ampl.lic: Today = 20260223; found license file "/root/.local/share/hatch/env/virtual/energyscope/4BIeM0-F/docs/lib/python3.10/site-packages/ampl_module_base/bin/ampl.lic": # Bundle #7221.7759 expiring 20260215: ME-409 Energy conversion and renewable energy, Prof. Fran?ois Mar?chal, EPFL 699c7c10 fa18914a d03e191e 14298573 e4e12501 46326d73 56134294 a576b2ce b12548b3 1d4ba7ce 01d14268 645e3411 89825822 61a16980 23ea3e37 a1c324e1 7d651ecb 80661247 4e951452 09e2a095 75a3be31 f4c33331 9c69606f 024244a5 2cbb4217 612236a7 2a85dc2c 8c8600f4 8d00513b 1bd26ad7 c938a121 29462356 187478ac 1cd201a5 55d75db1 80c025e5 7a4754db 0ac3cb17 162833d1 99e413a6 f0c751e7 df6175f6 98b246ca d1198707 50a07b66 1d25bdd1 9ad04317 c47000a4 1f4762aa acd1d006 a689693f cf098276 b159a199 aa571592 03ed00fa c21237d5 7738bb26 def74a37 1a23ecb0 66d28490 c8c4e206 c8360725 609e0421 4fe3e193 9dcbff21 ef737945 bd5e0e18 bc7c1031 15ae31ed 2a156a01 d85e80fc 98cc4531 de0d1bd2 a401fb05 76d5a444 80e35063 bb0f43fd 38a40ce2 6a2843e5 e5f131f1 4896beb1 34f607d5 73f691dc 1bc5a373 7f102fa8 3770f512 b2e07a5b 484d65a5 30dbe07a d8af4683 35 Computed 1-1-0-199776bc runner--pdbxrphm-project-62195384-concurrent-0 36:CF:9A:6D:62:0B HOSTINFO.NPROC.4 HOSTINFO.CORES.4 HOSTINFO.PLATFORM.linux64 No ampl license for this machine. During handling of the above exception, another exception occurred: SystemError Traceback (most recent call last) Cell In[4], line 3 1 # Create a model and calculate the results 2 es_core = Energyscope(model=core) ----> 3 results = es_core.calc() File /builds/energyscope/energyscope/src/energyscope/energyscope.py:83, in Energyscope.calc(self, ds, parser) 79 def calc(self, ds: Dataset = None, parser: Callable[[AMPL], Result] = parse_result) -> Result: 80 """ 81 Calls AMPL with `df` as .dat and returns the parsed result. 82 """ ---> 83 if self.es_model.getSets().__len__() == 0: # Check if AMPL instance is empty 84 self._initial_run(ds=ds) 86 # Solve the model File /builds/energyscope/energyscope/src/energyscope/energyscope.py:44, in Energyscope.es_model(self) 41 self.__es_model = AMPL() 42 except SystemError: 43 # Try to create the object a second time to prevent errors when starting `ampl_lic` ---> 44 self.__es_model = AMPL() 45 return self.__es_model File ~/.local/share/hatch/env/virtual/energyscope/4BIeM0-F/docs/lib/python3.10/site-packages/amplpy/ampl.py:105, in AMPL.__init__(self, environment) 103 environment = Environment() 104 if environment is None: --> 105 self._impl = amplpython.AMPL() 106 else: 107 self._impl = amplpython.AMPL(environment._impl) SystemError: License not valid. Message: License file /root/.local/share/hatch/env/virtual/energyscope/4BIeM0-F/docs/lib/python3.10/site-packages/ampl_module_base/bin/ampl.lic: Today = 20260223; found license file "/root/.local/share/hatch/env/virtual/energyscope/4BIeM0-F/docs/lib/python3.10/site-packages/ampl_module_base/bin/ampl.lic": # Bundle #7221.7759 expiring 20260215: ME-409 Energy conversion and renewable energy, Prof. Fran?ois Mar?chal, EPFL 699c7c10 fa18914a d03e191e 14298573 e4e12501 46326d73 56134294 a576b2ce b12548b3 1d4ba7ce 01d14268 645e3411 89825822 61a16980 23ea3e37 a1c324e1 7d651ecb 80661247 4e951452 09e2a095 75a3be31 f4c33331 9c69606f 024244a5 2cbb4217 612236a7 2a85dc2c 8c8600f4 8d00513b 1bd26ad7 c938a121 29462356 187478ac 1cd201a5 55d75db1 80c025e5 7a4754db 0ac3cb17 162833d1 99e413a6 f0c751e7 df6175f6 98b246ca d1198707 50a07b66 1d25bdd1 9ad04317 c47000a4 1f4762aa acd1d006 a689693f cf098276 b159a199 aa571592 03ed00fa c21237d5 7738bb26 def74a37 1a23ecb0 66d28490 c8c4e206 c8360725 609e0421 4fe3e193 9dcbff21 ef737945 bd5e0e18 bc7c1031 15ae31ed 2a156a01 d85e80fc 98cc4531 de0d1bd2 a401fb05 76d5a444 80e35063 bb0f43fd 38a40ce2 6a2843e5 e5f131f1 4896beb1 34f607d5 73f691dc 1bc5a373 7f102fa8 3770f512 b2e07a5b 484d65a5 30dbe07a d8af4683 35 Computed 1-1-0-199776bc runner--pdbxrphm-project-62195384-concurrent-0 36:CF:9A:6D:62:0B HOSTINFO.NPROC.4 HOSTINFO.CORES.4 HOSTINFO.PLATFORM.linux64 No ampl license for this machine.
In [5]:
Copied!
F = results.variables["F"]
storages = results.sets['STORAGE_TECH']["STORAGE_TECH"].values
F_storage = F[F.index.get_level_values(0).isin(storages)]
F_tech = F[~F.index.get_level_values(0).isin(storages)]
# Sort by size
F_storage = F_storage.sort_values(by=F_storage.columns[0], ascending=False)
F_storage = F_storage[F_storage.values[:,0]>thresh]
F_tech = F_tech[F_tech.values[:,0]>thresh]
F_tech = F_tech.sort_values(by=F_tech.columns[0], ascending=False)
# Calculate subplot widths proportional to number of bars
n_tech = len(F_tech)
n_storage = len(F_storage)
total = n_tech + n_storage
widths = [n_tech, n_storage] if total > 0 else [1, 1]
fig, axes = plt.subplots(1, 2, figsize=figsize, gridspec_kw={'width_ratios': widths})
# Technologies subplot (left)
axes[0].bar(x=range(n_tech), height=F_tech.values[:, 0])
axes[0].set_xticks(range(n_tech))
axes[0].set_xticklabels(F_tech.index, rotation=90)
axes[0].set_ylabel('Installed Capacity of Conversion Technologies [GW]')
axes[0].set_xlim(-1, n_tech)
axes[0].set_title('Conversion Technologies', fontsize=20)
# Storages subplot (right)
axes[1].bar(x=range(n_storage), height=F_storage.values[:, 0], color='orange')
axes[1].set_xticks(range(n_storage))
axes[1].set_xticklabels(F_storage.index, rotation=90)
axes[1].set_ylabel('Installed Capacity of Storages [GWh]')
axes[1].set_xlim(-1, n_storage)
axes[1].set_title('Storages', fontsize=20)
plt.tight_layout()
plt.show()
F = results.variables["F"]
storages = results.sets['STORAGE_TECH']["STORAGE_TECH"].values
F_storage = F[F.index.get_level_values(0).isin(storages)]
F_tech = F[~F.index.get_level_values(0).isin(storages)]
# Sort by size
F_storage = F_storage.sort_values(by=F_storage.columns[0], ascending=False)
F_storage = F_storage[F_storage.values[:,0]>thresh]
F_tech = F_tech[F_tech.values[:,0]>thresh]
F_tech = F_tech.sort_values(by=F_tech.columns[0], ascending=False)
# Calculate subplot widths proportional to number of bars
n_tech = len(F_tech)
n_storage = len(F_storage)
total = n_tech + n_storage
widths = [n_tech, n_storage] if total > 0 else [1, 1]
fig, axes = plt.subplots(1, 2, figsize=figsize, gridspec_kw={'width_ratios': widths})
# Technologies subplot (left)
axes[0].bar(x=range(n_tech), height=F_tech.values[:, 0])
axes[0].set_xticks(range(n_tech))
axes[0].set_xticklabels(F_tech.index, rotation=90)
axes[0].set_ylabel('Installed Capacity of Conversion Technologies [GW]')
axes[0].set_xlim(-1, n_tech)
axes[0].set_title('Conversion Technologies', fontsize=20)
# Storages subplot (right)
axes[1].bar(x=range(n_storage), height=F_storage.values[:, 0], color='orange')
axes[1].set_xticks(range(n_storage))
axes[1].set_xticklabels(F_storage.index, rotation=90)
axes[1].set_ylabel('Installed Capacity of Storages [GWh]')
axes[1].set_xlim(-1, n_storage)
axes[1].set_title('Storages', fontsize=20)
plt.tight_layout()
plt.show()
--------------------------------------------------------------------------- NameError Traceback (most recent call last) Cell In[5], line 1 ----> 1 F = results.variables["F"] 2 storages = results.sets['STORAGE_TECH']["STORAGE_TECH"].values 4 F_storage = F[F.index.get_level_values(0).isin(storages)] NameError: name 'results' is not defined