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:40, in Energyscope.es_model(self) 39 modules.activate(ampl_uuid) ---> 40 self.__es_model = AMPL() 41 except SystemError: 42 # 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 = 20260415; 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 69df5f9d 21baf5fc a65cf9c2 07c7fcc8 d34353bb 32783d17 a7c46af8 73df3ece d65d9a00 d5e4953b 620fecb7 03343073 a50bb50a 805a307a 77ba2fcc 9163291e e4a47cc7 22be4cf9 a7539e14 453ea0d9 c1bb98ff 31135224 058a7dda 404bc6f5 548be10a 53822b44 c2751a2a 50192961 61b1fa56 60aa8cbe 92ad7f7d d7bee5ef a48806e0 f636c100 41468546 13a1da0d 4516644b f0d7378d 362fe50f e732ef3c 01ce87d8 b4f76489 f64b4b69 2381353f 84ad36c8 8063c65f 027a7682 076a1c46 1744303f b11b9285 3564fe2d 52773040 825bb0e3 100ad76b 642df3a8 61526c25 024f2f10 4348dbee 86ef6205 253e54bb 07db3b6a 326e36c1 b03eee5b 14d1f106 75baef2a 253b82e5 55b2300e d67b4176 e3db7a80 f53dfbdb 3251c602 517be87c e05f03a3 81a8ea34 c6c2a1a2 1679fb94 2102d545 855c66dc f3a46402 062dd38c 50b2ebab 339ea930 c59b1b96 9408eebf 2011f67e 315acb66 a29419b3 1447bd3a 91df18eb 60b6fc33 6c Computed 1-1-0-e246df1c runner--pdbxrphm-project-62195384-concurrent-0 5A:E7:C8:F1:AC:DA 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:82, in Energyscope.calc(self, ds, parser) 78 def calc(self, ds: Dataset = None, parser: Callable[[AMPL], Result] = parse_result) -> Result: 79 """ 80 Calls AMPL with `df` as .dat and returns the parsed result. 81 """ ---> 82 if self.es_model.getSets().__len__() == 0: # Check if AMPL instance is empty 83 self._initial_run(ds=ds) 85 # Solve the model File /builds/energyscope/energyscope/src/energyscope/energyscope.py:43, in Energyscope.es_model(self) 40 self.__es_model = AMPL() 41 except SystemError: 42 # Try to create the object a second time to prevent errors when starting `ampl_lic` ---> 43 self.__es_model = AMPL() 44 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 = 20260415; 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 69df5f9d 21baf5fc a65cf9c2 07c7fcc8 d34353bb 32783d17 a7c46af8 73df3ece d65d9a00 d5e4953b 620fecb7 03343073 a50bb50a 805a307a 77ba2fcc 9163291e e4a47cc7 22be4cf9 a7539e14 453ea0d9 c1bb98ff 31135224 058a7dda 404bc6f5 548be10a 53822b44 c2751a2a 50192961 61b1fa56 60aa8cbe 92ad7f7d d7bee5ef a48806e0 f636c100 41468546 13a1da0d 4516644b f0d7378d 362fe50f e732ef3c 01ce87d8 b4f76489 f64b4b69 2381353f 84ad36c8 8063c65f 027a7682 076a1c46 1744303f b11b9285 3564fe2d 52773040 825bb0e3 100ad76b 642df3a8 61526c25 024f2f10 4348dbee 86ef6205 253e54bb 07db3b6a 326e36c1 b03eee5b 14d1f106 75baef2a 253b82e5 55b2300e d67b4176 e3db7a80 f53dfbdb 3251c602 517be87c e05f03a3 81a8ea34 c6c2a1a2 1679fb94 2102d545 855c66dc f3a46402 062dd38c 50b2ebab 339ea930 c59b1b96 9408eebf 2011f67e 315acb66 a29419b3 1447bd3a 91df18eb 60b6fc33 6c Computed 1-1-0-e246df1c runner--pdbxrphm-project-62195384-concurrent-0 5A:E7:C8:F1:AC:DA 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