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