Skip to content
Snippets Groups Projects
define_consumer_parameters.py 1.69 KiB
import pandas as pd
import pyomo.environ as pyo
from typing import Dict


def define_consumer_parameters(agent: str, model: pyo.AbstractModel, data: Dict, ts: pd.DataFrame) -> pyo.AbstractModel:
    # Extract consumer parameter values from data
    total_consumers = data['General']['totConsumers']
    share_of_agent = data['Consumers'][agent]['Share']
    # Demand
    normalized_demand_profile = ts.loc[:, data['Consumers'][agent]['D']].values
    demand_profile = total_consumers * share_of_agent * normalized_demand_profile
    # PV
    pv_availability_factor = ts.loc[:, data['Consumers'][agent]['PV_AF']].values
    pv_capacity = data['Consumers'][agent]['PV_cap']
    pv_profile = total_consumers * share_of_agent * pv_capacity * pv_availability_factor
    # Declare consumer optimization parameters (but do not construct yet)
    model.demand_profile = pyo.Param(model.time, name='demand_profile', initialize=dict(enumerate(demand_profile)), mutable=False)
    model.pv_profile = pyo.Param(model.time, name='pv_profile', initialize=dict(enumerate(pv_profile)), mutable=False)
    
    return model



# # Example usage
# import yaml
# from define_common_parameters import define_common_parameters


# def read_config(config_file):
#     with open(config_file, 'r') as file:
#         config = yaml.safe_load(file)
#     return config

# data = read_config('config.yaml')
# consumer_agents = [id for id in data['Consumers'].keys()]
# ts = pd.read_csv('timeseries.csv', delimiter=';')
# mdict = {m: define_common_parameters(m, data) for m in consumer_agents}

# for agent, model in mdict.items():
#     model = define_consumer_parameters(agent, model, data, ts)
#     print(model.name)
#     print()
#     model.pprint()