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 = 20260325; 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 69c3f4d6 e807e6ec 212515b1 d606d340 20de1aa7 7835c3b9 669f1474 2679f379 16e5a1e0 bf95cb37 263b4fc9 150ad26f e7ed5073 f4a06514 34cd7026 5645eb04 8213b206 f9f59942 e64f2381 04f5489c 61a1e64a 9fa72169 d7f2f799 60499e60 774056d1 d2f5c8c8 06fb49f9 d39350a2 d2f945bf 0456a22b 06ba7275 865a8d9d f3879350 2662ff92 42a36da1 6658cbcb 341c927a 9f53849f f25088e2 a275bca2 f120e817 04734911 4175cd38 f236627f 715b0db5 cbf06845 1563908a 13447f92 95c00eee 49f7878e 44c8e4ae e2986771 10fa220e d085dade 0684a2ee a6f72719 a31d2de6 5e060bc5 d71ac36e 76c6ed55 631a6575 1037d733 a0b3c61d 76ddd3c5 15f2534c 9e213165 31bec2fe b4e10a04 64b0a033 78875c25 b610064b b77d14db c054d03b 069547ba 929e61d2 b531e933 b6d87106 d822324f c4a289ae 101c950e 130724e9 c38643fc a44e6e73 8166c11f d2031ede aae3b4a7 d62f7565 4406330b f264ea64 e7809123 3e Computed 1-1-0-f82a98db runner--pdbxrphm-project-62195384-concurrent-0 5E:E0:FF:5E:52:90 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 = 20260325; 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 69c3f4d6 e807e6ec 212515b1 d606d340 20de1aa7 7835c3b9 669f1474 2679f379 16e5a1e0 bf95cb37 263b4fc9 150ad26f e7ed5073 f4a06514 34cd7026 5645eb04 8213b206 f9f59942 e64f2381 04f5489c 61a1e64a 9fa72169 d7f2f799 60499e60 774056d1 d2f5c8c8 06fb49f9 d39350a2 d2f945bf 0456a22b 06ba7275 865a8d9d f3879350 2662ff92 42a36da1 6658cbcb 341c927a 9f53849f f25088e2 a275bca2 f120e817 04734911 4175cd38 f236627f 715b0db5 cbf06845 1563908a 13447f92 95c00eee 49f7878e 44c8e4ae e2986771 10fa220e d085dade 0684a2ee a6f72719 a31d2de6 5e060bc5 d71ac36e 76c6ed55 631a6575 1037d733 a0b3c61d 76ddd3c5 15f2534c 9e213165 31bec2fe b4e10a04 64b0a033 78875c25 b610064b b77d14db c054d03b 069547ba 929e61d2 b531e933 b6d87106 d822324f c4a289ae 101c950e 130724e9 c38643fc a44e6e73 8166c11f d2031ede aae3b4a7 d62f7565 4406330b f264ea64 e7809123 3e Computed 1-1-0-f82a98db runner--pdbxrphm-project-62195384-concurrent-0 5E:E0:FF:5E:52:90 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