Discretization of droop#
The model setup for the iterative discretization of droop results presented below is available in the following formats:
pyshop
YAML
ASCII
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)
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
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