diff --git a/README.md b/README.md index 6d08530..7852ea0 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,24 @@ npm install npm run dev ``` +Lokale Ausführung auf dem eigenen Rechner (ohne Docker): + +Backend mit lokaler Gurobi-Lizenz: +```bash +cd /Users/nicolaimacbook/Projects/LEAG/COALLOG/LEAG-COALLOG +GRB_LICENSE_FILE=/Users/nicolaimacbook/gurobi.lic python3 -m uvicorn webapp.backend.main:app --reload +``` + +Frontend: +```bash +cd /Users/nicolaimacbook/Projects/LEAG/COALLOG/LEAG-COALLOG/webapp/frontend +npm run dev +``` + +Danach: +- UI: `http://localhost:5173/` +- API: `http://localhost:8000/` + Optional: eigene Input/Output-Pfade beim Preprocessing via Umgebungsvariablen: `POC1_INPUT_XLSX`, `POC1_OUTPUT_DIR`. diff --git a/src/optimization/__pycache__/run_optimization.cpython-313.pyc b/src/optimization/__pycache__/run_optimization.cpython-313.pyc index 1cc4466..7fbc3a6 100644 Binary files a/src/optimization/__pycache__/run_optimization.cpython-313.pyc and b/src/optimization/__pycache__/run_optimization.cpython-313.pyc differ diff --git a/src/optimization/run_optimization.py b/src/optimization/run_optimization.py index 297e985..429bfb3 100644 --- a/src/optimization/run_optimization.py +++ b/src/optimization/run_optimization.py @@ -407,7 +407,17 @@ def export_results(model: pyo.ConcreteModel, output_path: Path) -> None: bunker_df["vortags_bunkerbestand_tonnen"] = bunker_df.groupby("kraftwerk")[ "bunkerbestand_tonnen" ].shift(1) - bunker_df["vortags_bunkerbestand_tonnen"] = bunker_df["vortags_bunkerbestand_tonnen"].fillna(0) + bunker_init_map = { + j: safe_value(model.bunker_init[j]) for j in getattr(model, "J_BUNKER", []) + } + bunker_df["vortags_bunkerbestand_tonnen"] = bunker_df.apply( + lambda row: ( + bunker_init_map.get(row["kraftwerk"], 0.0) + if pd.isna(row["vortags_bunkerbestand_tonnen"]) + else row["vortags_bunkerbestand_tonnen"] + ), + axis=1, + ) bunker_pivot = ( bunker_df.pivot_table( index=["datum", "woche", "tag"], diff --git a/webapp/frontend/src/App.jsx b/webapp/frontend/src/App.jsx index 382db6b..405c87e 100644 --- a/webapp/frontend/src/App.jsx +++ b/webapp/frontend/src/App.jsx @@ -5,17 +5,17 @@ const API_BASE = import.meta.env.VITE_API_BASE || ""; const THEME_STORAGE_KEY = "poc1-theme"; const SOURCE_ORDER = ["Reichwalde", "Nochten", "Welzow"]; const SOURCE_COLORS = { - Reichwalde: "#e4dc41", - Nochten: "#f6bd1f", - Welzow: "#ef6c00", + Reichwalde: "#8c5e3c", + Nochten: "#b07d4f", + Welzow: "#d39b6a", }; const TARGET_ORDER = ["J", "SP", "B3", "B4", "V"]; const TARGET_COLORS = { - J: "#439c6b", - SP: "#5aaed6", - B3: "#ef6c00", - B4: "#f6bd1f", - V: "#e4dc41", + J: "#2f6f7e", + SP: "#4f8ea3", + B3: "#5c6fb2", + B4: "#7b5ea7", + V: "#2f9a8f", }; const TARGET_LABELS = { J: "KW Jänschwalde",