From 0e8c1f97305fbaed130b5f192d555fb072c07752 Mon Sep 17 00:00:00 2001
From: "christoph.von.oy" <christoph.von.oy@rwth-aachen.de>
Date: Thu, 11 Apr 2024 15:18:21 +0200
Subject: [PATCH] Refactored additional model logic

---
 Model_Library                        |  2 +-
 examples/BusChargingDepot/depot.json | 36 +++++++--------
 examples/BusChargingDepot/runme.py   | 12 ++---
 examples/BusChargingHPC/HPC.json     | 66 ++++++++++++++--------------
 examples/BusChargingHPC/runme.py     | 48 ++++++++++----------
 examples/BusChargingIMC/IMC.json     | 40 ++++++++---------
 examples/BusChargingIMC/runme.py     | 24 +++++-----
 7 files changed, 114 insertions(+), 114 deletions(-)

diff --git a/Model_Library b/Model_Library
index 7fb211d58a..309aba58c3 160000
--- a/Model_Library
+++ b/Model_Library
@@ -1 +1 @@
-Subproject commit 7fb211d58a0ef773b36c6fbc4b4ca4d7d2c904e0
+Subproject commit 309aba58c30a46e20112da48b3e9413ac13c8de3
diff --git a/examples/BusChargingDepot/depot.json b/examples/BusChargingDepot/depot.json
index e73e351756..f7fa54c353 100644
--- a/examples/BusChargingDepot/depot.json
+++ b/examples/BusChargingDepot/depot.json
@@ -15,28 +15,28 @@
             "model": "depot_inverter.json",
             "min_capacity": 0,
             "max_capacity": 5000,
-            "additional_model_logic": [
-                {
+            "additional_model_logic": {
+                "ramp_penalty": {
                     "type": "RampPenalty",
                     "variable": "output_1",
                     "variable_ub": "capacity",
                     "objective_factor": 0.001
                 }
-            ]
+            }
         },
         "depot_inverter_2": {
             "type": "BiPowerElectronic",
             "model": "depot_inverter.json",
             "min_capacity": 0,
             "max_capacity": 5000,
-            "additional_model_logic": [
-                {
+            "additional_model_logic": {
+                "ramp_penalty": {
                     "type": "RampPenalty",
                     "variable": "output_1",
                     "variable_ub": "capacity",
                     "objective_factor": 0.001
                 }
-            ]
+            }
         },
         "bus_1_battery": {
             "type": "LiionBattery",
@@ -47,12 +47,12 @@
                 "sense": ">=",
                 "value": [1.0, "first_soe"]
             },
-            "additional_model_logic" : [
-                {
+            "additional_model_logic": {
+                "input_penalty": {
                     "type": "additional_operational_objective",
                     "value": [0.2, "input_1"]
                 }
-            ]
+            }
         },
         "bus_1_consumption": {
             "type": "ElectricalConsumption"
@@ -69,12 +69,12 @@
                 "sense": ">=",
                 "value": [1.0, "first_soe"]
             },
-            "additional_model_logic" : [
-                {
+            "additional_model_logic": {
+                "input_penalty": {
                     "type": "additional_operational_objective",
                     "value": [0.2, "input_1"]
                 }
-            ]
+            }
         },
         "bus_2_consumption": {
             "type": "ElectricalConsumption"
@@ -173,24 +173,24 @@
     "planning_horizon": 20,
     "price_change_factor": 1.02,
     "interest_factor": 1.05,
-    "additional_model_logic": [
-        {
+    "additional_model_logic": {
+        "battery_capacities": {
             "type": "EqualCapacity",
             "components": ["bus_1_battery", "bus_2_battery"]
         },
-        {
+        "charging_capacities": {
             "type": "EqualCapacity",
             "components": ["depot_inverter_1", "depot_inverter_2"]
         },
-        {
+        "charger_1_enable": {
             "type": "ConnectorEnable",
             "component": "depot_inverter_1",
             "connector": "output_1"
         },
-        {
+        "charger_2_enable": {
             "type": "ConnectorEnable",
             "component": "depot_inverter_2",
             "connector": "output_1"
         }
-    ]
+    }
 }
\ No newline at end of file
diff --git a/examples/BusChargingDepot/runme.py b/examples/BusChargingDepot/runme.py
index 6c9e909cb4..82fafbb481 100644
--- a/examples/BusChargingDepot/runme.py
+++ b/examples/BusChargingDepot/runme.py
@@ -65,12 +65,12 @@ prosumer_dict["LaTreille"]["components"]["bus_1_generation"][
 prosumer_dict["LaTreille"]["components"]["bus_2_generation"][
     "generation"
 ] = input_profiles["bus_2_recuperation"]
-prosumer_dict["LaTreille"]["additional_model_logic"][2]["enable"] = input_profiles[
-    "bus_1_connected"
-].values
-prosumer_dict["LaTreille"]["additional_model_logic"][3]["enable"] = input_profiles[
-    "bus_2_connected"
-].values
+prosumer_dict["LaTreille"]["additional_model_logic"]["charger_1_enable"][
+    "enable"
+] = input_profiles["bus_1_connected"].values
+prosumer_dict["LaTreille"]["additional_model_logic"]["charger_2_enable"][
+    "enable"
+] = input_profiles["bus_2_connected"].values
 
 prosumer_main = ProsumerMain(prosumer_dict, dynamic)
 
diff --git a/examples/BusChargingHPC/HPC.json b/examples/BusChargingHPC/HPC.json
index 5ec5410899..effc76c19d 100644
--- a/examples/BusChargingHPC/HPC.json
+++ b/examples/BusChargingHPC/HPC.json
@@ -15,70 +15,70 @@
             "model": "depot_inverter.json",
             "min_capacity": 0,
             "max_capacity": 10,
-            "additional_model_logic": [
-                {
+            "additional_model_logic": {
+                "ramp_penalty": {
                     "type": "RampPenalty",
                     "variable": "output_1",
                     "variable_ub": "capacity",
                     "objective_factor": 0.001
                 }
-            ]
+            }
         },
         "depot_inverter_2": {
             "type": "BiPowerElectronic",
             "model": "depot_inverter.json",
             "min_capacity": 0,
             "max_capacity": 10,
-            "additional_model_logic": [
-                {
+            "additional_model_logic": {
+                "ramp_penalty": {
                     "type": "RampPenalty",
                     "variable": "output_1",
                     "variable_ub": "capacity",
                     "objective_factor": 0.001
                 }
-            ]
+            }
         },
         "HPC_1": {
             "type": "BiPowerElectronic",
             "model": "depot_inverter.json",
             "min_capacity": 0,
             "max_capacity": 5000,
-            "additional_model_logic": [
-                {
+            "additional_model_logic": {
+                "ramp_penalty": {
                     "type": "RampPenalty",
                     "variable": "output_1",
                     "variable_ub": "capacity",
                     "objective_factor": 0.001
                 }
-            ]
+            }
         },
         "HPC_2": {
             "type": "BiPowerElectronic",
             "model": "depot_inverter.json",
             "min_capacity": 0,
             "max_capacity": 5000,
-            "additional_model_logic": [
-                {
+            "additional_model_logic": {
+                "ramp_penalty": {
                     "type": "RampPenalty",
                     "variable": "output_1",
                     "variable_ub": "capacity",
                     "objective_factor": 0.001
                 }
-            ]
+            }
         },
         "HPC_3": {
             "type": "BiPowerElectronic",
             "model": "depot_inverter.json",
             "min_capacity": 0,
             "max_capacity": 5000,
-            "additional_model_logic": [
-                {
+            "additional_model_logic": {
+                "ramp_penalty": {
                     "type": "RampPenalty",
                     "variable": "output_1",
                     "variable_ub": "capacity",
                     "objective_factor": 0.001
                 }
-            ]
+            }
         },
         "bus_1_battery": {
             "type": "LiionBattery",
@@ -89,12 +89,12 @@
                 "sense": ">=",
                 "value": [1.0, "first_soe"]
             },
-            "additional_model_logic" : [
-                {
+            "additional_model_logic": {
+                "input_penalty": {
                     "type": "additional_operational_objective",
                     "value": [0.2, "input_1"]
                 }
-            ]
+            }
         },
         "bus_1_consumption": {
             "type": "ElectricalConsumption"
@@ -111,12 +111,12 @@
                 "sense": ">=",
                 "value": [1.0, "first_soe"]
             },
-            "additional_model_logic" : [
-                {
+            "additional_model_logic": {
+                "input_penalty": {
                     "type": "additional_operational_objective",
                     "value": [0.2, "input_1"]
                 }
-            ]
+            }
         },
         "bus_2_consumption": {
             "type": "ElectricalConsumption"
@@ -322,26 +322,26 @@
     "planning_horizon": 20,
     "price_change_factor": 1.02,
     "interest_factor": 1.05,
-    "additional_model_logic": [
-        {
+    "additional_model_logic": {
+        "battery_capacities": {
             "type": "EqualCapacity",
             "components": ["bus_1_battery", "bus_2_battery"]
         },
-        {
+        "charging_capacities": {
             "type": "EqualCapacity",
             "components": ["depot_inverter_1", "depot_inverter_2"]
         },
-        {
+        "charger_1_enable": {
             "type": "ConnectorEnable",
             "component": "depot_inverter_1",
             "connector": "output_1"
         },
-        {
+        "charger_2_enable": {
             "type": "ConnectorEnable",
             "component": "depot_inverter_2",
             "connector": "output_1"
         },
-        {
+        "HPC_1_bus_1_enable": {
             "type": "ConnectionEnable",
             "connections": [
                 {
@@ -358,7 +358,7 @@
                 }
             ]
         },
-        {
+        "HPC_1_bus_2_enable": {
             "type": "ConnectionEnable",
             "connections": [
                 {
@@ -375,7 +375,7 @@
                 }
             ]
         },
-        {
+        "HPC_2_bus_1_enable": {
             "type": "ConnectionEnable",
             "connections": [
                 {
@@ -392,7 +392,7 @@
                 }
             ]
         },
-        {
+        "HPC_2_bus_2_enable": {
             "type": "ConnectionEnable",
             "connections": [
                 {
@@ -409,7 +409,7 @@
                 }
             ]
         },
-        {
+        "HPC_3_bus_1_enable": {
             "type": "ConnectionEnable",
             "connections": [
                 {
@@ -426,7 +426,7 @@
                 }
             ]
         },
-        {
+        "HPC_3_bus_2_enable": {
             "type": "ConnectionEnable",
             "connections": [
                 {
@@ -443,5 +443,5 @@
                 }
             ]
         }
-    ]
+    }
 }
\ No newline at end of file
diff --git a/examples/BusChargingHPC/runme.py b/examples/BusChargingHPC/runme.py
index 4773ee5746..1636365ce2 100644
--- a/examples/BusChargingHPC/runme.py
+++ b/examples/BusChargingHPC/runme.py
@@ -65,30 +65,30 @@ prosumer_dict["LaTreille"]["components"]["bus_1_generation"][
 prosumer_dict["LaTreille"]["components"]["bus_2_generation"][
     "generation"
 ] = input_profiles["bus_2_recuperation"]
-prosumer_dict["LaTreille"]["additional_model_logic"][2]["enable"] = input_profiles[
-    "bus_1_connected"
-].values.loc[:, "Connected to depot"]
-prosumer_dict["LaTreille"]["additional_model_logic"][3]["enable"] = input_profiles[
-    "bus_2_connected"
-].values.loc[:, "Connected to depot"]
-prosumer_dict["LaTreille"]["additional_model_logic"][4]["enable"] = input_profiles[
-    "bus_1_connected"
-].values.loc[:, "Connected to HPC 1"]
-prosumer_dict["LaTreille"]["additional_model_logic"][5]["enable"] = input_profiles[
-    "bus_1_connected"
-].values.loc[:, "Connected to HPC 2"]
-prosumer_dict["LaTreille"]["additional_model_logic"][6]["enable"] = input_profiles[
-    "bus_1_connected"
-].values.loc[:, "Connected to HPC 3"]
-prosumer_dict["LaTreille"]["additional_model_logic"][7]["enable"] = input_profiles[
-    "bus_2_connected"
-].values.loc[:, "Connected to HPC 1"]
-prosumer_dict["LaTreille"]["additional_model_logic"][8]["enable"] = input_profiles[
-    "bus_2_connected"
-].values.loc[:, "Connected to HPC 2"]
-prosumer_dict["LaTreille"]["additional_model_logic"][9]["enable"] = input_profiles[
-    "bus_2_connected"
-].values.loc[:, "Connected to HPC 3"]
+prosumer_dict["LaTreille"]["additional_model_logic"]["charger_1_enable"][
+    "enable"
+] = input_profiles["bus_1_connected"].values.loc[:, "Connected to depot"]
+prosumer_dict["LaTreille"]["additional_model_logic"]["charger_2_enable"][
+    "enable"
+] = input_profiles["bus_2_connected"].values.loc[:, "Connected to depot"]
+prosumer_dict["LaTreille"]["additional_model_logic"]["HPC_1_bus_1_enable"][
+    "enable"
+] = input_profiles["bus_1_connected"].values.loc[:, "Connected to HPC 1"]
+prosumer_dict["LaTreille"]["additional_model_logic"]["HPC_1_bus_2_enable"][
+    "enable"
+] = input_profiles["bus_1_connected"].values.loc[:, "Connected to HPC 2"]
+prosumer_dict["LaTreille"]["additional_model_logic"]["HPC_2_bus_1_enable"][
+    "enable"
+] = input_profiles["bus_1_connected"].values.loc[:, "Connected to HPC 3"]
+prosumer_dict["LaTreille"]["additional_model_logic"]["HPC_2_bus_2_enable"][
+    "enable"
+] = input_profiles["bus_2_connected"].values.loc[:, "Connected to HPC 1"]
+prosumer_dict["LaTreille"]["additional_model_logic"]["HPC_3_bus_1_enable"][
+    "enable"
+] = input_profiles["bus_2_connected"].values.loc[:, "Connected to HPC 2"]
+prosumer_dict["LaTreille"]["additional_model_logic"]["HPC_3_bus_2_enable"][
+    "enable"
+] = input_profiles["bus_2_connected"].values.loc[:, "Connected to HPC 3"]
 
 prosumer_main = ProsumerMain(prosumer_dict, dynamic)
 
diff --git a/examples/BusChargingIMC/IMC.json b/examples/BusChargingIMC/IMC.json
index cee3627507..a28793f4c6 100644
--- a/examples/BusChargingIMC/IMC.json
+++ b/examples/BusChargingIMC/IMC.json
@@ -40,26 +40,26 @@
                 "sense": ">=",
                 "value": [1.0, "first_soe"]
             },
-            "additional_model_logic" : [
-                {
+            "additional_model_logic": {
+                "input_penalty": {
                     "type": "additional_operational_objective",
                     "value": [0.2, "input_1"]
                 }
-            ]
+            }
         },
         "bus_1_motor_inverter": {
             "type": "PowerElectronic",
             "model": "motor_inverter.json",
             "min_capacity": 0,
             "max_capacity": 5000,
-            "additional_model_logic": [
-                {
+            "additional_model_logic": {
+                "ramp_penalty": {
                     "type": "RampPenalty",
                     "variable": "output_1",
                     "variable_ub": "capacity",
                     "objective_factor": 0.001
                 }
-            ]
+            }
         },
         "bus_1_consumption": {
             "type": "ElectricalConsumption"
@@ -85,26 +85,26 @@
                 "sense": ">=",
                 "value": [1.0, "first_soe"]
             },
-            "additional_model_logic" : [
-                {
+            "additional_model_logic": {
+                "input_penalty": {
                     "type": "additional_operational_objective",
                     "value": [0.2, "input_1"]
                 }
-            ]
+            }
         },
         "bus_2_motor_inverter": {
             "type": "PowerElectronic",
             "model": "motor_inverter.json",
             "min_capacity": 0,
             "max_capacity": 5000,
-            "additional_model_logic": [
-                {
+            "additional_model_logic": {
+                "ramp_penalty": {
                     "type": "RampPenalty",
                     "variable": "output_1",
                     "variable_ub": "capacity",
                     "objective_factor": 0.001
                 }
-            ]
+            }
         },
         "bus_2_consumption": {
             "type": "ElectricalConsumption"
@@ -262,16 +262,16 @@
     "planning_horizon": 20,
     "price_change_factor": 1.02,
     "interest_factor": 1.05,
-    "additional_model_logic": [
-        {
+    "additional_model_logic": {
+        "battery_capacities": {
             "type": "EqualCapacity",
             "components": ["bus_1_battery", "bus_2_battery"]
         },
-        {
+        "charging_capacities": {
             "type": "EqualCapacity",
             "components": ["bus_1_converter", "bus_2_converter"]
         },
-        {
+        "bus_1_connected": {
             "type": "ConnectionEnable",
             "connections": [
                 {
@@ -288,7 +288,7 @@
                 }
             ]
         },
-        {
+        "bus_2_connected": {
             "type": "ConnectionEnable",
             "connections": [
                 {
@@ -305,13 +305,13 @@
                 }
             ]
         },
-        {
+        "bus_1_moter_inverter_capacity": {
             "type": "FixedCapacity",
             "component": "bus_1_motor_inverter"
         },
-        {
+        "bus_2_moter_inverter_capacity": {
             "type": "FixedCapacity",
             "component": "bus_1_motor_inverter"
         }
-    ]
+    }
 }
\ No newline at end of file
diff --git a/examples/BusChargingIMC/runme.py b/examples/BusChargingIMC/runme.py
index 84e95446a8..e9b43ab89d 100644
--- a/examples/BusChargingIMC/runme.py
+++ b/examples/BusChargingIMC/runme.py
@@ -65,12 +65,12 @@ prosumer_dict["LaTreille"]["components"]["bus_1_generation"][
 prosumer_dict["LaTreille"]["components"]["bus_2_generation"][
     "generation"
 ] = input_profiles["bus_2_recuperation"]
-prosumer_dict["LaTreille"]["additional_model_logic"][2]["enable"] = input_profiles[
-    "bus_1_connected"
-].values
-prosumer_dict["LaTreille"]["additional_model_logic"][3]["enable"] = input_profiles[
-    "bus_2_connected"
-].values
+prosumer_dict["LaTreille"]["additional_model_logic"]["bus_1_connected"][
+    "enable"
+] = input_profiles["bus_1_connected"].values
+prosumer_dict["LaTreille"]["additional_model_logic"]["bus_2_connected"][
+    "enable"
+] = input_profiles["bus_2_connected"].values
 max_driving_consumpion = max(
     max(input_profiles["bus_1_demand"].values),
     max(input_profiles["bus_1_demand"].values),
@@ -79,16 +79,16 @@ with open(
     prosumer_dict["LaTreille"]["components"]["bus_1_motor_inverter"]["model"]
 ) as f:
     inverter_1_efficiency = json.load(f)["efficiency"]
-prosumer_dict["LaTreille"]["additional_model_logic"][4]["capacity"] = (
-    max_driving_consumpion / inverter_1_efficiency
-)
+prosumer_dict["LaTreille"]["additional_model_logic"]["bus_1_moter_inverter_capacity"][
+    "capacity"
+] = (max_driving_consumpion / inverter_1_efficiency)
 with open(
     prosumer_dict["LaTreille"]["components"]["bus_2_motor_inverter"]["model"]
 ) as f:
     inverter_2_efficiency = json.load(f)["efficiency"]
-prosumer_dict["LaTreille"]["additional_model_logic"][5]["capacity"] = (
-    max_driving_consumpion / inverter_2_efficiency
-)
+prosumer_dict["LaTreille"]["additional_model_logic"]["bus_2_moter_inverter_capacity"][
+    "capacity"
+] = (max_driving_consumpion / inverter_2_efficiency)
 
 prosumer_main = ProsumerMain(prosumer_dict, dynamic)
 
-- 
GitLab