Hi! New to PM/PMD and currently trying to figure out the OPF with a storage model, unfortunately I’m getting pretty stumped by the results dictionary.
I attempted adding storage with the following:
case_file = "../PowerModelsDistribution.jl/examples/resources/lvtestcase_notrans.dss"
data_eng = PMD.parse_file(case_file, transformations=[PMD.remove_all_bounds!])
data_eng["storage"][string(e)] = Dict{String, Any}(
"status"=>PMD.ENABLED,
"bus"=>bus_e[e],
"connections"=>[phase_e[e], 4],
"configurations"=>PMD.WYE,
"energy"=>50,
"qs_ub"=>10,
"qs_lb"=>-10,
"energy_ub"=>100,
"charge_ub"=>20,
"discharge_ub"=>20,
"charge_efficiency"=>0.97,
"discharge_efficiency"=>0.95,
"rs"=>1,
"xs"=>1,
"pex"=>0.1,
"qex"=>0.1,
"cm_ub"=>10,
"sm_ub"=>20,
"dispatchable"=>Dispatchable
)
res = solve_mc_opf(data_eng, ACPUPowerModel, Ipopt.Optimizer, setting=Dict("output"=>Dict("duals"=>true)))
However the output I’m getting from res["solution"]["storage"][string(e)]
doesn’t make sense to me. I can guess that ps is the real power from the storage device, qs the reactive power but I have no idea how to parse se, sd, sc, qsc, etc. My guess was originally that se was stored energy but in that case the values (kWh) and (kW from ps) don’t align.
I would greatly appreciate any pointers towards docs that cover this if they exist.
Tacking on another topic since we’re here: any documentation on the connections? I assume it’s [phase,neutral]?