[Ipopt] initial point in pyIPOPT
Tony Kelman
kelman at berkeley.edu
Mon Jun 9 23:59:48 EDT 2014
Seth,
You may also need to adjust some of the warm_start_* options, see http://www.coin-or.org/Ipopt/documentation/node48.html
If those don’t work, then it sounds like it might be a bug in PyIpopt, unless you can reproduce it with an example using the C/C++ interface. Your best bet (unless someone who’s more familiar with the Python interface than I am pipes up) might be to report an issue on PyIpopt’s github page, ideally including example code so PyIpopt’s author can try to reproduce the problem. I’m not sure whether he subscribes to this mailing list.
-Tony
From: Seth Watts
Sent: Monday, June 09, 2014 8:42 AM
To: ipopt at list.coin-or.org
Subject: [Ipopt] initial point in pyIPOPT
Hello -
I have used IPOPT previously via its C/C++ interface, but now I am trying to use it through the pyIPOPT interface. I am using IPOPT version 3.10.0 installed on a computer cluster.
I have noticed that the initial point x0 for the optimization that I pass into IPOPT gets changed significantly, such that the first optimization iteration (or the point about which finite difference derivative checks are made) is quite different than the initial point I supplied.
Searching online I found some older threads about this issue, but these discussions appear to focus on when x0 is a near-optimal point which is near the boundary of the feasible region. In that case, IPOPT moves x0 way from the boundary so that its interior-point algorithms work properly.
However, in my case x0 is not expected to be optimal; it is simply a default state that I hope to improve. I observe significant changes in x0 even when no component of x0 is near its bounds, and even when I have turned off all constraint functions and bounds on the components of x.
Example: here is the value of x0 I pass into IPOPT via the pyIPOPT interface:
[ 0.5 0.5 0. 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25]
with the upper/lower bounds on each component of +/- 2e19.
The value of x first encountered in IPOPT is:
[ -8.6673931 -0.41015111 6.69634436 -3.0302794 1.55978807
-9.71466175 -5.99820966 10.0586816 5.25994266 2.42452724
-2.72581804]
Since there are no bounds, I don't understand why IPOPT would modify x0, which should certainly be an interior point. (Note - I see the same type of behavior, although with different perturbed x0, when the upper bounds are [1.0 1.0 2e19 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35] and the lower bounds are [0.0 0.0 -2e19 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02]).
Based on reading earlier threads, I have tried playing with the bound_push, bound_frac, etc. and other IPOPT options, including the following values which were set for the perturbed value of x0 given above:
Name Value used
acceptable_obj_change_tol = 0.0001 yes
bound_frac = 1e-08 yes
bound_mult_init_method = constant yes
bound_mult_init_val = 1e-08 yes
bound_push = 1e-08 yes
bound_relax_factor = 1e-08 yes
derivative_test = first-order yes
derivative_test_perturbation = 1e-05 yes
derivative_test_print_all = yes yes
findiff_perturbation = 1e-05 yes
hessian_approximation = limited-memory yes
max_iter = 100 yes
mu_init = 1e-08 no
nlp_scaling_method = none yes
print_info_string = yes yes
print_user_options = yes yes
slack_bound_frac = 1e-08 yes
slack_bound_push = 1e-08 yes
tol = 1e-08 yes
(Note that since the finite difference check was on and the reported value of x0 was taken during the first call to eval_f(), some of the options should not come into play, e.g. the fact that I am using Hessian approximation shouldn't be germane.)
Does anyone have any suggestions for what else I can try so that the x0 IPOPT uses is at least near the x0 I pass in?
Thank you,
- Seth Watts
--------------------------------------------------------------------------------
_______________________________________________
Ipopt mailing list
Ipopt at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/ipopt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20140609/aa72cc74/attachment.html>
More information about the Ipopt
mailing list