title : Example Case 3 - Year Planning author : Andrew Rosemberg date : 20th Feb 2019 –-
This an example of the HydroPowerModels package for solving a simple stochastic case with the following specifications:
3 Buses
3 Lines
2 Generators
1 Reservoir and Hydrogenerator
3 Scenarios
12 Stages
SOC Formulation
using ECOS using HydroPowerModels
if !@isdefined plot_bool plot_bool = true end using Random seed = 1221
Data
alldata = HydroPowerModels.parse_folder(joinpath(WEAVE_ARGS[:testcases_dir], "case3"));
Plot power grid graph
if plot_bool == true Random.seed!(seed) HydroPowerModels.plot_grid(alldata[1]; node_label=false) end
ERROR: UndefVarError: `plot_grid` not defined
Parameters
params = create_param(; stages=12, model_constructor_grid=SOCWRConicPowerModel, post_method=PowerModels.build_opf, optimizer=ECOS.Optimizer, )
Dict{Any, Any} with 12 entries: "optimizer" => Optimizer "discount_factor" => 1.0 "post_method" => build_opf "setting" => Dict{String, Dict{String, Bool}}("ou tput… "stage_hours" => 1 "model_constructor_grid" => SOCWRConicPowerModel "stages" => 12 "optimizer_backward" => Optimizer "model_constructor_grid_forward" => SOCWRConicPowerModel "verbose" => false "optimizer_forward" => Optimizer "model_constructor_grid_backward" => SOCWRConicPowerModel
m = hydrothermaloperation(alldata, params);
start_time = time() HydroPowerModels.train( m; iteration_limit=100, stopping_rules=[SDDP.Statistical(; num_replications=20, iteration_period=20)], ) end_time = time() - start_time
Termination Status and solve time (s)
(SDDP.termination_status(m.policygraph), end_time)
ERROR: UndefVarError: `m` not defined
Bounds
if plot_bool == true HydroPowerModels.plot_bound(m) end
ERROR: UndefVarError: `plot_bound` not defined
using Random: Random Random.seed!(seed) results = HydroPowerModels.simulate(m, 100);
using Test
Bound
@test isapprox(SDDP.calculate_bound(m.policygraph), 11637.76, atol=10)
Number of Simulations
@test length(results[:simulations]) == 100
if plot_bool == true HydroPowerModels.plot_aggregated_results(results) end
ERROR: UndefVarError: `plot_aggregated_results` not defined
if plot_bool == true PowerModels.print_summary(alldata[1]["powersystem"]) end
Metadata baseMVA: 100 cost_deficit: 1000 name: case3 per_unit: true source_type: matpower source_version: 2 Table Counts bus: 3 load: 3 shunt: 0 gen: 3 storage: 0 switch: 0 branch: 3 dcline: 0 Table: bus bus_i, bus_type 1: 1, 3 2: 2, 2 3: 3, 2 default values: base_kv: 0 vm: 1 va: 0 vmin: 0.900 vmax: 1.100 area: 1 zone: 1 Table: load load_bus, pd, qd 1: 3, 1, 0 2: 1, 0, 0.000 3: 2, 0, 0.000 default values: status: 1 Table: gen gen_bus, pmax, ncost, cost 1: 2, 1, 2, [(2)] 2: 3, 0.500, 2, [(2)] 3: 1, 0.800, 0, [(0)] default values: pg: 0 qg: 0 vg: 1 mbase: 100 pmin: 0 qmin: -100 qmax: 100 gen_status: 1 model: 2 startup: 0 shutdown: 0 apf: 0 pc1: 0 pc2: 0 qc1max: 0 qc1min: 0 qc2max: 0 qc2min: 0 ramp_10: 0 ramp_30: 0 ramp_agc: 0 ramp_q: 0 Table: branch f_bus, t_bus, br_r, br_x, b_fr, b_to, rate_a 1: 1, 3, 0.065, 1, 0.225, 0.225, 1 2: 3, 2, 0.025, 0.500, 0.350, 0.350, 0.650 3: 1, 2, 0.042, 1, 0.150, 0.150, 0.250 default values: g_fr: 0 g_to: 0 tap: 1 shift: 0 br_status: 1 angmax: 1.047 angmin: -1.047 transformer: false
if plot_bool == true HydroPowerModels.plotresults(results) end
ERROR: UndefVarError: `plotresults` not defined