Individual water values#
The model setup for the three examples are available in the following formats:
pyshop
YAML
ASCII
The examples show how to use constant water values (in €/Mm\(^3\) and €/MWh) and water value tables to specify the end value of the end reservoir contents in SHOP. A simple case with three reservoirs and two plants is used to illustrate some of the relevant input and output for individual water values.
#Necessary imports used in all examples
import pandas as pd
import plotly.graph_objs as go
from pyshop import ShopSession
pd.options.plotting.backend = "plotly"
#Functions used in this example for building a tunnel model, adding a gate to a tunnel and running the optimization
from ind_wv import build_model, run_model
Constant water values in €/MWh#
The first example will use water (or energy) values specified in €/MWh for all of the three reservoirs (see figure below). The values are set with the attribute called energy_value_input in the API.
#Create a standard ShopSession
shop=ShopSession()
#Build a simple model with three reservoirs and two plants.
build_model(shop)
#Display topology to the screen
display(shop.model.build_connection_tree())
#The three reservoir objects
rsv1 = shop.model.reservoir.Reservoir1
rsv2 = shop.model.reservoir.Reservoir2
rsv3 = shop.model.reservoir.Reservoir3
#In the first run we define the end value of the water in terms of €/MWh with the energy_value_input attribute
rsv1.energy_value_input.set(31.0)
rsv2.energy_value_input.set(30.0)
rsv3.energy_value_input.set(20.0)
#Optimize model by calling "run_model"
run_model(shop)
The energy_value_input must be converted from €/MWh to €/Mm\(^3\) by SHOP before it can be added to the objective function. This requires reservoir specific conversion factors that depend on the best point operation of the downstream plant. Note that energy_value_input is a local value relative to the downstream plant, which means that the global water value for each reservoir must be calculated after the conversion factors have been found. The global water value is calculated by summing up the local water values (in €/Mm\(^3\)) from the bottom of the watercourse and up. The calculated reservoir output attributes energy_conversion_factor and calc_global_water_value that SHOP has used can be inspected after the first iteration of the optimization:
#Print out the energy conversion factors for all reservoirs used in the conversion from €/MWh -> €/Mm3
for rsv in shop.model.reservoir:
print(f"{rsv.get_name()} has an energy conversion factor of {rsv.energy_conversion_factor.get():.3f} MWh/Mm3")
print("")
#Print out the calculated global water value for all reservoirs.
for rsv in shop.model.reservoir:
print(f"{rsv.get_name()} has a calculated global water value of {rsv.calc_global_water_value.get():.2f} €/Mm3")
print("")
#Optimization results for the total reservoir end values
for rsv in shop.model.reservoir:
end_val = -rsv.end_value.get().iloc[-1]
end_vol = rsv.storage.get().iloc[-1]
avrg_wv = end_val/(end_vol+10**(-10))
print(f"{rsv.get_name()} has a total value of {end_val:.2f} € at {end_vol:.2f} Mm3 and an average water value of {avrg_wv:.2f} €/Mm3")
print("")
Reservoir1 has an energy conversion factor of 583.001 MWh/Mm3
Reservoir2 has an energy conversion factor of 583.001 MWh/Mm3
Reservoir3 has an energy conversion factor of 205.225 MWh/Mm3
Reservoir1 has a calculated global water value of 22177.52 €/Mm3
Reservoir2 has a calculated global water value of 21594.52 €/Mm3
Reservoir3 has a calculated global water value of 4104.50 €/Mm3
Reservoir1 has a total value of 134395.76 € at 6.06 Mm3 and an average water value of 22177.52 €/Mm3
Reservoir2 has a total value of 561147.79 € at 25.99 Mm3 and an average water value of 21594.52 €/Mm3
Reservoir3 has a total value of 34585.74 € at 8.43 Mm3 and an average water value of 4104.50 €/Mm3
The energy_conversion_factor for Reservoir1 and Reservoir2 are identical since they are referred to the same downstream plant. Since there are no reservoirs below Reservoir3, the calc_global_water_value attribute is simply the product of the energy_value_input and energy_conversion_factor. Since the energy_value_input is relative to the downstream plant and not the first downstream reservoir, the global water value for both Reservoir1 and Reservoir2 is found by adding their respective local water values (energy_value_input\(\cdot\)energy_conversion_factor) to the global water value of Reservoir3.
The average water value, calculated by dividing the optimized end reservoir value by the end volume of each reservoir, gives the same result as the calculated global water value - as it should in a constant water value case!
The storage volume, global output water value (water_value_global_result), and local output energy value (energy_value_local_result) from the optimization results are shown in the plots below. The water_value_global_result is the dual value of the reservoir balance constraints, and are directly extracted from the optimization problem. These values are usually negative due to the way the constraints are modelled in SHOP. The energy_value_local_result attribute is found by first calculating the local output water value of the reservoir relative to the reservoir below the plant, and then converting it to €/MWh with the energy_conversion_factor.
These output time series are strongly related to the water value input given to SHOP. A good consistency check is to look at the (negative of the) final values of the water_value_global_result and energy_value_local_results time series. These should be identical to the global water value and energy_value_input, respectively. This identity may not hold if penalties are present in the SHOP run since the dual values of the problem are influenced by penalty values.
pd.DataFrame([rsv.storage.get().rename(rsv.get_name()) for rsv in shop.model.reservoir]).transpose().plot(title="Reservoir storage")
pd.DataFrame([-rsv.water_value_global_result.get().rename(rsv.get_name()) for rsv in shop.model.reservoir]).transpose().plot(title="Reservoir global water value")
pd.DataFrame([-rsv.energy_value_local_result.get().rename(rsv.get_name()) for rsv in shop.model.reservoir]).transpose().plot(title="Reservoir local energy value")
Mix of constant water values in €/MWh and €/Mm\(^3\)#
It is possible to define constant water values in €/MWh for some reservoirs and €/Mm\(^3\) for the rest. Constant water values in €/Mm\(^3\) are used directly by SHOP since they are assumed to be global. The example below is identical to the previous one except that the energy_value_input of Reservoir3 has been changed to a constant global water value with the water_value_input attribute.
Caution is advised when having both definitions in the system, as it is possible to create cases where the global water value is not increasing upwards in the system. In our example, setting a high water_value_input for Reservoir2 could make it higher than the calculated global water value of Reservoir1. This can happen because the energy_value_input is a local value relative to the reservoir below the downstream plant, and so the global water value of Reservoir2 is skipped when converting the energy_value_input into a global water value for Reservoir1.
#Create the same basic model as before
shop=ShopSession()
build_model(shop)
#The three reservoir objects
rsv1 = shop.model.reservoir.Reservoir1
rsv2 = shop.model.reservoir.Reservoir2
rsv3 = shop.model.reservoir.Reservoir3
#We keep the energy_value_input for rsv1 and rsv2 unchanged, but define a global water value of 4000 €/Mm3 for rsv3 which is slightly higher than in the previous example.
rsv1.energy_value_input.set(31.0)
rsv2.energy_value_input.set(30.0)
rsv3.water_value_input.set([pd.Series([5000.0], index=[0], name=0)])
#Optimize model by calling "run_model"
run_model(shop)
#The energy_conversion_factors
for rsv in shop.model.reservoir:
print(f"{rsv.get_name()} has an energy conversion factor of {rsv.energy_conversion_factor.get():.3f} MWh/Mm3")
print("")
#The calculated global water values
for rsv in shop.model.reservoir:
print(f"{rsv.get_name()} has a calculated global water value of {rsv.calc_global_water_value.get():.2f} €/Mm3")
print("")
#Optimization results
for rsv in shop.model.reservoir:
end_val = -rsv.end_value.get().iloc[-1]
end_vol = rsv.storage.get().iloc[-1]
avrg_wv = end_val/(end_vol+10**(-10))
print(f"{rsv.get_name()} has a total value of {end_val:.2f} € at {end_vol:.2f} Mm3 and an average water value of {avrg_wv:.2f} €/Mm3")
print("")
Reservoir1 has an energy conversion factor of 583.001 MWh/Mm3
Reservoir2 has an energy conversion factor of 583.001 MWh/Mm3
Reservoir3 has an energy conversion factor of 205.225 MWh/Mm3
Reservoir1 has a calculated global water value of 23073.02 €/Mm3
Reservoir2 has a calculated global water value of 22490.02 €/Mm3
Reservoir3 has a calculated global water value of 0.00 €/Mm3
Reservoir1 has a total value of 206272.79 € at 8.94 Mm3 and an average water value of 23073.02 €/Mm3
Reservoir2 has a total value of 589400.87 € at 26.21 Mm3 and an average water value of 22490.02 €/Mm3
Reservoir3 has a total value of 95886.18 € at 19.18 Mm3 and an average water value of 5000.00 €/Mm3
Note that all of the energy conversion factors are identical to the first example since they are not influenced by the water value function of the reservoirs. The calc_global_water_value attribute is not calculated for Reservoir3 since it already has a global water value given in €/Mm\(^3\). The calculated global water values of Reservoir1 and Reservoir2 are higher compared to the last example since the water value for Reservoir3 is higher, but their relative difference is the same as before.
The final value of the local energy value time series for Reservoir1 and Reservoir2 are still the same as their energy_value_input, while the water_value_input defined for Reservoir3 is found in the final value of the global output water value time series.
pd.DataFrame([rsv.storage.get().rename(rsv.get_name()) for rsv in shop.model.reservoir]).transpose().plot(title="Reservoir storage")
pd.DataFrame([-rsv.water_value_global_result.get().rename(rsv.get_name()) for rsv in shop.model.reservoir]).transpose().plot(title="Reservoir global water value")
pd.DataFrame([-rsv.energy_value_local_result.get().rename(rsv.get_name()) for rsv in shop.model.reservoir]).transpose().plot(title="Reservoir local energy value")
Water value tables#
An example of how to specify water values as piece-wise constant functions is shown below. The water value tables are based on the original water values calculated in the first example. The marginal water values in the water value table are spread around the original water value in a uniform way for each volume segment.
It is possible to have reservoirs with constant water values in €/Mm\(^3\) and reservoirs with water value tables in the same system, but it is not advisable to mix water value tables and constant end values in €/MWh. This is because the conversion from local energy values to global water values requires a constant water value for all reservoirs of the system. If reservoirs with water value tables and constant local energy values are mixed, the start volume is used to find an approximation of the global water value of the reservoirs with water value tables.
#Create the same basic model as before
shop=ShopSession()
build_model(shop)
#The three reservoir objects
rsv1 = shop.model.reservoir.Reservoir1
rsv2 = shop.model.reservoir.Reservoir2
rsv3 = shop.model.reservoir.Reservoir3
reservoirs = [rsv1,rsv2,rsv3]
#Create a water value table with n segments that has the same total value at vmax as in the first example
wv_orig = [22177.52,21594.52,4104.50]
n = 10
for wv,rsv in zip(wv_orig,reservoirs):
vmax = rsv.max_vol.get()
delta = 0.1*wv
#The volume segments are vmax/n long, the marginal water value is decreasing from wv+delta to wv-delta from the first to the last segment
wv_list = [wv+delta*(1-2*i/(n-1)) for i in range(n)]
vol_list = [i*vmax/n for i in range(n)]
rsv.water_value_input.set([pd.Series(wv_list, index=vol_list, name=0)])
#Plot the water value tables
for i, rsv in enumerate(reservoirs):
wv_table = rsv.water_value_input.get()[0]
vols = list(wv_table.index)
wvs = list(wv_table.values)
dv = vols[1]-vols[0]
fig = go.Figure(layout={'bargap':0,'title':f"Reservoir{i+1}",'xaxis_title':"End volume",'yaxis_title':"Marginal water value"})
fig.add_trace(go.Bar(name='Water value table', x0=0.5*dv,dx=dv, y=wvs))
fig.add_trace(go.Scatter(name="Original water value",x=[0,vols[-1]+dv],y=[wv_orig[i],wv_orig[i]],mode='lines'))
fig.update_yaxes(range=[min(wvs)*0.9, max(wvs)*1.1])
fig.show()
print("")
#Print the water value tables
for rsv in reservoirs:
wv_table = rsv.water_value_input.get()[0]
print(f"{rsv.get_name()}:")
print("Vol WV")
for vol,wv in wv_table.items():
print(vol,wv)
print("")
Reservoir1:
Vol WV
0.0 24395.272
2.0 23902.438222222223
4.0 23409.604444444445
6.0 22916.770666666667
8.0 22423.93688888889
10.0 21931.10311111111
12.0 21438.269333333334
14.0 20945.435555555556
16.0 20452.601777777778
18.0 19959.768
Reservoir2:
Vol WV
0.0 23753.972
3.9 23274.09377777778
7.8 22794.215555555555
11.7 22314.337333333333
15.6 21834.45911111111
19.5 21354.58088888889
23.4 20874.702666666668
27.3 20394.824444444446
31.2 19914.94622222222
35.1 19435.068
Reservoir3:
Vol WV
0.0 4514.95
9.75 4423.738888888889
19.5 4332.527777777777
29.25 4241.316666666667
39.0 4150.105555555556
48.75 4058.8944444444446
58.5 3967.6833333333334
68.25 3876.472222222222
78.0 3785.261111111111
87.75 3694.05
#Optimize model by calling "run_model"
run_model(shop)
for rsv in shop.model.reservoir:
end_val = -rsv.end_value.get().iloc[-1]
end_vol = rsv.storage.get().iloc[-1]
avrg_wv = end_val/(end_vol+10**(-10))
print(f"{rsv.get_name()} has a total value of {end_val:.2f} € at {end_vol:.2f} Mm3 and an average water value of {avrg_wv:.2f} €/Mm3")
print("")
Reservoir1 has a total value of 234360.10 € at 10.01 Mm3 and an average water value of 23407.83 €/Mm3
Reservoir2 has a total value of 527770.07 € at 23.40 Mm3 and an average water value of 22554.28 €/Mm3
Reservoir3 has a total value of 65958.83 € at 14.71 Mm3 and an average water value of 4484.20 €/Mm3
The results from this SHOP run is not directly comparable to the others even though the water value tables are based on the global water values calulated from the first example. The average water values calculated above are no longer the same as the marginal water values seen in the local water value plot below because of the piece-wise water value definition. The final value of the water_value_global_result are related to the marginal values specified in the water value tables, and it is often equal to the marginal water value in the segment where the final optimized volume lies. However, if the final volume exactly fills a whole number of segments in the table, the marginal value will likely be somewhere between the marginal water value in the last full and first empty segments.
pd.DataFrame([rsv.storage.get().rename(rsv.get_name()) for rsv in shop.model.reservoir]).transpose().plot(title="Reservoir storage")
pd.DataFrame([-rsv.water_value_global_result.get().rename(rsv.get_name()) for rsv in shop.model.reservoir]).transpose().plot(title="Reservoir global water value")
pd.DataFrame([-rsv.energy_value_local_result.get().rename(rsv.get_name()) for rsv in shop.model.reservoir]).transpose().plot(title="Reservoir local energy value")
ind_wv.py#
import pandas as pd
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(20)
rsv1.lrl.set(1000)
rsv1.hrl.set(1010)
rsv1.vol_head.set(pd.Series([1000, 1010, 1011], index=[0, 20, 22], name=0))
rsv1.flow_descr.set(pd.Series([0, 1000], index=[1010, 1011], name=0))
gate = shop.model.gate.add_object('Flow_gate')
gate.max_discharge.set(50)
rsv2 = shop.model.reservoir.add_object('Reservoir2')
rsv2.max_vol.set(39)
rsv2.lrl.set(860)
rsv2.hrl.set(905)
rsv2.vol_head.set(pd.Series([860, 906, 907], index=[0, 39, 41.66], name=0))
rsv3 = shop.model.reservoir.add_object('Reservoir3')
rsv3.max_vol.set(97.5)
rsv3.lrl.set(650)
rsv3.hrl.set(679)
rsv3.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(gate)
gate.connect_to(rsv2)
rsv2.connect_to(plant1)
plant1.connect_to(rsv3)
rsv3.connect_to(plant2)
rsv1.start_head.set(1006)
rsv2.start_head.set(900)
rsv3.start_head.set(670)
rsv3.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([], ['3'])
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:
reservoir:
Reservoir1:
start_head: 1006
max_vol: 20
lrl: 1000
hrl: 1010
vol_head:
ref: 0
x:
- 0
- 20
- 22
y:
- 1000
- 1010
- 1011
flow_descr:
ref: 0
x:
- 1010
- 1011
y:
- 0
- 1000
Reservoir2:
start_head: 900
max_vol: 39
lrl: 860
hrl: 905
vol_head:
ref: 0
x:
- 0
- 39
- 41.66
y:
- 860
- 906
- 907
Reservoir3:
start_head: 670
max_vol: 97.5
lrl: 650
hrl: 679
vol_head:
ref: 0
x:
- 0
- 97.5
- 104.15
y:
- 650
- 679
- 680
inflow:
2018-01-23 00:00:00: 60
gate:
Flow_gate:
max_discharge: 50
plant:
Plant1:
equal_distribution: -1
outlet_line: 672
main_loss:
- 0
penstock_loss:
- 0.001
mip_flag:
2018-01-23 00:00:00: 1
Plant2:
equal_distribution: -1
outlet_line: 586
main_loss:
- 0
penstock_loss:
- 0.0001
- 0.0002
mip_flag:
2018-01-23 00:00:00: 1
generator:
Plant1_G1:
initial_state: -1
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:
initial_state: -1
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:
initial_state: -1
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:
initial_state: -1
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:
initial_state: -1
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:
initial_state: -1
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: Reservoir1
to: Flow_gate
from_type: reservoir
to_type: gate
connection_type: connection_standard
order: 0
- from: Flow_gate
to: Reservoir2
from_type: gate
to_type: reservoir
connection_type: connection_standard
order: 0
- from: Plant1
to: Reservoir3
from_type: plant
to_type: reservoir
connection_type: connection_standard
order: 0
- from: Reservoir2
to: Plant1
from_type: reservoir
to_type: plant
connection_type: connection_standard
order: 0
- from: Plant1_G1
to: Plant1
from_type: generator
to_type: plant
connection_type: connection_standard
order: 1
- from: Plant1_G2
to: Plant1
from_type: generator
to_type: plant
connection_type: connection_standard
order: 2
- from: Reservoir3
to: Plant2
from_type: reservoir
to_type: plant
connection_type: connection_standard
order: 0
- from: Plant2_G1
to: Plant2
from_type: generator
to_type: plant
connection_type: connection_standard
order: 1
- from: Plant2_G2
to: Plant2
from_type: generator
to_type: plant
connection_type: connection_standard
order: 2
- from: Plant2_G3
to: Plant2
from_type: generator
to_type: plant
connection_type: connection_standard
order: 3
- from: Plant2_G4
to: Plant2
from_type: generator
to_type: plant
connection_type: connection_standard
order: 4
constant_energy_values.yaml#
model:
reservoir:
Reservoir1:
energy_value_input: 31
Reservoir2:
energy_value_input: 30
Reservoir3:
energy_value_input: 20
constant_mixed_values.yaml#
model:
reservoir:
Reservoir1:
energy_value_input: 31
Reservoir2:
energy_value_input: 30
Reservoir3:
water_value_input:
- ref: 0
x:
- 0
y:
- 5000
water_value_tables.yaml#
model:
reservoir:
Reservoir1:
water_value_input:
- ref: 0
x:
- 0
- 2
- 4
- 6
- 8
- 10
- 12
- 14
- 16
- 18
y:
- 24395.272
- 23902.438222222
- 23409.604444444
- 22916.770666667
- 22423.936888889
- 21931.103111111
- 21438.269333333
- 20945.435555556
- 20452.601777778
- 19959.768
Reservoir2:
water_value_input:
- ref: 0
x:
- 0
- 3.9
- 7.8
- 11.7
- 15.6
- 19.5
- 23.4
- 27.3
- 31.2
- 35.1
y:
- 23753.972
- 23274.093777778
- 22794.215555556
- 22314.337333333
- 21834.459111111
- 21354.580888889
- 20874.702666667
- 20394.824444444
- 19914.946222222
- 19435.068
Reservoir3:
water_value_input:
- ref: 0
x:
- 0
- 9.75
- 19.5
- 29.25
- 39
- 48.75
- 58.5
- 68.25
- 78
- 87.75
y:
- 4514.95
- 4423.7388888889
- 4332.5277777778
- 4241.3166666667
- 4150.1055555556
- 4058.8944444444
- 3967.6833333333
- 3876.4722222222
- 3785.2611111111
- 3694.05
model.ascii#
#;
# Name of the datafile is: model.ascii;
#;
SIZE
#Num_reservoirs;Num_plants;Num_gates;Num_junctions
3 2 1 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
RESERVOIR attributes Reservoir1
#ID;Water_course;Type;Maxvol;Lrl;Hrl;
0 0 0 20.000 1000.000 1010.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 1000.0000000000
20.0000000000 1010.0000000000
22.0000000000 1011.0000000000
RESERVOIR flow_descr Reservoir1
#Id;Number;Reference;Pts;X_unit;Y_unit
0 0 0.00 2 METER M3/S
# x_value; y_value;
1010.0000000000 0.0000000000
1011.0000000000 1000.0000000000
RESERVOIR attributes Reservoir2
#ID;Water_course;Type;Maxvol;Lrl;Hrl;
0 0 0 39.000 860.000 905.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 860.0000000000
39.0000000000 906.0000000000
41.6600000000 907.0000000000
RESERVOIR attributes Reservoir3
#ID;Water_course;Type;Maxvol;Lrl;Hrl;
0 0 0 97.500 650.000 679.000
RESERVOIR vol_head Reservoir3
#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 Reservoir3
#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
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 startcost Plant1 1
#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
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 startcost Plant2 1
#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
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 startcost Plant2 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
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 startcost Plant2 3
#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
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
GENERATOR startcost Plant2 4
#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
GATE attributes Flow_gate
#Id;Water_course;Type;Time_delay;Num_parallell_gates;Gate_slack;
0 0 0 0 1 0
GATE max_flow Flow_gate
#Id;Number;Start_Time;Time_unit;Period;Data_type;Y_unit;Pts
0 0 20180123000000000 HOUR 0 -1 M3/S 1
# Time; f(t)
20180123000000000 50.000000
#Write connection data for the hydro power system
#; From_type/To_type; From_name; To_name;
CONNECT RESERVOIR/GATE Reservoir1 Flow_gate
CONNECT RESERVOIR/PLANT Reservoir2 Plant1
CONNECT RESERVOIR/PLANT Reservoir3 Plant2
CONNECT GATE/RESERVOIR Flow_gate Reservoir2
CONNECT PLANT/RESERVOIR Plant1 Reservoir3
#Initial reservoir volumes;
STARTRES 3 Meter
#Name; Volume (Meter);
Reservoir1 1006
Reservoir2 900
Reservoir3 670
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
#Num_areas;Type
NETWORK 1 load
#Load for area: 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 0.000000
constant_energy_values.ascii#
RESERVOIR energy_value_input Reservoir1
# Number Ref Npkt x_unit y_unit
0 1 0 1 Mm3 Kroner
0 31.0
RESERVOIR energy_value_input Reservoir2
# Number Ref Npkt x_unit y_unit
0 1 0 1 Mm3 Kroner
0 30.0
RESERVOIR energy_value_input Reservoir3
# Number Ref Npkt x_unit y_unit
0 1 0 1 Mm3 Kroner
0 20.0
constant_mixed_values.ascii#
RESERVOIR energy_value_input Reservoir1
# Number Ref Npkt x_unit y_unit
0 1 0 1 Mm3 Kroner
0 31.0
RESERVOIR energy_value_input Reservoir2
# Number Ref Npkt x_unit y_unit
0 1 0 1 Mm3 Kroner
0 30.0
RESERVOIR water_value_input Reservoir3
# Number Ref Npkt x_unit y_unit
0 1 0 1 Mm3 NOK/Mm3
0 5000.0
water_value_tables.ascii#
RESERVOIR water_value_input Reservoir1
# Number Ref Npkt x_unit y_unit
0 1 0 1 Mm3 NOK/Mm3
0.0 24395.272
2.0 23902.438222222223
4.0 23409.604444444445
6.0 22916.770666666667
8.0 22423.93688888889
10.0 21931.10311111111
12.0 21438.269333333334
14.0 20945.435555555556
16.0 20452.601777777778
18.0 19959.768
RESERVOIR water_value_input Reservoir2
# Number Ref Npkt x_unit y_unit
0 1 0 1 Mm3 NOK/Mm3
0.0 23753.972
3.9 23274.09377777778
7.8 22794.215555555555
11.7 22314.337333333333
15.6 21834.45911111111
19.5 21354.58088888889
23.4 20874.702666666668
27.3 20394.824444444446
31.2 19914.94622222222
35.1 19435.068
RESERVOIR water_value_input Reservoir3
# Number Ref Npkt x_unit y_unit
0 1 0 1 Mm3 NOK/Mm3
0.0 4514.95
9.75 4423.738888888889
19.5 4332.527777777777
29.25 4241.316666666667
39.0 4150.105555555556
48.75 4058.8944444444446
58.5 3967.6833333333334
68.25 3876.472222222222
78.0 3785.261111111111
87.75 3694.05