import pandas as pd def build_model(shop): starttime=pd.Timestamp("2018-02-27 00:00:00") endtime=pd.Timestamp("2018-02-27 06:00:00") shop.set_time_resolution(starttime=starttime, endtime=endtime, timeunit="hour") rsv1=shop.model.reservoir.add_object("Reservoir1") rsv1.hrl.set(100) rsv1.lrl.set(90) rsv1.max_vol.set(5) rsv1.vol_level.set(pd.Series([90,100,101],index=[0,5,6])) rsv1.flow_descr.set(pd.Series([0, 1000], index=[100, 101])) rsv2=shop.model.reservoir.add_object("Reservoir2") rsv2.hrl.set(100) rsv2.lrl.set(90) rsv2.max_vol.set(5) rsv2.vol_level.set(pd.Series([90,100,101],index=[0,5,6])) rsv2.flow_descr.set(pd.Series([0, 1000], index=[100, 101])) rsv3=shop.model.reservoir.add_object("Reservoir3") rsv3.hrl.set(100) rsv3.lrl.set(90) rsv3.max_vol.set(5) rsv3.vol_level.set(pd.Series([90,100,101],index=[0,5,6])) rsv3.flow_descr.set(pd.Series([0, 1000], index=[100, 101])) plant1=shop.model.plant.add_object("Plant1") plant1.main_loss.set([0.0002]) plant1.penstock_loss.set([0.0001]) p1g1=shop.model.generator.add_object("P1G1") p1g1.connect_to(plant1) p1g1.penstock.set(1) p1g1.p_min.set(0.1) p1g1.p_nom.set(100) p1g1.p_max.set(100) p1g1.gen_eff_curve.set(pd.Series([95,98], index=[0,100])) p1g1.turb_eff_curves.set([pd.Series([80,95,90],index=[1,90,100],name=90),pd.Series([82,98,92],index=[1,90,100],name=100)]) tunnel1=shop.model.tunnel.add_object("Tunnel1") tunnel1.loss_factor.set(0.00016) tunnel1.start_height.set(90) tunnel1.end_height.set(90) tunnel1.diameter.set(3) tunnel1.length.set(2022) tunnel2=shop.model.tunnel.add_object("Tunnel2") tunnel2.loss_factor.set(0.00015) tunnel2.start_height.set(90) tunnel2.end_height.set(90) tunnel2.diameter.set(3) tunnel2.length.set(2022) tunnel3=shop.model.tunnel.add_object("Tunnel3") tunnel3.loss_factor.set(0.00030) tunnel3.start_height.set(90) tunnel3.end_height.set(90) tunnel3.diameter.set(3) tunnel3.length.set(2022) rsv1.connect_to(tunnel1) tunnel1.connect_to(rsv2) rsv2.connect_to(tunnel2) tunnel2.connect_to(rsv3) rsv3.connect_to(tunnel3) tunnel3.connect_to(plant1) rsv1.start_level.set(93) rsv2.start_level.set(93) rsv3.start_level.set(97) rsv3.inflow.set(200) rsv1.energy_value_input.set(31.7) rsv2.energy_value_input.set(31.7) rsv3.energy_value_input.set(31.7) da=shop.model.market.add_object('1') da.sale_price.set(39.99) da.buy_price.set(40.01) da.max_sale.set(9999) da.max_buy.set(9999) def add_gate(shop): tunnel2=shop.model.tunnel["Tunnel2"] tunnel2.gate_opening_curve.set(pd.Series([0,1],index=[0,1])) tunnel2.continuous_gate.set(1) def run_model(shop): shop.start_sim([],['3']) shop.set_code(['inc'],[]) shop.start_sim([],['3'])