diff --git a/Model_Library b/Model_Library
index 7fb211d58a0ef773b36c6fbc4b4ca4d7d2c904e0..309aba58c30a46e20112da48b3e9413ac13c8de3 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 e73e35175684d390f11874df0d42b6f00aa0c40f..f7fa54c353cd989924421adc14eb28661d251e42 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 6c9e909cb487b518658bb0ba4915d86da790a64c..82fafbb4818f37176d4f4b41c4f084eff19047a4 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 5ec54108995c6000f2d3f53da22a3b3de4e2651b..effc76c19d994c74ff398918ed79975062ac3296 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 4773ee574662a3e09b8ad284f19733195840103e..1636365ce204b3f21fd307790ac691de426b549a 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 cee362750760bd69789baf717af820f5e3f9f728..a28793f4c6ce3c26fe9f7dfda85253bb2364844b 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 84e95446a88c5398b937ebc777e386ad7d030f38..e9b43ab89d1d3703eb7fb926cf0088b7c79f0f7a 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)