Different objective function value given by ipopt and YALMIP

47 views
Skip to first unread message

KosMy

unread,
Apr 7, 2020, 2:40:33 AM4/7/20
to YALMIP
I have a problem when I am trying to solve an optimization problem with IPOPT. The output of IPOPT shows a value for the objective function, but when I try to extract this value from YALMIP I am getting another value. Any ideas of why is this happening?


Capture.PNG

Johan Löfberg

unread,
Apr 7, 2020, 2:45:50 AM4/7/20
to YALMIP
impossible to answer without reproducible code, or at least more information

KosMy

unread,
Apr 7, 2020, 3:57:13 AM4/7/20
to YALMIP
What kind of information would be of help to find out why this is happening?

Johan Löfberg

unread,
Apr 7, 2020, 4:15:44 AM4/7/20
to YALMIP
The code?

Or at least a definition of what "another value" means
Message has been deleted

Johan Löfberg

unread,
Apr 20, 2020, 1:44:00 AM4/20/20
to YALMIP
I can reproduce it, but this takes forever to run making it horrible to debug. Can you supply a smaller reproducible example

Johan Löfberg

unread,
Apr 20, 2020, 2:58:43 AM4/20/20
to YALMIP
THeproblem is the use of the convexity-aware operator abs which will map to a norm expression, which will be modelled using an epigraph, but ipopt does not have any support for the non-smooth norm operator, and thus yalmip has some internal hacks to approximate it, and all those small approximation errors escalates to a large difference in the actual objective compared to the epigraph-modelled objective.

Better to derive the quadratic model
z = Model.Iline{index};
z = real(z).^2 + imag(z).^2;
Model.losses= Model.losses + 1*Parameters.Ccurt*sum(z.*Network.branch(:,3)/Network.baseMVA);


Reply all
Reply to author
Forward
0 new messages