From d1ce1f69fe11fb1894bd1221f5009e130fac6f98 Mon Sep 17 00:00:00 2001
From: Christian Doh Dinga <cdohdinga@tudelft.nl>
Date: Sun, 23 Jun 2024 20:16:47 +0200
Subject: [PATCH] define paramters common to all agents

---
 .../define_common_parameters.py               | 45 +++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 src/demoses_distibuted_optimization/define_common_parameters.py

diff --git a/src/demoses_distibuted_optimization/define_common_parameters.py b/src/demoses_distibuted_optimization/define_common_parameters.py
new file mode 100644
index 0000000..7356705
--- /dev/null
+++ b/src/demoses_distibuted_optimization/define_common_parameters.py
@@ -0,0 +1,45 @@
+import numpy as np
+import pyomo.environ as pyo
+from typing import Dict
+
+
+def define_common_parameters(agent: str,  data: Dict) -> pyo.AbstractModel:
+    """Define common parameters to all optimization problems."""
+    model = pyo.AbstractModel(name=f'Optimization-problem-of-agent-###{agent}###') # Use Abstract instead of Concrete model
+    # Declare and set (but do not construct yet)
+    number_of_timesteps = data["General"]["nTimesteps"]
+    model.time =  pyo.Set(initialize=list(range(number_of_timesteps)), name='timesteps')
+    # print(model.time.is_constructed())
+    # Declare common optimization parameters related to the EOM (but do not construct yet)
+    λ_EOM_initial = dict(enumerate(np.zeros(number_of_timesteps)))
+    g_bar_initial = dict(enumerate(np.zeros(number_of_timesteps)))
+    ρ_EOM_initial = data["ADMM"]["rho_EOM"]
+    model.λ_EOM = pyo.Param(model.time, name='λ_EOM', initialize=λ_EOM_initial, mutable=True)
+    model.g_bar = pyo.Param(model.time, name='g_bar', initialize=g_bar_initial, mutable=True)
+    model.ρ_EOM = pyo.Param(name='ρ_EOM', initialize=ρ_EOM_initial, mutable=True)
+    
+    return model
+
+
+# # Example usage
+# import yaml
+
+# def read_config(config_file):
+#     with open(config_file, 'r') as file:
+#         config = yaml.safe_load(file)
+#     return config
+
+# data = read_config('config.yaml')
+# agents = [id for id in data['Consumers'].keys()]
+# mdict = {m: define_common_parameters(m, data) for m in agents}
+
+# for agent, model in mdict.items():
+#     print(model.name)
+#     model.time.pprint()
+#     print()
+#     model.λ_EOM.display()
+#     print()
+#     model.g_bar.display()
+#     print()
+#     model.ρ_EOM.display()
+#     print()
\ No newline at end of file
-- 
GitLab