Discretization of droop#

The model setup for the iterative discretization of droop results presented below is available in the following formats:

Iterative droop discretization#

A simple system with 6 generators located on two separate plants will be used to illustrate the basic features of the droop discretization heuristic in SHOP. The droop variable is a continuous variable in SHOP, but there is usually a set of discrete droop values that can be implemented in the real world. The discrete droop functionality in SHOP enables the user to specify a set of discrete legal values that the droop variable in SHOP will be rounded and fixed to in the next iteration(s). This is a heuristic approach to the problem, since the droop variables are not formulated as discrete variables in the optimization problem. This would require the use of extra binary variables that will impact the tractability and calculation time of SHOP. Note that the droop discretization functionality requires the SHOP_DISCRETE_DROOP license. It is also possible to use the droop discretization functionality in combination with the SHOP_SEPARATE_DROOP license, which allows individual units to have separate droop settings for FCR-N, FCR-D-up, and FCR-D-down.

First, we create and run the basic model without any droop discretization:

#Necessary imports used in all examples
import pandas as pd
import plotly.graph_objs as go
from pyshop import ShopSession

#Functions used in this example for building and solving a simple model with cuts
from discrete_droop import build_model, run_model, get_gen_droop
#Create a standard ShopSession
shop=ShopSession()
#Build a simple model with two reservoirs, two plants, and 6 generators.
build_model(shop)
#Display topology to the screen
display(shop.model.build_connection_tree())

#Add FCR_N obligation in both directions where all generators can participate
fcr_group = shop.model.reserve_group.add_object("fcr_group")
fcr_group.fcr_n_up_obligation.set(20)
fcr_group.fcr_n_down_obligation.set(20)    

for gen in shop.model.generator:
    fcr_group.connect_to(gen) 

#Run an optimization without any droop discretization
run_model(shop)
../../_images/ef5e2777c96463f32566dbd13e343d312c93c552263f51ea73abd57f372c4ebd.svg

The resulting droop values can now be plotted. Note that the plotting below removes the time information form the droop values and plots them for the same x value:

#Display the resulting droop values from the optimization

#Retrieve the generator droop results
gen_droop = get_gen_droop(shop)

gen_names = [gen.get_name() for gen in shop.model.generator]

fig = go.Figure(layout={'title':"Droop values",'xaxis_title':"Generator",'yaxis_title':"Droop [%]"})

#Add dashed lines to show the integer values between 1 and 12
for i in range(1,13):
    fig.add_trace(go.Scatter(showlegend=False,x=gen_names,y=[i]*len(gen_names),mode='lines', line={'color': "black", 'width': 0.5,'dash':"dash"})) 
           
for gen_name, droop in gen_droop.items():
    fig.add_trace(go.Scatter(showlegend=False,x=[gen_name]*len(droop),y=droop,mode='markers')) 

fig.show()

The optimized droop values shown above are not necessarily legal or practical to implement in the real world. It is possible to round down and fix the droop values to the closest legal discrete value in SHOP. Each unit can have its own list of legal droop values specified by the double_array attribute discrete_droop_values. If no list is defined, the integers are assumed to be the legal values for the unit. The command set droop_discretization_limit , or the equivalent double attribute droop_discretization_limit on the global_settings object, is used to tell SHOP to round down all droop values below the specified limit to their closest legal value, and fix the droop variable to this value in the next iteration. Since the values are always rounded down, the generators are forced to deliver more (or equal) frequency response compared to the optimal solution. This can lead to a more costly solution, but will not cause infeasibility issues. If a unit has no legal discrete values below the given droop_discretization_limit, the droop will not be fixed. The droop variables will also never be fixed to a value outside its upper and lower bounds. These bounds have default values of 1 and 12, respectively, and can be changed by specifying the droop_min and droop_max TXY unit attributes. If the rounded droop value is outside the defined limits, it is fixed to the boundary instead.

Note that new attributes such as fcr_d_down_discrete_droop_values are available when using the separate droop functionality in combination with the discrete droop functionality. Building of separate droop variables for FCR-N, FCR-D-up, and FCR-D-down is activated by setting the integer attribute separate_droop to 1 for the generator or pump.

Now we create an identical SHOP model but add specified legal discrete droop values for the generators in Plant2. By gradually increasing the droop_discretization_limit between the incremental iterations, the droop values are iteratively fixed to legal values.

#Create a standard ShopSession
shop=ShopSession()
#Build a simple model with two reservoirs, two plants, and 6 generators.
build_model(shop)

#Add FCR_N obligation in both directions where all generators can participate
fcr_group = shop.model.reserve_group.add_object("fcr_group")
fcr_group.fcr_n_up_obligation.set(20)
fcr_group.fcr_n_down_obligation.set(20)    

for gen in shop.model.generator:
    fcr_group.connect_to(gen) 

#Set specific legal discrete droop values for generators in Plant2 (1,1.5,2,2.5,...,12)
plant2 = shop.model.plant.Plant2
for gen in plant2.generators:
    gen.discrete_droop_values.set([1+0.5*i for i in range(23)])
    
#Run the full iterations and the first incremental iteration without any fixing and discretization
shop.start_sim([], ['3'])
shop.set_code(['incremental'], [])
shop.start_sim([], ['1'])

#Save the droop results before any fixing and discretization
gen_droop = get_gen_droop(shop)
droop_results = [gen_droop]

#Gradually fix droop values for each following iteration
for d in [3,6,9,12]:
    shop.set_droop_discretization_limit([],[d])
    shop.start_sim([], ['1'])
    
    #Save the droop results for each generator after each iteration
    gen_droop = get_gen_droop(shop)        
    droop_results.append(gen_droop)

Now we can plot the evolution of the droop results for each generator for the four final incremental iterations:

for desc,gen_droop in zip(["before fixing","fixed below 3","fixed below 6","fixed below 9","fixed below 12"], droop_results):

    fig = go.Figure(layout={'title':f"Droop values {desc}",'xaxis_title':"Generator",'yaxis_title':"Droop [%]"})

    for i in range(1,13):
        fig.add_trace(go.Scatter(showlegend=False,x=gen_names,y=[i]*len(gen_names),mode='lines', line={'color': "black", 'width': 0.5,'dash':"dash"})) 

    for i in range(11):
        fig.add_trace(go.Scatter(showlegend=False,x=["Plant2_G1","Plant2_G4"],y=[1.5+i,1.5+i],mode='lines', line={'color': "red", 'width': 0.5,'dash':"dash"})) 

        
    for gen_name,droop_values in gen_droop.items():
        fig.add_trace(go.Scatter(showlegend=False,x=[gen_name]*len(droop_values),y=droop_values,mode='markers')) 

    fig.show()

Since the default upper bound for the droop is 12 in SHOP, all droop values are rounded and fixed when the discretization limit is set to 12 before the final iteration. The droop values of the generators in Plant1 are all fixed to integer values in the end, while the generators in Plant2 are allowed to take values defined earlier with the discrete_droop_values attribute.

discrete_droop.py#

import pandas as pd
import numpy as np

def build_model(shop):
    starttime = pd.Timestamp('2018-01-23 00:00:00')
    endtime = pd.Timestamp('2018-01-26')
    shop.set_time_resolution(starttime=starttime, endtime=endtime, timeunit="hour", timeresolution=pd.Series(index=[starttime],data=[1]))
    
    rsv1 = shop.model.reservoir.add_object('Reservoir1')
    rsv1.max_vol.set(39)
    rsv1.lrl.set(860)
    rsv1.hrl.set(905)
    rsv1.vol_head.set(pd.Series([860, 906, 907], index=[0, 39, 41.66], name=0))    

    rsv2 = shop.model.reservoir.add_object('Reservoir2')
    rsv2.max_vol.set(97.5)   
    rsv2.lrl.set(650)   
    rsv2.hrl.set(679)    
    rsv2.vol_head.set(pd.Series([650, 679, 680], index=[0, 97.5, 104.15], name=0))
    
    plant1 = shop.model.plant.add_object('Plant1')
    plant1.outlet_line.set(672)
    plant1.main_loss.set([0])
    plant1.penstock_loss.set([0.001])
    plant1.mip_flag.set(1)
    for gen_no in range(2):
        gen=shop.model.generator.add_object(f"{plant1.get_name()}_G{str(gen_no+1)}")
        gen.connect_to(plant1)
        gen.penstock.set(1)
        gen.p_min.set(60)
        gen.p_max.set(120)
        gen.p_nom.set(120)
        gen.startcost.set(300)
        gen.gen_eff_curve.set(pd.Series([100, 100], index=[60, 120]))
        gen.turb_eff_curves.set([pd.Series([85.8733, 87.0319, 88.0879, 89.0544, 89.9446, 90.7717, 91.5488, 92.2643, 92.8213, 93.1090, 93.2170, 93.0390, 92.6570, 92.1746],
                                    index=[28.12, 30.45, 32.78, 35.11, 37.45, 39.78, 42.11, 44.44, 46.77, 49.10, 51.43, 53.76, 56.10, 58.83],
                                    name=170),
                          pd.Series([86.7321, 87.9022, 88.9688, 89.9450, 90.8441, 91.6794, 92.4643, 93.1870, 93.7495, 94.0401, 94.1492, 93.9694, 93.5836, 93.0964],
                                    index=[28.12, 30.45, 32.78, 35.11, 37.45, 39.78, 42.11, 44.44, 46.77, 49.10, 51.43, 53.76, 56.10, 58.83],
                                    name=200),
                          pd.Series([87.5908, 88.7725, 89.8497, 90.8355, 91.7435, 92.5871, 93.3798, 94.1096, 94.6777, 94.9712, 95.0813, 94.8998, 94.5101, 94.0181],
                                    index=[28.12, 30.45, 32.78, 35.11, 37.45, 39.78, 42.11, 44.44, 46.77, 49.10, 51.43, 53.76, 56.10, 58.83],
                                    name=230)])

    plant2 = shop.model.plant.add_object('Plant2')
    plant2.outlet_line.set(586)
    plant2.main_loss.set([0])
    plant2.penstock_loss.set([0.0001,0.0002])
    plant2.mip_flag.set(1)
    for gen_no in range(4):
        gen=shop.model.generator.add_object(f"{plant2.get_name()}_G{str(gen_no+1)}")
        gen.connect_to(plant2)
        if gen_no == 0:
            gen.penstock.set(1)
            gen.p_min.set(100)
            gen.p_max.set(180)
            gen.p_nom.set(180)
            gen.startcost.set(300)
            gen.gen_eff_curve.set(pd.Series([100, 100], index=[100, 180]))
            gen.turb_eff_curves.set([pd.Series([92.7201, 93.2583, 93.7305, 94.1368, 94.4785, 94.7525, 94.9606, 95.1028, 95.1790, 95.1892, 95.1335, 95.0118, 94.8232, 94.5191],
                                        index=[126.54, 137.03, 147.51, 158.00, 168.53, 179.01, 189.50, 199.98, 210.47, 220.95, 231.44, 241.92, 252.45, 264.74],
                                        name=60)])
        else:
            gen.penstock.set(2)
            gen.p_min.set(30)
            gen.p_max.set(55)
            gen.p_nom.set(55)
            gen.startcost.set(300)
            gen.gen_eff_curve.set(pd.Series([100, 100], index=[30, 55]))
            gen.turb_eff_curves.set([pd.Series([83.8700, 85.1937, 86.3825, 87.4362, 88.3587, 89.1419, 89.7901, 90.3033, 90.6815, 90.9248, 91.0331, 91.0063, 90.8436, 90.4817],
                                        index=[40.82, 44.20, 47.58, 50.97, 54.36, 57.75, 61.13, 64.51, 67.89, 71.27, 74.66, 78.04, 81.44, 85.40],
                                        name=60)])   
    
    rsv1.connect_to(plant1)
    plant1.connect_to(rsv2)
    rsv2.connect_to(plant2)
    
    rsv1.start_head.set(900)
    rsv2.start_head.set(670)    
    
    rsv1.energy_value_input.set(30)
    rsv2.energy_value_input.set(10)
    
    rsv2.inflow.set(pd.Series([60], [starttime]))
    
    da = shop.model.market.add_object('Day_ahead')
    da.sale_price.set(pd.DataFrame([32.992,31.122,29.312,28.072,30.012,33.362,42.682,74.822,77.732,62.332,55.892,46.962,42.582,40.942,39.212,39.142,41.672,46.922,37.102,32.992,31.272,29.752,28.782,28.082,27.242,26.622,25.732,25.392,25.992,27.402,28.942,32.182,33.082,32.342,30.912,30.162,30.062,29.562,29.462,29.512,29.672,30.072,29.552,28.862,28.412,28.072,27.162,25.502,26.192,25.222,24.052,23.892,23.682,26.092,28.202,30.902,31.572,31.462,31.172,30.912,30.572,30.602,30.632,31.062,32.082,36.262,34.472,32.182,31.492,30.732,29.712,28.982], 
                               index=[starttime + pd.Timedelta(hours=i) for i in range(0,72)]))
    da.max_sale.set(pd.Series([9999], [starttime]))
    da.buy_price.set(da.sale_price.get()+0.002)
    da.max_buy.set(pd.Series([9999], [starttime]))

    settings = shop.model.global_settings.global_settings
    settings.mipgap_rel.set(0)
    settings.mipgap_abs.set(0)

def run_model(shop):
    shop.start_sim([], ['3'])
    shop.set_code(['incremental'], [])
    shop.start_sim([], ['5'])


def get_gen_droop(shop):

    gen_droop = {}
    for gen in shop.model.generator:
        droop = gen.droop_result.get()  
        gen_droop[gen.get_name()] = droop.values
        
    return gen_droop

model.yaml#

time:
  starttime: 2018-01-23 00:00:00
  endtime: 2018-01-26 00:00:00
  timeunit: hour
  timeresolution:
    2018-01-23 00:00:00: 1
model:
  global_settings:
    global_settings:
      mipgap_rel: 0
      mipgap_abs: 0
  reservoir:
    Reservoir1:
      max_vol: 39
      lrl: 860
      hrl: 905
      vol_head:
        ref: 0
        x:
          - 0
          - 39
          - 41.66
        y:
          - 860
          - 906
          - 907
      start_head: 900
      energy_value_input: 30
    Reservoir2:
      max_vol: 97.5
      lrl: 650
      hrl: 679
      vol_head:
        ref: 0
        x:
          - 0
          - 97.5
          - 104.15
        y:
          - 650
          - 679
          - 680
      start_head: 670
      inflow:
        2018-01-23 00:00:00: 60
      energy_value_input: 10
  plant:
    Plant1:
      outlet_line: 672
      main_loss:
        - 0
      penstock_loss:
        - 0.001
      mip_flag:
        2018-01-23 00:00:00: 1
    Plant2:
      outlet_line: 586
      main_loss:
        - 0
      penstock_loss:
        - 0.0001
        - 0.0002
      mip_flag:
        2018-01-23 00:00:00: 1
  generator:
    Plant1_G1:
      penstock: 1
      p_min: 60
      p_max: 120
      p_nom: 120
      gen_eff_curve:
        ref: 0
        x:
          - 60
          - 120
        y:
          - 100
          - 100
      turb_eff_curves:
        - ref: 170
          x:
            - 28.12
            - 30.45
            - 32.78
            - 35.11
            - 37.45
            - 39.78
            - 42.11
            - 44.44
            - 46.77
            - 49.1
            - 51.43
            - 53.76
            - 56.1
            - 58.83
          y:
            - 85.8733
            - 87.0319
            - 88.0879
            - 89.0544
            - 89.9446
            - 90.7717
            - 91.5488
            - 92.2643
            - 92.8213
            - 93.109
            - 93.217
            - 93.039
            - 92.657
            - 92.1746
        - ref: 200
          x:
            - 28.12
            - 30.45
            - 32.78
            - 35.11
            - 37.45
            - 39.78
            - 42.11
            - 44.44
            - 46.77
            - 49.1
            - 51.43
            - 53.76
            - 56.1
            - 58.83
          y:
            - 86.7321
            - 87.9022
            - 88.9688
            - 89.945
            - 90.8441
            - 91.6794
            - 92.4643
            - 93.187
            - 93.7495
            - 94.0401
            - 94.1492
            - 93.9694
            - 93.5836
            - 93.0964
        - ref: 230
          x:
            - 28.12
            - 30.45
            - 32.78
            - 35.11
            - 37.45
            - 39.78
            - 42.11
            - 44.44
            - 46.77
            - 49.1
            - 51.43
            - 53.76
            - 56.1
            - 58.83
          y:
            - 87.5908
            - 88.7725
            - 89.8497
            - 90.8355
            - 91.7435
            - 92.5871
            - 93.3798
            - 94.1096
            - 94.6777
            - 94.9712
            - 95.0813
            - 94.8998
            - 94.5101
            - 94.0181
      startcost:
        2018-01-23 00:00:00: 300
    Plant1_G2:
      penstock: 1
      p_min: 60
      p_max: 120
      p_nom: 120
      gen_eff_curve:
        ref: 0
        x:
          - 60
          - 120
        y:
          - 100
          - 100
      turb_eff_curves:
        - ref: 170
          x:
            - 28.12
            - 30.45
            - 32.78
            - 35.11
            - 37.45
            - 39.78
            - 42.11
            - 44.44
            - 46.77
            - 49.1
            - 51.43
            - 53.76
            - 56.1
            - 58.83
          y:
            - 85.8733
            - 87.0319
            - 88.0879
            - 89.0544
            - 89.9446
            - 90.7717
            - 91.5488
            - 92.2643
            - 92.8213
            - 93.109
            - 93.217
            - 93.039
            - 92.657
            - 92.1746
        - ref: 200
          x:
            - 28.12
            - 30.45
            - 32.78
            - 35.11
            - 37.45
            - 39.78
            - 42.11
            - 44.44
            - 46.77
            - 49.1
            - 51.43
            - 53.76
            - 56.1
            - 58.83
          y:
            - 86.7321
            - 87.9022
            - 88.9688
            - 89.945
            - 90.8441
            - 91.6794
            - 92.4643
            - 93.187
            - 93.7495
            - 94.0401
            - 94.1492
            - 93.9694
            - 93.5836
            - 93.0964
        - ref: 230
          x:
            - 28.12
            - 30.45
            - 32.78
            - 35.11
            - 37.45
            - 39.78
            - 42.11
            - 44.44
            - 46.77
            - 49.1
            - 51.43
            - 53.76
            - 56.1
            - 58.83
          y:
            - 87.5908
            - 88.7725
            - 89.8497
            - 90.8355
            - 91.7435
            - 92.5871
            - 93.3798
            - 94.1096
            - 94.6777
            - 94.9712
            - 95.0813
            - 94.8998
            - 94.5101
            - 94.0181
      startcost:
        2018-01-23 00:00:00: 300
    Plant2_G1:
      penstock: 1
      p_min: 100
      p_max: 180
      p_nom: 180
      gen_eff_curve:
        ref: 0
        x:
          - 100
          - 180
        y:
          - 100
          - 100
      turb_eff_curves:
        - ref: 60
          x:
            - 126.54
            - 137.03
            - 147.51
            - 158
            - 168.53
            - 179.01
            - 189.5
            - 199.98
            - 210.47
            - 220.95
            - 231.44
            - 241.92
            - 252.45
            - 264.74
          y:
            - 92.7201
            - 93.2583
            - 93.7305
            - 94.1368
            - 94.4785
            - 94.7525
            - 94.9606
            - 95.1028
            - 95.179
            - 95.1892
            - 95.1335
            - 95.0118
            - 94.8232
            - 94.5191
      startcost:
        2018-01-23 00:00:00: 300
    Plant2_G2:
      penstock: 2
      p_min: 30
      p_max: 55
      p_nom: 55
      gen_eff_curve:
        ref: 0
        x:
          - 30
          - 55
        y:
          - 100
          - 100
      turb_eff_curves:
        - ref: 60
          x:
            - 40.82
            - 44.2
            - 47.58
            - 50.97
            - 54.36
            - 57.75
            - 61.13
            - 64.51
            - 67.89
            - 71.27
            - 74.66
            - 78.04
            - 81.44
            - 85.4
          y:
            - 83.87
            - 85.1937
            - 86.3825
            - 87.4362
            - 88.3587
            - 89.1419
            - 89.7901
            - 90.3033
            - 90.6815
            - 90.9248
            - 91.0331
            - 91.0063
            - 90.8436
            - 90.4817
      startcost:
        2018-01-23 00:00:00: 300
    Plant2_G3:
      penstock: 2
      p_min: 30
      p_max: 55
      p_nom: 55
      gen_eff_curve:
        ref: 0
        x:
          - 30
          - 55
        y:
          - 100
          - 100
      turb_eff_curves:
        - ref: 60
          x:
            - 40.82
            - 44.2
            - 47.58
            - 50.97
            - 54.36
            - 57.75
            - 61.13
            - 64.51
            - 67.89
            - 71.27
            - 74.66
            - 78.04
            - 81.44
            - 85.4
          y:
            - 83.87
            - 85.1937
            - 86.3825
            - 87.4362
            - 88.3587
            - 89.1419
            - 89.7901
            - 90.3033
            - 90.6815
            - 90.9248
            - 91.0331
            - 91.0063
            - 90.8436
            - 90.4817
      startcost:
        2018-01-23 00:00:00: 300
    Plant2_G4:
      penstock: 2
      p_min: 30
      p_max: 55
      p_nom: 55
      gen_eff_curve:
        ref: 0
        x:
          - 30
          - 55
        y:
          - 100
          - 100
      turb_eff_curves:
        - ref: 60
          x:
            - 40.82
            - 44.2
            - 47.58
            - 50.97
            - 54.36
            - 57.75
            - 61.13
            - 64.51
            - 67.89
            - 71.27
            - 74.66
            - 78.04
            - 81.44
            - 85.4
          y:
            - 83.87
            - 85.1937
            - 86.3825
            - 87.4362
            - 88.3587
            - 89.1419
            - 89.7901
            - 90.3033
            - 90.6815
            - 90.9248
            - 91.0331
            - 91.0063
            - 90.8436
            - 90.4817
      startcost:
        2018-01-23 00:00:00: 300
  market:
    Day_ahead:
      market_type: ENERGY
      max_buy:
        2018-01-23 00:00:00: 9999
      max_sale:
        2018-01-23 00:00:00: 9999
      buy_price:
        2018-01-23 00:00:00: 32.994
        2018-01-23 01:00:00: 31.124
        2018-01-23 02:00:00: 29.314
        2018-01-23 03:00:00: 28.074
        2018-01-23 04:00:00: 30.014
        2018-01-23 05:00:00: 33.364
        2018-01-23 06:00:00: 42.684
        2018-01-23 07:00:00: 74.824
        2018-01-23 08:00:00: 77.734
        2018-01-23 09:00:00: 62.334
        2018-01-23 10:00:00: 55.894
        2018-01-23 11:00:00: 46.964
        2018-01-23 12:00:00: 42.584
        2018-01-23 13:00:00: 40.944
        2018-01-23 14:00:00: 39.214
        2018-01-23 15:00:00: 39.144
        2018-01-23 16:00:00: 41.674
        2018-01-23 17:00:00: 46.924
        2018-01-23 18:00:00: 37.104
        2018-01-23 19:00:00: 32.994
        2018-01-23 20:00:00: 31.274
        2018-01-23 21:00:00: 29.754
        2018-01-23 22:00:00: 28.784
        2018-01-23 23:00:00: 28.084
        2018-01-24 00:00:00: 27.244
        2018-01-24 01:00:00: 26.624
        2018-01-24 02:00:00: 25.734
        2018-01-24 03:00:00: 25.394
        2018-01-24 04:00:00: 25.994
        2018-01-24 05:00:00: 27.404
        2018-01-24 06:00:00: 28.944
        2018-01-24 07:00:00: 32.184
        2018-01-24 08:00:00: 33.084
        2018-01-24 09:00:00: 32.344
        2018-01-24 10:00:00: 30.914
        2018-01-24 11:00:00: 30.164
        2018-01-24 12:00:00: 30.064
        2018-01-24 13:00:00: 29.564
        2018-01-24 14:00:00: 29.464
        2018-01-24 15:00:00: 29.514
        2018-01-24 16:00:00: 29.674
        2018-01-24 17:00:00: 30.074
        2018-01-24 18:00:00: 29.554
        2018-01-24 19:00:00: 28.864
        2018-01-24 20:00:00: 28.414
        2018-01-24 21:00:00: 28.074
        2018-01-24 22:00:00: 27.164
        2018-01-24 23:00:00: 25.504
        2018-01-25 00:00:00: 26.194
        2018-01-25 01:00:00: 25.224
        2018-01-25 02:00:00: 24.054
        2018-01-25 03:00:00: 23.894
        2018-01-25 04:00:00: 23.684
        2018-01-25 05:00:00: 26.094
        2018-01-25 06:00:00: 28.204
        2018-01-25 07:00:00: 30.904
        2018-01-25 08:00:00: 31.574
        2018-01-25 09:00:00: 31.464
        2018-01-25 10:00:00: 31.174
        2018-01-25 11:00:00: 30.914
        2018-01-25 12:00:00: 30.574
        2018-01-25 13:00:00: 30.604
        2018-01-25 14:00:00: 30.634
        2018-01-25 15:00:00: 31.064
        2018-01-25 16:00:00: 32.084
        2018-01-25 17:00:00: 36.264
        2018-01-25 18:00:00: 34.474
        2018-01-25 19:00:00: 32.184
        2018-01-25 20:00:00: 31.494
        2018-01-25 21:00:00: 30.734
        2018-01-25 22:00:00: 29.714
        2018-01-25 23:00:00: 28.984
      sale_price:
        2018-01-23 00:00:00: 32.992
        2018-01-23 01:00:00: 31.122
        2018-01-23 02:00:00: 29.312
        2018-01-23 03:00:00: 28.072
        2018-01-23 04:00:00: 30.012
        2018-01-23 05:00:00: 33.362
        2018-01-23 06:00:00: 42.682
        2018-01-23 07:00:00: 74.822
        2018-01-23 08:00:00: 77.732
        2018-01-23 09:00:00: 62.332
        2018-01-23 10:00:00: 55.892
        2018-01-23 11:00:00: 46.962
        2018-01-23 12:00:00: 42.582
        2018-01-23 13:00:00: 40.942
        2018-01-23 14:00:00: 39.212
        2018-01-23 15:00:00: 39.142
        2018-01-23 16:00:00: 41.672
        2018-01-23 17:00:00: 46.922
        2018-01-23 18:00:00: 37.102
        2018-01-23 19:00:00: 32.992
        2018-01-23 20:00:00: 31.272
        2018-01-23 21:00:00: 29.752
        2018-01-23 22:00:00: 28.782
        2018-01-23 23:00:00: 28.082
        2018-01-24 00:00:00: 27.242
        2018-01-24 01:00:00: 26.622
        2018-01-24 02:00:00: 25.732
        2018-01-24 03:00:00: 25.392
        2018-01-24 04:00:00: 25.992
        2018-01-24 05:00:00: 27.402
        2018-01-24 06:00:00: 28.942
        2018-01-24 07:00:00: 32.182
        2018-01-24 08:00:00: 33.082
        2018-01-24 09:00:00: 32.342
        2018-01-24 10:00:00: 30.912
        2018-01-24 11:00:00: 30.162
        2018-01-24 12:00:00: 30.062
        2018-01-24 13:00:00: 29.562
        2018-01-24 14:00:00: 29.462
        2018-01-24 15:00:00: 29.512
        2018-01-24 16:00:00: 29.672
        2018-01-24 17:00:00: 30.072
        2018-01-24 18:00:00: 29.552
        2018-01-24 19:00:00: 28.862
        2018-01-24 20:00:00: 28.412
        2018-01-24 21:00:00: 28.072
        2018-01-24 22:00:00: 27.162
        2018-01-24 23:00:00: 25.502
        2018-01-25 00:00:00: 26.192
        2018-01-25 01:00:00: 25.222
        2018-01-25 02:00:00: 24.052
        2018-01-25 03:00:00: 23.892
        2018-01-25 04:00:00: 23.682
        2018-01-25 05:00:00: 26.092
        2018-01-25 06:00:00: 28.202
        2018-01-25 07:00:00: 30.902
        2018-01-25 08:00:00: 31.572
        2018-01-25 09:00:00: 31.462
        2018-01-25 10:00:00: 31.172
        2018-01-25 11:00:00: 30.912
        2018-01-25 12:00:00: 30.572
        2018-01-25 13:00:00: 30.602
        2018-01-25 14:00:00: 30.632
        2018-01-25 15:00:00: 31.062
        2018-01-25 16:00:00: 32.082
        2018-01-25 17:00:00: 36.262
        2018-01-25 18:00:00: 34.472
        2018-01-25 19:00:00: 32.182
        2018-01-25 20:00:00: 31.492
        2018-01-25 21:00:00: 30.732
        2018-01-25 22:00:00: 29.712
        2018-01-25 23:00:00: 28.982
connections:
  - from: Plant1
    to: Reservoir2
  - from: Reservoir1
    to: Plant1
  - from: Plant1_G1
    to: Plant1
  - from: Plant1_G2
    to: Plant1
  - from: Reservoir2
    to: Plant2
  - from: Plant2_G1
    to: Plant2
  - from: Plant2_G2
    to: Plant2
  - from: Plant2_G3
    to: Plant2
  - from: Plant2_G4
    to: Plant2

reserve_obligation.yaml#

model:
  reserve_group:
    fcr_group:
      fcr_n_up_obligation:
        2018-01-23 00:00:00: 20
      fcr_n_down_obligation:
        2018-01-23 00:00:00: 20
connections:
  - from: fcr_group
    to: Plant1_G1
  - from: fcr_group
    to: Plant1_G2
  - from: fcr_group
    to: Plant2_G1
  - from: fcr_group
    to: Plant2_G2
  - from: fcr_group
    to: Plant2_G3
  - from: fcr_group
    to: Plant2_G4

discrete_droop_input.yaml#

model:
  generator:
    Plant2_G1:
      discrete_droop_values:
        - 1
        - 1.5
        - 2
        - 2.5
        - 3
        - 3.5
        - 4
        - 4.5
        - 5
        - 5.5
        - 6
        - 6.5
        - 7
        - 7.5
        - 8
        - 8.5
        - 9
        - 9.5
        - 10
        - 10.5
        - 11
        - 11.5
        - 12
    Plant2_G2:
      discrete_droop_values:
        - 1
        - 1.5
        - 2
        - 2.5
        - 3
        - 3.5
        - 4
        - 4.5
        - 5
        - 5.5
        - 6
        - 6.5
        - 7
        - 7.5
        - 8
        - 8.5
        - 9
        - 9.5
        - 10
        - 10.5
        - 11
        - 11.5
        - 12
    Plant2_G3:
      discrete_droop_values:
        - 1
        - 1.5
        - 2
        - 2.5
        - 3
        - 3.5
        - 4
        - 4.5
        - 5
        - 5.5
        - 6
        - 6.5
        - 7
        - 7.5
        - 8
        - 8.5
        - 9
        - 9.5
        - 10
        - 10.5
        - 11
        - 11.5
        - 12
    Plant2_G4:    
      discrete_droop_values:
        - 1
        - 1.5
        - 2
        - 2.5
        - 3
        - 3.5
        - 4
        - 4.5
        - 5
        - 5.5
        - 6
        - 6.5
        - 7
        - 7.5
        - 8
        - 8.5
        - 9
        - 9.5
        - 10
        - 10.5
        - 11
        - 11.5
        - 12

model.ascii#

#;
# Name of the datafile is: model.ascii;
#;

SIZE
#Num_reservoirs;Num_plants;Num_gates;Num_junctions
2            2          0           0

OPTIMIZATION time
#Start_time;   End_time;
20180123000000 20180126000000

#;N_full_iterations;Accuracy;
OPTIMIZATION   1000       1.00
#Time resolution in the optimization;
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 NO_UNIT     73
#            Time;      f(t);
20180123000000000 1.00000000000000000

GLOBAL_SETTINGS mipgap_rel
# relative mipgap for the optimization;
0.000000

GLOBAL_SETTINGS mipgap_abs
# absolute mipgap_unit for the optimization;
0.000000

RESERVOIR attributes Reservoir1
#ID;Water_course;Type;Maxvol;Lrl;Hrl;
0      0      0     39.000    860.000    905.000

RESERVOIR vol_head Reservoir1
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      3 MM3 METER
#  x_value;   y_value;
0.0000000000 860.0000000000
39.0000000000 906.0000000000
41.6600000000 907.0000000000

RESERVOIR energy_value_input Reservoir1
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      1 MM3 NOK/MWH
#  x_value;   y_value;
0.0000000000 30.0000000000

RESERVOIR attributes Reservoir2
#ID;Water_course;Type;Maxvol;Lrl;Hrl;
0      0      0     97.500    650.000    679.000

RESERVOIR vol_head Reservoir2
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      3 MM3 METER
#  x_value;   y_value;
0.0000000000 650.0000000000
97.5000000000 679.0000000000
104.1500000000 680.0000000000

RESERVOIR inflow Reservoir2
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 M3/S     73
#            Time;      f(t);
20180123000000000 60.00000000000000000

RESERVOIR energy_value_input Reservoir2
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      1 MM3 NOK/MWH
#  x_value;   y_value;
0.0000000000 10.0000000000

PLANT attributes Plant1
#Id;Water_course;Type;Future_use;Prod_area;Num_gen;Num_pump;
0      0      6      0      1      2      0
#Num_main_seg;Num_penstock;Time_delay;Read_prod_factor;Outlet_line;
1      1      0   0.000000 672.000000
0.000000
0.001000

PLANT mip_flag Plant1
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 NO_UNIT     73
#            Time;      f(t);
20180123000000000 1.00000000000000000

GENERATOR attributes Plant1      1
#Id Type Penstock Nom_prod Min_prod Max_prod Start_cost
0      7      1     120.00      60.00     120.00     300.00

GENERATOR gen_eff_curve Plant1      1
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      2 MW %
#  x_value;   y_value;
60.0000000000 100.0000000000
120.0000000000 100.0000000000

GENERATOR turb_eff_curves Plant1      1
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0     170.00     14 M3/S %
#  x_value;   y_value;
28.1200000000 85.8733000000
30.4500000000 87.0319000000
32.7800000000 88.0879000000
35.1100000000 89.0544000000
37.4500000000 89.9446000000
39.7800000000 90.7717000000
42.1100000000 91.5488000000
44.4400000000 92.2643000000
46.7700000000 92.8213000000
49.1000000000 93.1090000000
51.4300000000 93.2170000000
53.7600000000 93.0390000000
56.1000000000 92.6570000000
58.8300000000 92.1746000000

GENERATOR turb_eff_curves Plant1      1
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0     200.00     14 M3/S %
#  x_value;   y_value;
28.1200000000 86.7321000000
30.4500000000 87.9022000000
32.7800000000 88.9688000000
35.1100000000 89.9450000000
37.4500000000 90.8441000000
39.7800000000 91.6794000000
42.1100000000 92.4643000000
44.4400000000 93.1870000000
46.7700000000 93.7495000000
49.1000000000 94.0401000000
51.4300000000 94.1492000000
53.7600000000 93.9694000000
56.1000000000 93.5836000000
58.8300000000 93.0964000000

GENERATOR turb_eff_curves Plant1      1
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0     230.00     14 M3/S %
#  x_value;   y_value;
28.1200000000 87.5908000000
30.4500000000 88.7725000000
32.7800000000 89.8497000000
35.1100000000 90.8355000000
37.4500000000 91.7435000000
39.7800000000 92.5871000000
42.1100000000 93.3798000000
44.4400000000 94.1096000000
46.7700000000 94.6777000000
49.1000000000 94.9712000000
51.4300000000 95.0813000000
53.7600000000 94.8998000000
56.1000000000 94.5101000000
58.8300000000 94.0181000000

GENERATOR attributes Plant1      2
#Id Type Penstock Nom_prod Min_prod Max_prod Start_cost
0      7      1     120.00      60.00     120.00     300.00

GENERATOR gen_eff_curve Plant1      2
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      2 MW %
#  x_value;   y_value;
60.0000000000 100.0000000000
120.0000000000 100.0000000000

GENERATOR turb_eff_curves Plant1      2
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0     170.00     14 M3/S %
#  x_value;   y_value;
28.1200000000 85.8733000000
30.4500000000 87.0319000000
32.7800000000 88.0879000000
35.1100000000 89.0544000000
37.4500000000 89.9446000000
39.7800000000 90.7717000000
42.1100000000 91.5488000000
44.4400000000 92.2643000000
46.7700000000 92.8213000000
49.1000000000 93.1090000000
51.4300000000 93.2170000000
53.7600000000 93.0390000000
56.1000000000 92.6570000000
58.8300000000 92.1746000000

GENERATOR turb_eff_curves Plant1      2
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0     200.00     14 M3/S %
#  x_value;   y_value;
28.1200000000 86.7321000000
30.4500000000 87.9022000000
32.7800000000 88.9688000000
35.1100000000 89.9450000000
37.4500000000 90.8441000000
39.7800000000 91.6794000000
42.1100000000 92.4643000000
44.4400000000 93.1870000000
46.7700000000 93.7495000000
49.1000000000 94.0401000000
51.4300000000 94.1492000000
53.7600000000 93.9694000000
56.1000000000 93.5836000000
58.8300000000 93.0964000000

GENERATOR turb_eff_curves Plant1      2
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0     230.00     14 M3/S %
#  x_value;   y_value;
28.1200000000 87.5908000000
30.4500000000 88.7725000000
32.7800000000 89.8497000000
35.1100000000 90.8355000000
37.4500000000 91.7435000000
39.7800000000 92.5871000000
42.1100000000 93.3798000000
44.4400000000 94.1096000000
46.7700000000 94.6777000000
49.1000000000 94.9712000000
51.4300000000 95.0813000000
53.7600000000 94.8998000000
56.1000000000 94.5101000000
58.8300000000 94.0181000000

GENERATOR startcost Plant1      2
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 NOK     73
#            Time;      f(t);
20180123000000000 300.00000000000000000

PLANT attributes Plant2
#Id;Water_course;Type;Future_use;Prod_area;Num_gen;Num_pump;
0      0      6      0      1      4      0
#Num_main_seg;Num_penstock;Time_delay;Read_prod_factor;Outlet_line;
1      2      0   0.000000 586.000000
0.000000
0.000100   0.000200

PLANT mip_flag Plant2
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 NO_UNIT     73
#            Time;      f(t);
20180123000000000 1.00000000000000000

GENERATOR attributes Plant2      1
#Id Type Penstock Nom_prod Min_prod Max_prod Start_cost
0      7      1     180.00     100.00     180.00     300.00

GENERATOR gen_eff_curve Plant2      1
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      2 MW %
#  x_value;   y_value;
100.0000000000 100.0000000000
180.0000000000 100.0000000000

GENERATOR turb_eff_curves Plant2      1
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0      60.00     14 M3/S %
#  x_value;   y_value;
126.5400000000 92.7201000000
137.0300000000 93.2583000000
147.5100000000 93.7305000000
158.0000000000 94.1368000000
168.5300000000 94.4785000000
179.0100000000 94.7525000000
189.5000000000 94.9606000000
199.9800000000 95.1028000000
210.4700000000 95.1790000000
220.9500000000 95.1892000000
231.4400000000 95.1335000000
241.9200000000 95.0118000000
252.4500000000 94.8232000000
264.7400000000 94.5191000000

GENERATOR attributes Plant2      2
#Id Type Penstock Nom_prod Min_prod Max_prod Start_cost
0      7      2      55.00      30.00      55.00     300.00

GENERATOR gen_eff_curve Plant2      2
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      2 MW %
#  x_value;   y_value;
30.0000000000 100.0000000000
55.0000000000 100.0000000000

GENERATOR turb_eff_curves Plant2      2
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0      60.00     14 M3/S %
#  x_value;   y_value;
40.8200000000 83.8700000000
44.2000000000 85.1937000000
47.5800000000 86.3825000000
50.9700000000 87.4362000000
54.3600000000 88.3587000000
57.7500000000 89.1419000000
61.1300000000 89.7901000000
64.5100000000 90.3033000000
67.8900000000 90.6815000000
71.2700000000 90.9248000000
74.6600000000 91.0331000000
78.0400000000 91.0063000000
81.4400000000 90.8436000000
85.4000000000 90.4817000000


GENERATOR attributes Plant2      3
#Id Type Penstock Nom_prod Min_prod Max_prod Start_cost
0      7      2      55.00      30.00      55.00     300.00

GENERATOR gen_eff_curve Plant2      3
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      2 MW %
#  x_value;   y_value;
30.0000000000 100.0000000000
55.0000000000 100.0000000000

GENERATOR turb_eff_curves Plant2      3
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0      60.00     14 M3/S %
#  x_value;   y_value;
40.8200000000 83.8700000000
44.2000000000 85.1937000000
47.5800000000 86.3825000000
50.9700000000 87.4362000000
54.3600000000 88.3587000000
57.7500000000 89.1419000000
61.1300000000 89.7901000000
64.5100000000 90.3033000000
67.8900000000 90.6815000000
71.2700000000 90.9248000000
74.6600000000 91.0331000000
78.0400000000 91.0063000000
81.4400000000 90.8436000000
85.4000000000 90.4817000000

GENERATOR attributes Plant2      4
#Id Type Penstock Nom_prod Min_prod Max_prod Start_cost
0      7      2      55.00      30.00      55.00     300.00

GENERATOR gen_eff_curve Plant2      4
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0       0.00      2 MW %
#  x_value;   y_value;
30.0000000000 100.0000000000
55.0000000000 100.0000000000

GENERATOR turb_eff_curves Plant2      4
#Id;Number;Reference;Pts;X_unit;Y_unit
0      0      60.00     14 M3/S %
#  x_value;   y_value;
40.8200000000 83.8700000000
44.2000000000 85.1937000000
47.5800000000 86.3825000000
50.9700000000 87.4362000000
54.3600000000 88.3587000000
57.7500000000 89.1419000000
61.1300000000 89.7901000000
64.5100000000 90.3033000000
67.8900000000 90.6815000000
71.2700000000 90.9248000000
74.6600000000 91.0331000000
78.0400000000 91.0063000000
81.4400000000 90.8436000000
85.4000000000 90.4817000000


#Write connection data for the hydro power system
#;    From_type/To_type; From_name; To_name;
CONNECT RESERVOIR/PLANT Reservoir1 Plant1
CONNECT RESERVOIR/PLANT Reservoir2 Plant2
CONNECT PLANT/RESERVOIR Plant1 Reservoir2

#Initial reservoir volumes;
STARTRES      2 METER
#Name; Head (masl);
Reservoir1      900.0
Reservoir2      670.0


MULTI_MARKET price_buy 1 0
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 NOK/MWH     73
#            Time;      f(t);
20180123000000000 32.99399999999999977
20180123010000000 31.12399999999999878
20180123020000000 29.31400000000000006
20180123030000000 28.07399999999999807
20180123040000000 30.01399999999999935
20180123050000000 33.36400000000000432
20180123060000000 42.68400000000000460
20180123070000000 74.82399999999999807
20180123080000000 77.73399999999999466
20180123090000000 62.33400000000000318
20180123100000000 55.89400000000000546
20180123110000000 46.96400000000000574
20180123120000000 42.58400000000000318
20180123130000000 40.94400000000000261
20180123140000000 39.21400000000000574
20180123150000000 39.14400000000000546
20180123160000000 41.67399999999999949
20180123170000000 46.92399999999999949
20180123180000000 37.10399999999999920
20180123190000000 32.99399999999999977
20180123200000000 31.27399999999999736
20180123210000000 29.75399999999999778
20180123220000000 28.78399999999999892
20180123230000000 28.08399999999999963
20180124000000000 27.24399999999999977
20180124010000000 26.62399999999999878
20180124020000000 25.73399999999999821
20180124030000000 25.39399999999999835
20180124040000000 25.99399999999999977
20180124050000000 27.40399999999999991
20180124060000000 28.94399999999999906
20180124070000000 32.18400000000000460
20180124080000000 33.08400000000000318
20180124090000000 32.34400000000000119
20180124100000000 30.91399999999999793
20180124110000000 30.16399999999999793
20180124120000000 30.06400000000000006
20180124130000000 29.56400000000000006
20180124140000000 29.46399999999999864
20180124150000000 29.51399999999999935
20180124160000000 29.67399999999999949
20180124170000000 30.07399999999999807
20180124180000000 29.55399999999999849
20180124190000000 28.86399999999999721
20180124200000000 28.41399999999999793
20180124210000000 28.07399999999999807
20180124220000000 27.16399999999999793
20180124230000000 25.50399999999999778
20180125000000000 26.19399999999999906
20180125010000000 25.22400000000000020
20180125020000000 24.05399999999999849
20180125030000000 23.89399999999999835
20180125040000000 23.68399999999999750
20180125050000000 26.09399999999999764
20180125060000000 28.20400000000000063
20180125070000000 30.90399999999999991
20180125080000000 31.57399999999999807
20180125090000000 31.46399999999999864
20180125100000000 31.17399999999999949
20180125110000000 30.91399999999999793
20180125120000000 30.57399999999999807
20180125130000000 30.60399999999999920
20180125140000000 30.63400000000000034
20180125150000000 31.06400000000000006
20180125160000000 32.08400000000000318
20180125170000000 36.26400000000000290
20180125180000000 34.47400000000000375
20180125190000000 32.18400000000000460
20180125200000000 31.49399999999999977
20180125210000000 30.73399999999999821
20180125220000000 29.71399999999999864
20180125230000000 28.98399999999999821
20180126000000000 28.98399999999999821

MULTI_MARKET price_sale 1 0
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 NOK/MWH     73
#            Time;      f(t);
20180123000000000 32.99199999999999733
20180123010000000 31.12199999999999989
20180123020000000 29.31200000000000117
20180123030000000 28.07199999999999918
20180123040000000 30.01200000000000045
20180123050000000 33.36200000000000188
20180123060000000 42.68200000000000216
20180123070000000 74.82200000000000273
20180123080000000 77.73199999999999932
20180123090000000 62.33200000000000074
20180123100000000 55.89200000000000301
20180123110000000 46.96200000000000330
20180123120000000 42.58200000000000074
20180123130000000 40.94200000000000017
20180123140000000 39.21200000000000330
20180123150000000 39.14200000000000301
20180123160000000 41.67199999999999704
20180123170000000 46.92199999999999704
20180123180000000 37.10199999999999676
20180123190000000 32.99199999999999733
20180123200000000 31.27199999999999847
20180123210000000 29.75199999999999889
20180123220000000 28.78200000000000003
20180123230000000 28.08200000000000074
20180124000000000 27.24200000000000088
20180124010000000 26.62199999999999989
20180124020000000 25.73199999999999932
20180124030000000 25.39199999999999946
20180124040000000 25.99200000000000088
20180124050000000 27.40200000000000102
20180124060000000 28.94200000000000017
20180124070000000 32.18200000000000216
20180124080000000 33.08200000000000074
20180124090000000 32.34199999999999875
20180124100000000 30.91199999999999903
20180124110000000 30.16199999999999903
20180124120000000 30.06200000000000117
20180124130000000 29.56200000000000117
20180124140000000 29.46199999999999974
20180124150000000 29.51200000000000045
20180124160000000 29.67200000000000060
20180124170000000 30.07199999999999918
20180124180000000 29.55199999999999960
20180124190000000 28.86199999999999832
20180124200000000 28.41199999999999903
20180124210000000 28.07199999999999918
20180124220000000 27.16199999999999903
20180124230000000 25.50199999999999889
20180125000000000 26.19200000000000017
20180125010000000 25.22200000000000131
20180125020000000 24.05199999999999960
20180125030000000 23.89199999999999946
20180125040000000 23.68199999999999861
20180125050000000 26.09199999999999875
20180125060000000 28.20200000000000173
20180125070000000 30.90200000000000102
20180125080000000 31.57199999999999918
20180125090000000 31.46199999999999974
20180125100000000 31.17200000000000060
20180125110000000 30.91199999999999903
20180125120000000 30.57199999999999918
20180125130000000 30.60200000000000031
20180125140000000 30.63200000000000145
20180125150000000 31.06200000000000117
20180125160000000 32.08200000000000074
20180125170000000 36.26200000000000045
20180125180000000 34.47200000000000131
20180125190000000 32.18200000000000216
20180125200000000 31.49200000000000088
20180125210000000 30.73199999999999932
20180125220000000 29.71199999999999974
20180125230000000 28.98199999999999932
20180126000000000 28.98199999999999932

MULTI_MARKET max_buy 1 0
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 MW     73
#            Time;      f(t);
20180123000000000 9999.00000000000000000

MULTI_MARKET max_sale 1 0
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 MW     73
#            Time;      f(t);
20180123000000000 9999.00000000000000000

reserve_obligation.ascii#

RESERVE_GROUP	fcr_n_up	1
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 MW     1
#            Time;      f(t);
20180123000000000 20.0

RESERVE_GROUP	fcr_n_down	1
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts;
0      0 20180123000000000 HOUR      0     -1 MW     1
#            Time;      f(t);
20180123000000000 20.0


#FCR-N UP
GENERATOR	gen_fcr_n_up_group	Plant1      1
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_up_group	Plant1      2
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_up_group	Plant2      1
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_up_group	Plant2      2
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_up_group	Plant2      3
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_up_group	Plant2      4
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000


#FCR-N DOWN
GENERATOR	gen_fcr_n_down_group	Plant1      1
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_down_group	Plant1      2
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_down_group	Plant2      1
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_down_group	Plant2      2
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_down_group	Plant2      3
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

GENERATOR	gen_fcr_n_down_group	Plant2      4
#	Id	number	starttime		time_unit	period	data_type	y_unit	npts
0	0	20190913060000000	HOUR		8760		-1	NO_UNIT	1
#	time		y
20190913060000000	1.000000000000

discrete_droop_input.ascii#

GENERATOR	discrete_droop_values	Plant2      1
1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0

GENERATOR	discrete_droop_values	Plant2      2
1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0

GENERATOR	discrete_droop_values	Plant2      3
1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0

GENERATOR	discrete_droop_values	Plant2      4
1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0