diff --git a/Project.toml b/Project.toml index 10a60b6..214e5ff 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "PandaModels" uuid = "2dbab86a-7cbf-476f-9afe-75ffd3079e7c" authors = ["e2nIEE"] -version = "0.7.2" +version = "0.7.3" [deps] Cbc = "9961bab8-2fa3-5c5a-9d89-47fab24efd76" diff --git a/src/PandaModels.jl b/src/PandaModels.jl index 3e5359e..80b580d 100644 --- a/src/PandaModels.jl +++ b/src/PandaModels.jl @@ -28,6 +28,7 @@ export run_powermodels_pf, run_powermodels_multi_storage, run_pandamodels_multi_vstab, run_pandamodels_qflex, + run_pandamodels_pflex, run_pandamodels_multi_qflex, run_pandamodels_ploss, run_pandamodels_vstab_test, @@ -39,6 +40,7 @@ include("input/pp_to_pm.jl") include("input/tools.jl") include("models/vstab.jl") include("models/qflex.jl") +include("models/pflex.jl") include("models/ploss.jl") include("models/call_pandamodels.jl") include("models/call_powermodels.jl") diff --git a/src/models/call_pandamodels.jl b/src/models/call_pandamodels.jl index cc03f53..d4f618d 100644 --- a/src/models/call_pandamodels.jl +++ b/src/models/call_pandamodels.jl @@ -50,6 +50,24 @@ function run_pandamodels_qflex(json_path) return result end +function run_pandamodels_pflex(json_path) + pm = load_pm_from_json(json_path) + active_powermodels_silence!(pm) + pm = check_powermodels_data!(pm) + model = get_model(pm["pm_model"]) + solver = get_solver(pm) + + result = _run_pflex( + pm, + model, + solver, + setting = Dict("output" => Dict("branch_flows" => true)), + ext = extract_params!(pm), + ) + return result +end + + function run_pandamodels_multi_qflex(json_path) pm = load_pm_from_json(json_path) active_powermodels_silence!(pm) diff --git a/src/models/pflex.jl b/src/models/pflex.jl new file mode 100644 index 0000000..6aec026 --- /dev/null +++ b/src/models/pflex.jl @@ -0,0 +1,118 @@ +export _run_pflex, _run_multi_pflex + +""" +run optimization for maintaining power setpoints +""" + +function _run_pflex(file, model_type::_PM.Type, optimizer; kwargs...) + return _PM.solve_model(file, model_type, optimizer, _build_pflex; kwargs...) +end + +""" +give a JuMP model with PowerModels network data structur and build opitmization model +""" + +function _build_pflex(pm::_PM.AbstractPowerModel) + + _PM.variable_bus_voltage(pm) + _PM.variable_gen_power(pm) + _PM.variable_branch_power(pm) + _PM.variable_dcline_power(pm, bounded = false) # TODO: why false? + + objective_pflex(pm) + # println("pflex objective function:", JuMP.objective_function(pm.model)) + _PM.constraint_model_voltage(pm) + + for i in _PM.ids(pm, :ref_buses) + _PM.constraint_theta_ref(pm, i) + end + + for i in _PM.ids(pm, :bus) + _PM.constraint_power_balance(pm, i) + end + + for (i, branch) in _PM.ref(pm, :branch) + _PM.constraint_ohms_yt_from(pm, i) + _PM.constraint_ohms_yt_to(pm, i) + _PM.constraint_thermal_limit_from(pm, i) + _PM.constraint_thermal_limit_to(pm, i) + end + + for i in _PM.ids(pm, :dcline) + _PM.constraint_dcline_power_losses(pm, i) + end +end + +function objective_pflex(pm::_PM.AbstractPowerModel) + + if haskey(pm.ext, :obj_factors) + if length(pm.ext[:obj_factors]) == 2 + fac1 = pm.ext[:obj_factors]["fac_1"] + fac2 = pm.ext[:obj_factors]["fac_2"] + end + else + fac1 = 1.0 + fac2 = 0 + end + + return JuMP.@objective(pm.model, Min, + fac1 * sum((var(pm, :p, (content["element_index"], content["f_bus"], content["t_bus"])) - content["value"])^2 + for (i, content) in pm.ext[:setpoint_p]) + + + fac2 * sum((var(pm, :pg, content)-0)^2 for (i, content) in pm.ext[:gen_and_controllable_sgen])) +end + + +function _run_multi_pflex(file, model_type::_PM.Type, optimizer; kwargs...) + return _PM.solve_model(file, model_type, optimizer, _build_multi_pflex; multinetwork=true, kwargs...) +end + +""" +run multi-timestep optimization for maintaining power setpoints +""" + +function _build_multi_pflex(pm::_PM.AbstractPowerModel) + for (n, network) in _PM.nws(pm) + _PM.variable_bus_voltage(pm, nw=n) + _PM.variable_gen_power(pm, nw=n) + _PM.variable_branch_power(pm, nw=n) + _PM.variable_dcline_power(pm, nw=n) + + _PM.constraint_model_voltage(pm, nw=n) + + for i in ids(pm, :ref_buses, nw=n) + _PM.constraint_theta_ref(pm, i, nw=n) + end + + for i in ids(pm, :bus, nw=n) + _PM.constraint_power_balance(pm, i, nw=n) + end + + for i in ids(pm, :branch, nw=n) + _PM.constraint_ohms_yt_from(pm, i, nw=n) + _PM.constraint_ohms_yt_to(pm, i, nw=n) + + _PM.constraint_voltage_angle_difference(pm, i, nw=n) + + _PM.constraint_thermal_limit_from(pm, i, nw=n) + _PM.constraint_thermal_limit_to(pm, i, nw=n) + end + + for i in ids(pm, :dcline, nw=n) + _PM.constraint_dcline_power_losses(pm, i, nw=n) + end + end + + objective_multi_pflex(pm) + +end + + +function objective_multi_pflex(pm::_PM.AbstractPowerModel) + timestep_ids = [id for id in _PM.nw_ids(pm) if id != 0] + return JuMP.@objective(pm.model, Min, + sum( + sum((var(pm, nw, :p, (content["element_index"], content["f_bus"], content["t_bus"])) - content["value"])^2 for (i, content) in pm.ext[:setpoint_p]) + for nw in timestep_ids) + ) +end diff --git a/test/call_pandamodels.jl b/test/call_pandamodels.jl index 3189e55..2c528b5 100644 --- a/test/call_pandamodels.jl +++ b/test/call_pandamodels.jl @@ -39,6 +39,24 @@ @test result["solve_time"] > 0.0 end + @testset "case_pflex: cigre mv" begin + result = run_pandamodels_pflex(case_pflex) + pm = _PdM.load_pm_from_json(case_pflex) + params = _PdM.extract_params!(pm) + print(params[:setpoint_p]) + @test string(result["termination_status"]) == "LOCALLY_SOLVED" + @test string(result["dual_status"]) == "FEASIBLE_POINT" + @test string(result["primal_status"]) == "FEASIBLE_POINT" + + for (idx, br) in result["solution"]["branch"] + if idx in keys(params[:setpoint_p]) + @test isapprox(br["pf"], params[:setpoint_p][idx]["value"], atol=1e-1) + end + end + @test isapprox(result["objective_lb"], -Inf) + @test result["solve_time"] > 0.0 + end + @testset "case_multi_qflex: cigre mv" begin result = run_pandamodels_multi_qflex(case_multi_qflex) pm = _PdM.load_pm_from_json(case_multi_qflex) diff --git a/test/data/test_pflex.json b/test/data/test_pflex.json new file mode 100644 index 0000000..ca777a1 --- /dev/null +++ b/test/data/test_pflex.json @@ -0,0 +1,2650 @@ +{ + "ac": true, + "baseMVA": 1, + "branch": { + "1": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.026786049475940484, + "b_to": 0.026786049475940484, + "br_r": 0.00353205, + "br_status": 1, + "br_x": 0.005047799999999999, + "f_bus": 1, + "g_fr": -0.0, + "g_to": -0.0, + "index": 1, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 2, + "tap": 1.0, + "transformer": false + }, + "10": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.012348178836426464, + "b_to": 0.012348178836426464, + "br_r": 0.00162825, + "br_status": 1, + "br_x": 0.002327, + "f_bus": 3, + "g_fr": -0.0, + "g_to": -0.0, + "index": 10, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 8, + "tap": 1.0, + "transformer": false + }, + "11": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.002279663785186424, + "b_to": 0.002279663785186424, + "br_r": 0.0003006, + "br_status": 1, + "br_x": 0.0004296, + "f_bus": 6, + "g_fr": -0.0, + "g_to": -0.0, + "index": 11, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 42, + "tap": 1.0, + "transformer": false + }, + "12": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.004654313561422283, + "b_to": 0.004654313561422283, + "br_r": 0.000613725, + "br_status": 1, + "br_x": 0.0008771, + "f_bus": 11, + "g_fr": -0.0, + "g_to": -0.0, + "index": 12, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 43, + "tap": 1.0, + "transformer": false + }, + "13": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.026786049475940484, + "b_to": 0.026786049475940484, + "br_r": 0.00353205, + "br_status": 1, + "br_x": 0.005047799999999999, + "f_bus": 13, + "g_fr": -0.0, + "g_to": -0.0, + "index": 13, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 14, + "tap": 1.0, + "transformer": false + }, + "14": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.04198380804384998, + "b_to": 0.04198380804384998, + "br_r": 0.00553605, + "br_status": 1, + "br_x": 0.0079118, + "f_bus": 14, + "g_fr": -0.0, + "g_to": -0.0, + "index": 14, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 15, + "tap": 1.0, + "transformer": false + }, + "15": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.005794145454015495, + "b_to": 0.005794145454015495, + "br_r": 0.000764025, + "br_status": 1, + "br_x": 0.0010919, + "f_bus": 15, + "g_fr": -0.0, + "g_to": -0.0, + "index": 15, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 16, + "tap": 1.0, + "transformer": false + }, + "16": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.005319215498768324, + "b_to": 0.005319215498768324, + "br_r": 0.0007014, + "br_status": 1, + "br_x": 0.0010024, + "f_bus": 16, + "g_fr": -0.0, + "g_to": -0.0, + "index": 16, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 17, + "tap": 1.0, + "transformer": false + }, + "17": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.014627842621612888, + "b_to": 0.014627842621612888, + "br_r": 0.00192885, + "br_status": 1, + "br_x": 0.0027566, + "f_bus": 17, + "g_fr": -0.0, + "g_to": -0.0, + "index": 17, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 18, + "tap": 1.0, + "transformer": false + }, + "18": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.015862660505255536, + "b_to": 0.015862660505255536, + "br_r": 0.002091675, + "br_status": 1, + "br_x": 0.0029893, + "f_bus": 19, + "g_fr": -0.0, + "g_to": -0.0, + "index": 18, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 20, + "tap": 1.0, + "transformer": false + }, + "19": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.003039551713581899, + "b_to": 0.003039551713581899, + "br_r": 0.0004008, + "br_status": 1, + "br_x": 0.0005727999999999999, + "f_bus": 20, + "g_fr": -0.0, + "g_to": -0.0, + "index": 19, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 21, + "tap": 1.0, + "transformer": false + }, + "2": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.04198380804384998, + "b_to": 0.04198380804384998, + "br_r": 0.00553605, + "br_status": 1, + "br_x": 0.0079118, + "f_bus": 2, + "g_fr": -0.0, + "g_to": -0.0, + "index": 2, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 3, + "tap": 1.0, + "transformer": false + }, + "20": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.007313921310806444, + "b_to": 0.007313921310806444, + "br_r": 0.000964425, + "br_status": 1, + "br_x": 0.0013783, + "f_bus": 21, + "g_fr": -0.0, + "g_to": -0.0, + "index": 20, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 22, + "tap": 1.0, + "transformer": false + }, + "21": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0031345377046313335, + "b_to": 0.0031345377046313335, + "br_r": 0.00041332500000000003, + "br_status": 1, + "br_x": 0.0005907, + "f_bus": 22, + "g_fr": -0.0, + "g_to": -0.0, + "index": 21, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 23, + "tap": 1.0, + "transformer": false + }, + "22": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.012348178836426464, + "b_to": 0.012348178836426464, + "br_r": 0.00162825, + "br_status": 1, + "br_x": 0.002327, + "f_bus": 15, + "g_fr": -0.0, + "g_to": -0.0, + "index": 22, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 20, + "tap": 1.0, + "transformer": false + }, + "23": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.003102216126048443, + "b_to": 0.003102216126048443, + "br_r": 0.00623475, + "br_status": 1, + "br_x": 0.004474349999999999, + "f_bus": 24, + "g_fr": -0.0, + "g_to": -0.0, + "index": 23, + "rate_a": 6.754998149518621, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 25, + "tap": 1.0, + "transformer": false + }, + "24": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0018968560770725657, + "b_to": 0.0018968560770725657, + "br_r": 0.0038122500000000005, + "br_status": 1, + "br_x": 0.00273585, + "f_bus": 25, + "g_fr": -0.0, + "g_to": -0.0, + "index": 24, + "rate_a": 6.754998149518621, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 26, + "tap": 1.0, + "transformer": false + }, + "25": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.002279663785186424, + "b_to": 0.002279663785186424, + "br_r": 0.0003006, + "br_status": 1, + "br_x": 0.0004296, + "f_bus": 18, + "g_fr": -0.0, + "g_to": -0.0, + "index": 25, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 19, + "tap": 1.0, + "transformer": false + }, + "26": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.004654313561422283, + "b_to": 0.004654313561422283, + "br_r": 0.000613725, + "br_status": 1, + "br_x": 0.0008771, + "f_bus": 23, + "g_fr": -0.0, + "g_to": -0.0, + "index": 26, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 16, + "tap": 1.0, + "transformer": false + }, + "27": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0012688000515535555, + "b_to": 0.0012688000515535555, + "br_r": 0.00255, + "br_status": 1, + "br_x": 0.00183, + "f_bus": 26, + "g_fr": -0.0, + "g_to": -0.0, + "index": 27, + "rate_a": 6.754998149518621, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 20, + "tap": 1.0, + "transformer": false + }, + "28": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.026786049475940484, + "b_to": 0.026786049475940484, + "br_r": 0.00353205, + "br_status": 1, + "br_x": 0.005047799999999999, + "f_bus": 28, + "g_fr": -0.0, + "g_to": -0.0, + "index": 28, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 29, + "tap": 1.0, + "transformer": false + }, + "29": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.04198380804384998, + "b_to": 0.04198380804384998, + "br_r": 0.00553605, + "br_status": 1, + "br_x": 0.0079118, + "f_bus": 29, + "g_fr": -0.0, + "g_to": -0.0, + "index": 29, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 30, + "tap": 1.0, + "transformer": false + }, + "3": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.005794145454015495, + "b_to": 0.005794145454015495, + "br_r": 0.000764025, + "br_status": 1, + "br_x": 0.0010919, + "f_bus": 3, + "g_fr": -0.0, + "g_to": -0.0, + "index": 3, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 4, + "tap": 1.0, + "transformer": false + }, + "30": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.005794145454015495, + "b_to": 0.005794145454015495, + "br_r": 0.000764025, + "br_status": 1, + "br_x": 0.0010919, + "f_bus": 30, + "g_fr": -0.0, + "g_to": -0.0, + "index": 30, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 31, + "tap": 1.0, + "transformer": false + }, + "31": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.005319215498768324, + "b_to": 0.005319215498768324, + "br_r": 0.0007014, + "br_status": 1, + "br_x": 0.0010024, + "f_bus": 31, + "g_fr": -0.0, + "g_to": -0.0, + "index": 31, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 32, + "tap": 1.0, + "transformer": false + }, + "32": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.014627842621612888, + "b_to": 0.014627842621612888, + "br_r": 0.00192885, + "br_status": 1, + "br_x": 0.0027566, + "f_bus": 32, + "g_fr": -0.0, + "g_to": -0.0, + "index": 32, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 33, + "tap": 1.0, + "transformer": false + }, + "33": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.015862660505255536, + "b_to": 0.015862660505255536, + "br_r": 0.002091675, + "br_status": 1, + "br_x": 0.0029893, + "f_bus": 34, + "g_fr": -0.0, + "g_to": -0.0, + "index": 33, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 35, + "tap": 1.0, + "transformer": false + }, + "34": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.003039551713581899, + "b_to": 0.003039551713581899, + "br_r": 0.0004008, + "br_status": 1, + "br_x": 0.0005727999999999999, + "f_bus": 35, + "g_fr": -0.0, + "g_to": -0.0, + "index": 34, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 36, + "tap": 1.0, + "transformer": false + }, + "35": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.007313921310806444, + "b_to": 0.007313921310806444, + "br_r": 0.000964425, + "br_status": 1, + "br_x": 0.0013783, + "f_bus": 36, + "g_fr": -0.0, + "g_to": -0.0, + "index": 35, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 37, + "tap": 1.0, + "transformer": false + }, + "36": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0031345377046313335, + "b_to": 0.0031345377046313335, + "br_r": 0.00041332500000000003, + "br_status": 1, + "br_x": 0.0005907, + "f_bus": 37, + "g_fr": -0.0, + "g_to": -0.0, + "index": 36, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 38, + "tap": 1.0, + "transformer": false + }, + "37": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.012348178836426464, + "b_to": 0.012348178836426464, + "br_r": 0.00162825, + "br_status": 1, + "br_x": 0.002327, + "f_bus": 30, + "g_fr": -0.0, + "g_to": -0.0, + "index": 37, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 35, + "tap": 1.0, + "transformer": false + }, + "38": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.003102216126048443, + "b_to": 0.003102216126048443, + "br_r": 0.00623475, + "br_status": 1, + "br_x": 0.004474349999999999, + "f_bus": 39, + "g_fr": -0.0, + "g_to": -0.0, + "index": 38, + "rate_a": 6.754998149518621, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 40, + "tap": 1.0, + "transformer": false + }, + "39": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0018968560770725657, + "b_to": 0.0018968560770725657, + "br_r": 0.0038122500000000005, + "br_status": 1, + "br_x": 0.00273585, + "f_bus": 40, + "g_fr": -0.0, + "g_to": -0.0, + "index": 39, + "rate_a": 6.754998149518621, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 41, + "tap": 1.0, + "transformer": false + }, + "4": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.005319215498768324, + "b_to": 0.005319215498768324, + "br_r": 0.0007014, + "br_status": 1, + "br_x": 0.0010024, + "f_bus": 4, + "g_fr": -0.0, + "g_to": -0.0, + "index": 4, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 5, + "tap": 1.0, + "transformer": false + }, + "40": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.002279663785186424, + "b_to": 0.002279663785186424, + "br_r": 0.0003006, + "br_status": 1, + "br_x": 0.0004296, + "f_bus": 33, + "g_fr": -0.0, + "g_to": -0.0, + "index": 40, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 34, + "tap": 1.0, + "transformer": false + }, + "41": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.004654313561422283, + "b_to": 0.004654313561422283, + "br_r": 0.000613725, + "br_status": 1, + "br_x": 0.0008771, + "f_bus": 38, + "g_fr": -0.0, + "g_to": -0.0, + "index": 41, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 31, + "tap": 1.0, + "transformer": false + }, + "42": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0012688000515535555, + "b_to": 0.0012688000515535555, + "br_r": 0.00255, + "br_status": 1, + "br_x": 0.00183, + "f_bus": 41, + "g_fr": -0.0, + "g_to": -0.0, + "index": 42, + "rate_a": 6.754998149518621, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 35, + "tap": 1.0, + "transformer": false + }, + "43": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0, + "b_to": 0.0, + "br_r": 6.4e-05, + "br_status": 1, + "br_x": 0.004800001352414809, + "f_bus": 12, + "g_fr": -0.0, + "g_to": -0.0, + "index": 43, + "rate_a": 25.0, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.5235987755982988, + "t_bus": 1, + "tap": 1.0, + "transformer": true + }, + "44": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0, + "b_to": 0.0, + "br_r": 6.4e-05, + "br_status": 1, + "br_x": 0.004800001352414809, + "f_bus": 12, + "g_fr": -0.0, + "g_to": -0.0, + "index": 44, + "rate_a": 25.0, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.5235987755982988, + "t_bus": 13, + "tap": 1.0, + "transformer": true + }, + "45": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0, + "b_to": 0.0, + "br_r": 6.4e-05, + "br_status": 1, + "br_x": 0.004800001352414809, + "f_bus": 12, + "g_fr": -0.0, + "g_to": -0.0, + "index": 45, + "rate_a": 25.0, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.5235987755982988, + "t_bus": 24, + "tap": 1.0, + "transformer": true + }, + "46": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0, + "b_to": 0.0, + "br_r": 6.4e-05, + "br_status": 1, + "br_x": 0.004800001352414809, + "f_bus": 27, + "g_fr": -0.0, + "g_to": -0.0, + "index": 46, + "rate_a": 25.0, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.5235987755982988, + "t_bus": 28, + "tap": 1.0, + "transformer": true + }, + "47": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0, + "b_to": 0.0, + "br_r": 6.4e-05, + "br_status": 1, + "br_x": 0.004800001352414809, + "f_bus": 27, + "g_fr": -0.0, + "g_to": -0.0, + "index": 47, + "rate_a": 25.0, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.5235987755982988, + "t_bus": 39, + "tap": 1.0, + "transformer": true + }, + "5": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.014627842621612888, + "b_to": 0.014627842621612888, + "br_r": 0.00192885, + "br_status": 1, + "br_x": 0.0027566, + "f_bus": 5, + "g_fr": -0.0, + "g_to": -0.0, + "index": 5, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 6, + "tap": 1.0, + "transformer": false + }, + "6": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.015862660505255536, + "b_to": 0.015862660505255536, + "br_r": 0.002091675, + "br_status": 1, + "br_x": 0.0029893, + "f_bus": 7, + "g_fr": -0.0, + "g_to": -0.0, + "index": 6, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 8, + "tap": 1.0, + "transformer": false + }, + "7": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.003039551713581899, + "b_to": 0.003039551713581899, + "br_r": 0.0004008, + "br_status": 1, + "br_x": 0.0005727999999999999, + "f_bus": 8, + "g_fr": -0.0, + "g_to": -0.0, + "index": 7, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 9, + "tap": 1.0, + "transformer": false + }, + "8": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.007313921310806444, + "b_to": 0.007313921310806444, + "br_r": 0.000964425, + "br_status": 1, + "br_x": 0.0013783, + "f_bus": 9, + "g_fr": -0.0, + "g_to": -0.0, + "index": 8, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 10, + "tap": 1.0, + "transformer": false + }, + "9": { + "angmax": 1.0471975511965976, + "angmin": -1.0471975511965976, + "b_fr": 0.0031345377046313335, + "b_to": 0.0031345377046313335, + "br_r": 0.00041332500000000003, + "br_status": 1, + "br_x": 0.0005907, + "f_bus": 10, + "g_fr": -0.0, + "g_to": -0.0, + "index": 9, + "rate_a": 5.0229473419497435, + "rate_b": 250.0, + "rate_c": 250.0, + "shift": 0.0, + "t_bus": 11, + "tap": 1.0, + "transformer": false + } + }, + "bus": { + "1": { + "base_kv": 20.0, + "bus_i": 1, + "bus_type": 1, + "index": 1, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "10": { + "base_kv": 20.0, + "bus_i": 10, + "bus_type": 1, + "index": 10, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "11": { + "base_kv": 20.0, + "bus_i": 11, + "bus_type": 1, + "index": 11, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "12": { + "base_kv": 110.0, + "bus_i": 12, + "bus_type": 3, + "index": 12, + "va": 0.0, + "vm": 1.03, + "vmax": 1.03000001, + "vmin": 1.02999999, + "zone": 1 + }, + "13": { + "base_kv": 20.0, + "bus_i": 13, + "bus_type": 1, + "index": 13, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "14": { + "base_kv": 20.0, + "bus_i": 14, + "bus_type": 1, + "index": 14, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "15": { + "base_kv": 20.0, + "bus_i": 15, + "bus_type": 1, + "index": 15, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "16": { + "base_kv": 20.0, + "bus_i": 16, + "bus_type": 1, + "index": 16, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "17": { + "base_kv": 20.0, + "bus_i": 17, + "bus_type": 1, + "index": 17, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "18": { + "base_kv": 20.0, + "bus_i": 18, + "bus_type": 1, + "index": 18, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "19": { + "base_kv": 20.0, + "bus_i": 19, + "bus_type": 1, + "index": 19, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "2": { + "base_kv": 20.0, + "bus_i": 2, + "bus_type": 1, + "index": 2, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "20": { + "base_kv": 20.0, + "bus_i": 20, + "bus_type": 1, + "index": 20, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "21": { + "base_kv": 20.0, + "bus_i": 21, + "bus_type": 1, + "index": 21, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "22": { + "base_kv": 20.0, + "bus_i": 22, + "bus_type": 1, + "index": 22, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "23": { + "base_kv": 20.0, + "bus_i": 23, + "bus_type": 1, + "index": 23, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "24": { + "base_kv": 20.0, + "bus_i": 24, + "bus_type": 1, + "index": 24, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "25": { + "base_kv": 20.0, + "bus_i": 25, + "bus_type": 1, + "index": 25, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "26": { + "base_kv": 20.0, + "bus_i": 26, + "bus_type": 1, + "index": 26, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "27": { + "base_kv": 110.0, + "bus_i": 27, + "bus_type": 3, + "index": 27, + "va": 0.0, + "vm": 1.03, + "vmax": 1.03000001, + "vmin": 1.02999999, + "zone": 1 + }, + "28": { + "base_kv": 20.0, + "bus_i": 28, + "bus_type": 1, + "index": 28, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "29": { + "base_kv": 20.0, + "bus_i": 29, + "bus_type": 1, + "index": 29, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "3": { + "base_kv": 20.0, + "bus_i": 3, + "bus_type": 1, + "index": 3, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "30": { + "base_kv": 20.0, + "bus_i": 30, + "bus_type": 1, + "index": 30, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "31": { + "base_kv": 20.0, + "bus_i": 31, + "bus_type": 1, + "index": 31, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "32": { + "base_kv": 20.0, + "bus_i": 32, + "bus_type": 1, + "index": 32, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "33": { + "base_kv": 20.0, + "bus_i": 33, + "bus_type": 1, + "index": 33, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "34": { + "base_kv": 20.0, + "bus_i": 34, + "bus_type": 1, + "index": 34, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "35": { + "base_kv": 20.0, + "bus_i": 35, + "bus_type": 1, + "index": 35, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "36": { + "base_kv": 20.0, + "bus_i": 36, + "bus_type": 1, + "index": 36, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "37": { + "base_kv": 20.0, + "bus_i": 37, + "bus_type": 1, + "index": 37, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "38": { + "base_kv": 20.0, + "bus_i": 38, + "bus_type": 1, + "index": 38, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "39": { + "base_kv": 20.0, + "bus_i": 39, + "bus_type": 1, + "index": 39, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "4": { + "base_kv": 20.0, + "bus_i": 4, + "bus_type": 1, + "index": 4, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "40": { + "base_kv": 20.0, + "bus_i": 40, + "bus_type": 1, + "index": 40, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "41": { + "base_kv": 20.0, + "bus_i": 41, + "bus_type": 1, + "index": 41, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "42": { + "base_kv": 20.0, + "bus_i": 42, + "bus_type": 1, + "index": 42, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "43": { + "base_kv": 20.0, + "bus_i": 43, + "bus_type": 1, + "index": 43, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "5": { + "base_kv": 20.0, + "bus_i": 5, + "bus_type": 1, + "index": 5, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "6": { + "base_kv": 20.0, + "bus_i": 6, + "bus_type": 1, + "index": 6, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "7": { + "base_kv": 20.0, + "bus_i": 7, + "bus_type": 1, + "index": 7, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "8": { + "base_kv": 20.0, + "bus_i": 8, + "bus_type": 1, + "index": 8, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + }, + "9": { + "base_kv": 20.0, + "bus_i": 9, + "bus_type": 1, + "index": 9, + "va": 0.0, + "vm": 1.0, + "vmax": 1.1, + "vmin": 0.9, + "zone": 1 + } + }, + "correct_pm_network_data": true, + "dcline": {}, + "gen": { + "1": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 12, + "gen_status": 1, + "index": 1, + "model": 2, + "ncost": 3, + "pg": 0.0, + "pmax": 10000.00000001, + "pmin": -10000.00000001, + "qg": 0.0, + "qmax": 10000.00000001, + "qmin": -10000.00000001, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.03 + }, + "10": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 11, + "gen_status": 1, + "index": 10, + "model": 2, + "ncost": 3, + "pg": 0.01, + "pmax": 0.01000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "11": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 7, + "gen_status": 1, + "index": 11, + "model": 2, + "ncost": 3, + "pg": 1.5, + "pmax": 1.50000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "12": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 5, + "gen_status": 1, + "index": 12, + "model": 2, + "ncost": 3, + "pg": 0.033, + "pmax": 0.03300001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "13": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 9, + "gen_status": 1, + "index": 13, + "model": 2, + "ncost": 3, + "pg": 0.31, + "pmax": 0.31000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "14": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 9, + "gen_status": 1, + "index": 14, + "model": 2, + "ncost": 3, + "pg": 0.212, + "pmax": 0.21200001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "15": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 10, + "gen_status": 1, + "index": 15, + "model": 2, + "ncost": 3, + "pg": 0.014, + "pmax": 0.01400001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "16": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 15, + "gen_status": 1, + "index": 16, + "model": 2, + "ncost": 3, + "pg": 0.02, + "pmax": 0.020000010000000002, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "17": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 16, + "gen_status": 1, + "index": 17, + "model": 2, + "ncost": 3, + "pg": 0.02, + "pmax": 0.020000010000000002, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "18": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 17, + "gen_status": 1, + "index": 18, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "19": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 18, + "gen_status": 1, + "index": 19, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "2": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 27, + "gen_status": 1, + "index": 2, + "model": 2, + "ncost": 3, + "pg": 0.0, + "pmax": 10000.00000001, + "pmin": -10000.00000001, + "qg": 0.0, + "qmax": 10000.00000001, + "qmin": -10000.00000001, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.03 + }, + "20": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 20, + "gen_status": 1, + "index": 20, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "21": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 21, + "gen_status": 1, + "index": 21, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "22": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 22, + "gen_status": 1, + "index": 22, + "model": 2, + "ncost": 3, + "pg": 0.04, + "pmax": 0.04000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "23": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 23, + "gen_status": 1, + "index": 23, + "model": 2, + "ncost": 3, + "pg": 0.01, + "pmax": 0.01000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "24": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 19, + "gen_status": 1, + "index": 24, + "model": 2, + "ncost": 3, + "pg": 1.5, + "pmax": 1.50000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "25": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 30, + "gen_status": 1, + "index": 25, + "model": 2, + "ncost": 3, + "pg": 0.02, + "pmax": 0.020000010000000002, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "26": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 31, + "gen_status": 1, + "index": 26, + "model": 2, + "ncost": 3, + "pg": 0.02, + "pmax": 0.020000010000000002, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "27": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 32, + "gen_status": 1, + "index": 27, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "28": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 33, + "gen_status": 1, + "index": 28, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "29": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 35, + "gen_status": 1, + "index": 29, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "3": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 3, + "gen_status": 1, + "index": 3, + "model": 2, + "ncost": 3, + "pg": 0.02, + "pmax": 0.020000010000000002, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "30": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 36, + "gen_status": 1, + "index": 30, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "31": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 37, + "gen_status": 1, + "index": 31, + "model": 2, + "ncost": 3, + "pg": 0.04, + "pmax": 0.04000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "32": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 38, + "gen_status": 1, + "index": 32, + "model": 2, + "ncost": 3, + "pg": 0.01, + "pmax": 0.01000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "33": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 34, + "gen_status": 1, + "index": 33, + "model": 2, + "ncost": 3, + "pg": 1.5, + "pmax": 1.50000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "34": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 32, + "gen_status": 1, + "index": 34, + "model": 2, + "ncost": 3, + "pg": 0.033, + "pmax": 0.03300001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "35": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 36, + "gen_status": 1, + "index": 35, + "model": 2, + "ncost": 3, + "pg": 0.31, + "pmax": 0.31000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "36": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 36, + "gen_status": 1, + "index": 36, + "model": 2, + "ncost": 3, + "pg": 0.212, + "pmax": 0.21200001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "37": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 37, + "gen_status": 1, + "index": 37, + "model": 2, + "ncost": 3, + "pg": 0.014, + "pmax": 0.01400001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "4": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 4, + "gen_status": 1, + "index": 4, + "model": 2, + "ncost": 3, + "pg": 0.02, + "pmax": 0.020000010000000002, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "5": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 5, + "gen_status": 1, + "index": 5, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "6": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 6, + "gen_status": 1, + "index": 6, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "7": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 8, + "gen_status": 1, + "index": 7, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "8": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 9, + "gen_status": 1, + "index": 8, + "model": 2, + "ncost": 3, + "pg": 0.03, + "pmax": 0.03000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + }, + "9": { + "cost": [ + 0, + 1.0, + 0.0 + ], + "gen_bus": 10, + "gen_status": 1, + "index": 9, + "model": 2, + "ncost": 3, + "pg": 0.04, + "pmax": 0.04000001, + "pmin": -1e-08, + "qg": 0.0, + "qmax": 1e-08, + "qmin": -1e-08, + "shutdown": 0.0, + "startup": 0.0, + "vg": 1.0 + } + }, + "load": { + "1": { + "index": 1, + "load_bus": 1, + "pd": 14.994, + "qd": 3.044661557546264, + "status": 1 + }, + "10": { + "index": 10, + "load_bus": 3, + "pd": 0.22525, + "qd": 0.139597412225299, + "status": 1 + }, + "11": { + "index": 11, + "load_bus": 7, + "pd": 0.0765, + "qd": 0.047410441887837, + "status": 1 + }, + "12": { + "index": 12, + "load_bus": 9, + "pd": 0.57375, + "qd": 0.35557831415878, + "status": 1 + }, + "13": { + "index": 13, + "load_bus": 10, + "pd": 0.068, + "qd": 0.042142615011411, + "status": 1 + }, + "14": { + "index": 14, + "load_bus": 13, + "pd": 14.994, + "qd": 3.044661557546264, + "status": 1 + }, + "15": { + "index": 15, + "load_bus": 15, + "pd": 0.27645, + "qd": 0.069284900952516, + "status": 1 + }, + "16": { + "index": 16, + "load_bus": 16, + "pd": 0.43165, + "qd": 0.108181687452175, + "status": 1 + }, + "17": { + "index": 17, + "load_bus": 17, + "pd": 0.7275, + "qd": 0.182328686717148, + "status": 1 + }, + "18": { + "index": 18, + "load_bus": 18, + "pd": 0.54805, + "qd": 0.137354277326918, + "status": 1 + }, + "19": { + "index": 19, + "load_bus": 20, + "pd": 0.58685, + "qd": 0.147078473951833, + "status": 1 + }, + "2": { + "index": 2, + "load_bus": 3, + "pd": 0.27645, + "qd": 0.069284900952516, + "status": 1 + }, + "20": { + "index": 20, + "load_bus": 22, + "pd": 0.4753, + "qd": 0.119121408655203, + "status": 1 + }, + "21": { + "index": 21, + "load_bus": 23, + "pd": 0.3298, + "qd": 0.082655671311774, + "status": 1 + }, + "22": { + "index": 22, + "load_bus": 24, + "pd": 14.994, + "qd": 3.044661557546264, + "status": 1 + }, + "23": { + "index": 23, + "load_bus": 26, + "pd": 0.20855, + "qd": 0.052267556858916, + "status": 1 + }, + "24": { + "index": 24, + "load_bus": 13, + "pd": 4.845, + "qd": 1.592474489591592, + "status": 1 + }, + "25": { + "index": 25, + "load_bus": 15, + "pd": 0.22525, + "qd": 0.139597412225299, + "status": 1 + }, + "26": { + "index": 26, + "load_bus": 19, + "pd": 0.0765, + "qd": 0.047410441887837, + "status": 1 + }, + "27": { + "index": 27, + "load_bus": 21, + "pd": 0.57375, + "qd": 0.35557831415878, + "status": 1 + }, + "28": { + "index": 28, + "load_bus": 22, + "pd": 0.068, + "qd": 0.042142615011411, + "status": 1 + }, + "29": { + "index": 29, + "load_bus": 24, + "pd": 5.016, + "qd": 1.648679471577178, + "status": 1 + }, + "3": { + "index": 3, + "load_bus": 4, + "pd": 0.43165, + "qd": 0.108181687452175, + "status": 1 + }, + "30": { + "index": 30, + "load_bus": 25, + "pd": 0.034, + "qd": 0.021071307505705, + "status": 1 + }, + "31": { + "index": 31, + "load_bus": 26, + "pd": 0.3315, + "qd": 0.205445248180628, + "status": 1 + }, + "32": { + "index": 32, + "load_bus": 28, + "pd": 14.994, + "qd": 3.044661557546264, + "status": 1 + }, + "33": { + "index": 33, + "load_bus": 30, + "pd": 0.27645, + "qd": 0.069284900952516, + "status": 1 + }, + "34": { + "index": 34, + "load_bus": 31, + "pd": 0.43165, + "qd": 0.108181687452175, + "status": 1 + }, + "35": { + "index": 35, + "load_bus": 32, + "pd": 0.7275, + "qd": 0.182328686717148, + "status": 1 + }, + "36": { + "index": 36, + "load_bus": 33, + "pd": 0.54805, + "qd": 0.137354277326918, + "status": 1 + }, + "37": { + "index": 37, + "load_bus": 35, + "pd": 0.58685, + "qd": 0.147078473951833, + "status": 1 + }, + "38": { + "index": 38, + "load_bus": 37, + "pd": 0.4753, + "qd": 0.119121408655203, + "status": 1 + }, + "39": { + "index": 39, + "load_bus": 38, + "pd": 0.3298, + "qd": 0.082655671311774, + "status": 1 + }, + "4": { + "index": 4, + "load_bus": 5, + "pd": 0.7275, + "qd": 0.182328686717148, + "status": 1 + }, + "40": { + "index": 40, + "load_bus": 39, + "pd": 14.994, + "qd": 3.044661557546264, + "status": 1 + }, + "41": { + "index": 41, + "load_bus": 41, + "pd": 0.20855, + "qd": 0.052267556858916, + "status": 1 + }, + "42": { + "index": 42, + "load_bus": 28, + "pd": 4.845, + "qd": 1.592474489591592, + "status": 1 + }, + "43": { + "index": 43, + "load_bus": 30, + "pd": 0.22525, + "qd": 0.139597412225299, + "status": 1 + }, + "44": { + "index": 44, + "load_bus": 34, + "pd": 0.0765, + "qd": 0.047410441887837, + "status": 1 + }, + "45": { + "index": 45, + "load_bus": 36, + "pd": 0.57375, + "qd": 0.35557831415878, + "status": 1 + }, + "46": { + "index": 46, + "load_bus": 37, + "pd": 0.068, + "qd": 0.042142615011411, + "status": 1 + }, + "47": { + "index": 47, + "load_bus": 39, + "pd": 5.016, + "qd": 1.648679471577178, + "status": 1 + }, + "48": { + "index": 48, + "load_bus": 40, + "pd": 0.034, + "qd": 0.021071307505705, + "status": 1 + }, + "49": { + "index": 49, + "load_bus": 41, + "pd": 0.3315, + "qd": 0.205445248180628, + "status": 1 + }, + "5": { + "index": 5, + "load_bus": 6, + "pd": 0.54805, + "qd": 0.137354277326918, + "status": 1 + }, + "50": { + "index": 50, + "load_bus": 5, + "pd": 0.6, + "qd": 0.0, + "status": 1 + }, + "51": { + "index": 51, + "load_bus": 10, + "pd": 0.2, + "qd": 0.0, + "status": 1 + }, + "52": { + "index": 52, + "load_bus": 32, + "pd": 0.6, + "qd": 0.0, + "status": 1 + }, + "53": { + "index": 53, + "load_bus": 37, + "pd": 0.2, + "qd": 0.0, + "status": 1 + }, + "6": { + "index": 6, + "load_bus": 8, + "pd": 0.58685, + "qd": 0.147078473951833, + "status": 1 + }, + "7": { + "index": 7, + "load_bus": 10, + "pd": 0.4753, + "qd": 0.119121408655203, + "status": 1 + }, + "8": { + "index": 8, + "load_bus": 11, + "pd": 0.3298, + "qd": 0.082655671311774, + "status": 1 + }, + "9": { + "index": 9, + "load_bus": 1, + "pd": 4.845, + "qd": 1.592474489591592, + "status": 1 + } + }, + "name": "", + "ne_branch": {}, + "per_unit": true, + "pm_log_level": 0, + "pm_mip_solver": "cbc", + "pm_mip_time_limit": Infinity, + "pm_model": "ACPPowerModel", + "pm_nl_solver": "ipopt", + "pm_nl_time_limit": Infinity, + "pm_solver": "ipopt", + "pm_time_limit": Infinity, + "pm_tol": 1e-08, + "shunt": {}, + "silence": true, + "source_version": "2.0.0", + "sourcetype": "matpower", + "storage": {}, + "switch": {}, + "user_defined_params": { + "gen_and_controllable_sgen": { + "10": 10, + "11": 11, + "12": 12, + "13": 13, + "14": 14, + "15": 15, + "16": 16, + "17": 17, + "18": 18, + "19": 19, + "20": 20, + "21": 21, + "22": 22, + "23": 23, + "24": 24, + "25": 25, + "26": 26, + "27": 27, + "28": 28, + "29": 29, + "3": 3, + "30": 30, + "31": 31, + "32": 32, + "33": 33, + "34": 34, + "35": 35, + "36": 36, + "37": 37, + "4": 4, + "5": 5, + "6": 6, + "7": 7, + "8": 8, + "9": 9 + }, + "setpoint_p": { + "0": { + "element": "trafo", + "element_index": 43, + "element_pp_index": 0, + "f_bus": 1, + "t_bus": 12, + "value": -22.9 + } + }, + "side": { + "0": { + "element": "trafo", + "element_index": 43, + "element_pp_index": 0, + "value": "lv" + } + } + } +} \ No newline at end of file diff --git a/test/runtests.jl b/test/runtests.jl index 5ca8090..59453c7 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -30,6 +30,8 @@ case_loading = joinpath(data_path, "test_loading.json") case_multi_vstab = joinpath(data_path, "cigre_with_timeseries.json") case_multi_qflex = joinpath(data_path, "test_mn_qflex.json") case_multi_storage = joinpath(data_path, "test_mn_storage.json") +case_pflex = joinpath(data_path, "test_pflex.json") + @testset "PandaModels.jl" begin