metrics = {'prosumer_s1_0': {'MC': [7, 10], 'MB': [10],'MO': [1, 2], 'MR': [50]},
           'prosumer_s1_1': {'MC': [10], 'MB': [15], 'MO': [1], 'MR': [90]},
           'prosumer_s1_2': {'MC': [7, 10], 'MB': [10], 'MO': [1, 2], 'MR': [50]},
           'prosumer_s1_3': {'MC': [7], 'MB': [15], 'MO': [1], 'MR': [90]},
           'prosumer_s1_4': {'MC': [7, 10], 'MB': [10], 'MO': [1, 2], 'MR': [50]},
           'prosumer_s1_5': {'MC': [10], 'MB': [15], 'MO': [1], 'MR': [90]},
           'prosumer_s1_6': {'MC': [0], 'MB': [], 'MO': [50], 'MR': []}
}

enetwork_set={'max_congestion': 1000, 'p_loss_m': 0, 'length': 0}


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    # Agent 0 -------------------------------------------------------------------------------------

    # Load
    ['load[0]', 'gpctrl[0]', 'load_dem', 'demand[0]'],
    ['load[0]', 'monitor', 'load_dem'],
    ['gpctrl[0]', 'prosumer_s1[0]', 'demand[0]', 'demand[0]'],
    ['gpctrl[0]', 'monitor', 'demand[0]'],

    # Wind
    ['wind[0]', 'gpctrl[0]', 'wind_gen', 'generator[0]'],
    ['wind[0]', 'monitor', 'wind_gen'],
    ['gpctrl[0]', 'prosumer_s1[0]', 'generator[0]', 'generator[0]'],
    ['gpctrl[0]', 'monitor', 'generator[0]'],

    # PV
    ['pv[0]', 'gpctrl[0]', 'pv_gen', 'generator[1]'],
    ['pv[0]', 'monitor', 'pv_gen'],
    ['gpctrl[0]', 'prosumer_s1[0]', 'generator[1]', 'generator[1]'],
    ['gpctrl[0]', 'monitor', 'generator[1]'],

    # Gpctrl
    ['gpctrl[0]', 'monitor', 'net'],
    ['gpctrl[0]', 'monitor', 'excess'],
    ['gpctrl[0]', 'monitor', 'deficit'],

    # Agent 1 -------------------------------------------------------------------------------------

    # Load
    ['load[1]', 'gpctrl[1]', 'load_dem', 'demand[0]'],
    ['load[1]', 'monitor', 'load_dem'],
    ['gpctrl[1]', 'prosumer_s1[1]', 'demand[0]', 'demand[0]'],
    ['gpctrl[1]', 'monitor', 'demand[0]'],

    # PV
    ['pv[1]', 'gpctrl[1]', 'pv_gen', 'generator[0]'],
    ['pv[1]', 'monitor', 'pv_gen'],
    ['gpctrl[1]', 'prosumer_s1[1]', 'generator[0]', 'generator[0]'],
    ['gpctrl[1]', 'monitor', 'generator[0]'],

    # Gpctrl
    ['gpctrl[1]', 'monitor', 'net'],
    ['gpctrl[1]', 'monitor', 'excess'],
    ['gpctrl[1]', 'monitor', 'deficit'],

    # Agent 2 -----------------------------------------------------------------------------------

    # Load
    ['load[2]', 'gpctrl[2]', 'load_dem', 'demand[0]'],
    ['load[2]', 'monitor', 'load_dem'],
    ['gpctrl[2]', 'prosumer_s1[2]', 'demand[0]', 'demand[0]'],
    ['gpctrl[2]', 'monitor', 'demand[0]'],

    # Wind
    ['wind[1]', 'gpctrl[2]', 'wind_gen', 'generator[0]'],
    ['wind[1]', 'monitor', 'wind_gen'],
    ['gpctrl[2]', 'prosumer_s1[2]', 'generator[0]', 'generator[0]'],
    ['gpctrl[2]', 'monitor', 'generator[0]'],

    # Battery
    ['battery[0]', 'gpctrl[2]', 'soc', 'storage[0]'],
    ['battery[0]', 'monitor', 'soc'],
    ['battery[0]', 'monitor', 'flow2b'],
    ['gpctrl[2]', 'prosumer_s1[2]', 'storage[0]', 'storage[0]'],
    ['gpctrl[2]', 'monitor', 'storage[0]'],
    ['gpctrl[2]', 'battery[0]', 'flow2b[0]', 'flow2b'],
    ['gpctrl[2]', 'monitor', 'flow2b[0]'],

    # PV
    ['pv[2]', 'gpctrl[2]', 'pv_gen', 'generator[1]'],
    ['pv[2]', 'monitor', 'pv_gen'],
    ['gpctrl[2]', 'prosumer_s1[2]', 'generator[1]', 'generator[1]'],
    ['gpctrl[2]', 'monitor', 'generator[1]'],

    # Gpctrl
    ['gpctrl[2]', 'monitor', 'net'],
    ['gpctrl[2]', 'monitor', 'excess'],
    ['gpctrl[2]', 'monitor', 'deficit'],

    # Agent 3 -----------------------------------------------------------------------------------

    # Load
    ['load[3]', 'gpctrl[3]', 'load_dem', 'demand[0]'],
    ['load[3]', 'monitor', 'load_dem'],
    ['gpctrl[3]', 'prosumer_s1[3]', 'demand[0]', 'demand[0]'],
    ['gpctrl[3]', 'monitor', 'demand[0]'],

    # PV
    ['pv[3]', 'gpctrl[3]', 'pv_gen', 'generator[0]'],
    ['pv[3]', 'monitor', 'pv_gen'],
    ['gpctrl[3]', 'prosumer_s1[3]', 'generator[0]', 'generator[0]'],
    ['gpctrl[3]', 'monitor', 'generator[0]'],

    # Gpctrl
    ['gpctrl[3]', 'monitor', 'net'],
    ['gpctrl[3]', 'monitor', 'excess'],
    ['gpctrl[3]', 'monitor', 'deficit'],

    # Agent 4 -------------------------------------------------------------------------------------

    # Load
    ['load[4]', 'gpctrl[4]', 'load_dem', 'demand[0]'],
    ['load[4]', 'monitor', 'load_dem'],
    ['gpctrl[4]', 'prosumer_s1[4]', 'demand[0]', 'demand[0]'],
    ['gpctrl[4]', 'monitor', 'demand[0]'],

    # Wind
    ['wind[2]', 'gpctrl[4]', 'wind_gen', 'generator[0]'],
    ['wind[2]', 'monitor', 'wind_gen'],
    ['gpctrl[4]', 'prosumer_s1[4]', 'generator[0]', 'generator[0]'],
    ['gpctrl[4]', 'monitor', 'generator[0]'],

    # PV
    ['pv[4]', 'gpctrl[4]', 'pv_gen', 'generator[1]'],
    ['pv[4]', 'monitor', 'pv_gen'],
    ['gpctrl[4]', 'prosumer_s1[4]', 'generator[1]', 'generator[1]'],
    ['gpctrl[4]', 'monitor', 'generator[1]'],

    # Gpctrl
    ['gpctrl[4]', 'monitor', 'net'],
    ['gpctrl[4]', 'monitor', 'excess'],
    ['gpctrl[4]', 'monitor', 'deficit'],

    # Agent 5 -----------------------------------------------------------------------------------

    # Load
    ['load[5]', 'gpctrl[5]', 'load_dem', 'demand[0]'],
    ['load[5]', 'monitor', 'load_dem'],
    ['gpctrl[5]', 'prosumer_s1[5]', 'demand[0]', 'demand[0]'],
    ['gpctrl[5]', 'monitor', 'demand[0]'],

    # PV
    ['pv[5]', 'gpctrl[5]', 'pv_gen', 'generator[0]'],
    ['pv[5]', 'monitor', 'pv_gen'],
    ['gpctrl[5]', 'prosumer_s1[5]', 'generator[0]', 'generator[0]'],
    ['gpctrl[5]', 'monitor', 'generator[0]'],

    # Gpctrl
    ['gpctrl[5]', 'monitor', 'net'],
    ['gpctrl[5]', 'monitor', 'excess'],
    ['gpctrl[5]', 'monitor', 'deficit'],

    # Agent 6 --- Aggregator -------------------------------------------------------------------------

    # Other Gpctrl
    ['gpctrl[0]', 'enetwork[0]', 'excess', 'p_in[0]'],
    ['gpctrl[1]', 'enetwork[0]', 'excess', 'p_in[1]'],
    ['gpctrl[2]', 'enetwork[0]', 'excess', 'p_in[2]'],
    ['gpctrl[3]', 'enetwork[0]', 'excess', 'p_in[3]'],
    ['gpctrl[4]', 'enetwork[0]', 'excess', 'p_in[4]'],
    ['gpctrl[5]', 'enetwork[0]', 'excess', 'p_in[5]'],

    ['enetwork[0]', 'gpctrl[6]', 'p_tot', 'generator[0]'],
    ['gpctrl[6]', 'prosumer_s1[6]', 'generator[0]', 'generator[0]'],
    ['gpctrl[6]', 'monitor', 'generator[0]'],

    # Gpctrl
    ['gpctrl[6]', 'monitor', 'net'],
    ['gpctrl[6]', 'monitor', 'excess'],
    ['gpctrl[6]', 'monitor', 'deficit'],

    # -- Games --------------------------------------------------------------------------------------

    # RT price
    ['rtprice[0]', 'monitor', 'buy_price'],
    ['rtprice[0]', 'monitor', 'sell_price'],

    # Agent 0 in RT price
    ['prosumer_s1[0]', 'rtprice[0]', 'rt_buy', 'buy[0]'],
    ['prosumer_s1[0]', 'monitor', 'rt_buy'],

    # Agent 1 in RT price
    ['prosumer_s1[1]', 'rtprice[0]', 'rt_buy', 'buy[1]'],
    ['prosumer_s1[1]', 'monitor', 'rt_buy'],

    # Agent 2 in RT price
    ['prosumer_s1[2]', 'rtprice[0]', 'rt_buy', 'buy[2]'],
    ['prosumer_s1[2]', 'monitor', 'rt_buy'],

    # Agent 3 in RT price
    ['prosumer_s1[3]', 'rtprice[0]', 'rt_buy', 'buy[3]'],
    ['prosumer_s1[3]', 'monitor', 'rt_buy'],

    # Agent 4 in RT price
    ['prosumer_s1[4]', 'rtprice[0]', 'rt_buy', 'buy[4]'],
    ['prosumer_s1[4]', 'monitor', 'rt_buy'],

    # Agent 5 in RT price
    ['prosumer_s1[5]', 'rtprice[0]', 'rt_buy', 'buy[5]'],
    ['prosumer_s1[5]', 'monitor', 'rt_buy'],

    # Emarket-----------------------------------------------------------------------------------
    ['emarket[0]', 'monitor', 'market_price'],
    ['emarket[0]', 'monitor', 'market_quantity'],

    # Agent 6 in Emarket
    ['prosumer_s1[6]', 'emarket[0]', 'em_supply_bids', 'supply_bids[0]'],
    ['prosumer_s1[6]', 'emarket[0]', 'em_demand_bids', 'demand_bids[0]'],
    ['emarket[0]', 'prosumer_s1[6]', 'accepted_bids', 'em_accepted_bids'],
    ['prosumer_s1[6]', 'monitor', 'p2em'],

