Example notebook

[1]:
import matplotlib.pyplot as plt

from pommes import test_case_path
from pommes.io.build_input_dataset import (
    build_input_parameters,
    read_config_file,
)
from pommes.io.save_solution import save_solution
from pommes.model.build_model import build_model
from pommes.model.data_validation.dataset_check import check_inputs
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 3
      1 import matplotlib.pyplot as plt
----> 3 from pommes import test_case_path
      4 from pommes.io.build_input_dataset import (
      5     build_input_parameters,
      6     read_config_file,
      7 )
      8 from pommes.io.save_solution import save_solution

File /opt/conda/lib/python3.13/site-packages/pommes/__init__.py:12
      5 from pommes.io.build_input_dataset import (
      6     build_input_parameters,
      7     read_config_file,
      8 )
      9 from pommes.io.calculate_summaries import (
     10     generate_summary_dataframes_from_results,
     11 )
---> 12 from pommes.io.save_solution import save_solution
     13 from pommes.model.build_model import build_model
     14 from pommes.model.data_validation.dataset_check import check_inputs

File /opt/conda/lib/python3.13/site-packages/pommes/io/save_solution.py:11
      9 from linopy import Model
     10 from xarray import Dataset
---> 11 import hdf5plugin
     13 logger = logging.getLogger(__name__)
     16 def save_solution(
     17     model: Model,
     18     output_folder: str,
   (...)     23     model_parameters: Dataset | None = None,
     24 ) -> None:

ModuleNotFoundError: No module named 'hdf5plugin'
[2]:
scenario = "ref"
suffix = "_02161113"

output_folder = f"{test_case_path}/output/{scenario}{suffix}"
solver = "highs"  # ["gurobi", "xpress", "highs", "mosek"]
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[2], line 4
      1 scenario = "ref"
      2 suffix = "_02161113"
----> 4 output_folder = f"{test_case_path}/output/{scenario}{suffix}"
      5 solver = "highs"  # ["gurobi", "xpress", "highs", "mosek"]

NameError: name 'test_case_path' is not defined
[3]:
config = read_config_file(file_path=test_case_path / "config.yaml")

model_parameters = build_input_parameters(config)
model_parameters = check_inputs(model_parameters)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[3], line 1
----> 1 config = read_config_file(file_path=test_case_path / "config.yaml")
      3 model_parameters = build_input_parameters(config)
      4 model_parameters = check_inputs(model_parameters)

NameError: name 'read_config_file' is not defined
[4]:
model = build_model(model_parameters)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[4], line 1
----> 1 model = build_model(model_parameters)

NameError: name 'build_model' is not defined
[5]:
model.solve(solver_name=solver)

save_solution(
    model=model,
    output_folder=output_folder,
    model_parameters=model_parameters,
)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[5], line 1
----> 1 model.solve(solver_name=solver)
      3 save_solution(
      4     model=model,
      5     output_folder=output_folder,
      6     model_parameters=model_parameters,
      7 )

NameError: name 'model' is not defined
[6]:
solution = model.solution
print(model.solution)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[6], line 1
----> 1 solution = model.solution
      2 print(model.solution)

NameError: name 'model' is not defined
[7]:
dual = model.dual
print(dual)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[7], line 1
----> 1 dual = model.dual
      2 print(dual)

NameError: name 'model' is not defined
[8]:
prices = dual.operation_adequacy_constraint
df = prices.to_dataframe(name="value").reset_index()
print(df)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[8], line 1
----> 1 prices = dual.operation_adequacy_constraint
      2 df = prices.to_dataframe(name="value").reset_index()
      3 print(df)

NameError: name 'dual' is not defined
[9]:
unique_resources = df["resource"].unique()
unique_years = df["year_op"].unique()
unique_areas = df["area"].unique()
colors = plt.cm.tab10(range(len(unique_areas)))
area_color_map = {area: colors[i] for i, area in enumerate(unique_areas)}

fig, axes = plt.subplots(
    len(unique_resources),
    len(unique_years),
    figsize=(15, 10),
    sharex=True,
    sharey="row",
)

for i, resource in enumerate(unique_resources):
    for j, year in enumerate(unique_years):
        ax = axes[i, j]
        subset = df[(df["resource"] == resource) & (df["year_op"] == year)]

        for area in unique_areas:
            area_data = subset[subset["area"] == area]
            if not area_data.empty:
                ax.plot(
                    area_data["hour"],
                    area_data["value"],
                    marker="o",
                    color=area_color_map[area],
                )
        if i == 0:
            ax.set_title(f"Year: {year}")
        if j == 0:
            ax.set_ylabel(f"Resource: {resource}")
        if i == len(unique_resources) - 1:
            ax.set_xlabel("Hour")

legend_elements = [
    plt.Line2D(
        [0],
        [0],
        marker="o",
        color=color,
        linestyle="",
        markersize=8,
        label=area,
    )
    for area, color in area_color_map.items()
]
fig.legend(
    handles=legend_elements,
    loc="upper center",
    ncol=len(unique_areas),
    title="Area",
)

plt.tight_layout(rect=(0, 0, 1, 0.95))
plt.show()
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[9], line 1
----> 1 unique_resources = df["resource"].unique()
      2 unique_years = df["year_op"].unique()
      3 unique_areas = df["area"].unique()

NameError: name 'df' is not defined
[ ]: