Closed MartaVanin closed 5 years ago
Hey Marta,
What do you mean with 'pg at the transformer'? case3_unbalanced.dss
does not contain a transformer. The relaxations have not been extended yet for transformers.
Greetings, Sander
The implemented SOC relaxations are not equivalent.
wr_i,j,p,q = Um_i,p*Um_j,q*cos(Ua_i,p - Ua_j,q)
and wi_i,j,p,q = Um_i,p*Um_j,q*sin(Ua_i,p - Ua_j,q)
, w_i,p,q = Um_i,p*Um_i,q
which satisfies (wr_i,j,p,q)^2 + (wi_i,j,p,q)^2 <= w_i,p,q*w_j,p,q
. (double check the indices if you'd use this).Because the implemented SOCWRPowerModel only considers at the diagonal of S_ij, a lot of structure is lost, therefore the relaxation is much weaker. A better BIM SOC relaxation (equivalent to the above BFM) can be developed, by starting from the unbalanced SDP BIM (e.g. the matrix form as published by Gan and Low '14) and then relaxing to the complex-value SDP constraints to SOCs.
As you may have noticed, solving polynomial equivalent of SOCConicUBFPowerModel, i.e. SOCNLPUBFPowerModel, with Ipopt is tricky. You may need to play with the baseMVA and Ipopt setting to obtain reliable results. Some old results (won't run if you have JuMP 0.19):
Basemva = 0.1, IpoptSolver()
run_tp_opf_bf("./test/data/opendss/case3_unbalanced.dss", SOCNLPUBFPowerModel, ipopt)
0.0211792
Basemva = 0.5, IpoptSolver()
run_tp_opf_bf("./test/data/opendss/case3_unbalanced.dss", SOCNLPUBFPowerModel, ipopt)
0.0211278
Basemva = 1.0, IpoptSolver()
run_tp_opf_bf("./test/data/opendss/case3_unbalanced.dss", SOCNLPUBFPowerModel, ipopt)
0.0206002
Basemva = 1.0, IpoptSolver(bound_relax_factor=1e-10)
run_tp_opf_bf("./test/data/opendss/case3_unbalanced.dss", SOCNLPUBFPowerModel, ipopt)
0.0211708
Basemva = 5.0, IpoptSolver(bound_relax_factor=1e-10)
run_tp_opf_bf("./test/data/opendss/case3_unbalanced.dss", SOCNLPUBFPowerModel, ipopt)
0.0191603
Basemva = 5.0, IpoptSolver(bound_relax_factor=1e-12)
run_tp_opf_bf("./test/data/opendss/case3_unbalanced.dss", SOCNLPUBFPowerModel, ipopt)
0.0211278
Basemva = 10.0, IpoptSolver(bound_relax_factor=1e-12)
run_tp_opf_bf("./test/data/opendss/case3_unbalanced.dss", SOCNLPUBFPowerModel, ipopt)
0.02060
Does this help? Other than updating the documentation to clarify this, should we close the issue?
Thank you and sorry, I thought they were mathematically equivalent formulations. I'll close the issue :)
Hello all, I was trying to run an OPF with the SOCWR formulation and obtained unexpected results:
`` using PowerModels using ThreePhasePowerModels using InfrastructureModels using Ipopt using JuMP using Mosek
data = ThreePhasePowerModels.parse_file(".\test\data\opendss\case3_unbalanced.dss")
result_ACOPF = run_tp_opf(data, ACPPowerModel, IpoptSolver()) result_SOCOPF = run_tp_opf(data, SOCWRPowerModel, IpoptSolver()) result_SOCOPF_conic = run_tp_opf_bf(data, SOCConicUBFPowerModel, MosekSolver())
print(result_ACOPF["objective"]) print("\n") print(result_SOCOPF["objective"]) print("\n") print(result_SOCOPF_conic["objective"])
result_ACOPF_obj = 0.021481101490431413 result_SOCOPF_obj = -2.851668441519614 result_SOCOPF_conic_obj = 0.02117942578643128