After discussion with Chandra today, we identified a couple of issues that cause power flow using Ipopt to be unreliable / struggle to converge.
DC voltage variable should have a sign that is known a priori. in PMACDC the sign is always positive (negative exists in the multiconductor case). Even if bounded=false, the zero lower (or upper bound) needs to be added/enforced in
|
function variable_dcgrid_voltage_magnitude(pm::_PM.AbstractPowerModel; nw::Int=_PM.nw_id_default, bounded::Bool = true, report::Bool=true) |
Similarly, in
|
function constraint_converter_losses(pm::_PM.AbstractACPModel, n::Int, i::Int, a, b, c, plmax) |
it is essentially assumed that
iconv_ac is positive, per,
|
function variable_acside_current(pm::_PM.AbstractPowerModel; nw::Int=_PM.nw_id_default, bounded::Bool = true, report::Bool=true) |
Dropping the zero lower/upper bound leads to symmetries and bad convergence for power flow simulation
After discussion with Chandra today, we identified a couple of issues that cause power flow using Ipopt to be unreliable / struggle to converge.
DC voltage variable should have a sign that is known a priori. in PMACDC the sign is always positive (negative exists in the multiconductor case). Even if bounded=false, the zero lower (or upper bound) needs to be added/enforced in
PowerModelsACDC.jl/src/core/variabledcgrid.jl
Line 8 in a88fce2
Similarly, in
PowerModelsACDC.jl/src/formconv/acp.jl
Line 7 in a88fce2
it is essentially assumed that
iconv_acis positive, per,PowerModelsACDC.jl/src/core/variableconv.jl
Line 202 in a88fce2
Dropping the zero lower/upper bound leads to symmetries and bad convergence for power flow simulation