<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri'; COLOR: #000000">
<DIV>Seth,</DIV>
<DIV>&nbsp;</DIV>
<DIV>You may also need to adjust some of the warm_start_* options, see <A 
title=http://www.coin-or.org/Ipopt/documentation/node48.html 
href="http://www.coin-or.org/Ipopt/documentation/node48.html">http://www.coin-or.org/Ipopt/documentation/node48.html</A></DIV>
<DIV>&nbsp;</DIV>
<DIV>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.</DIV>
<DIV>&nbsp;</DIV>
<DIV>-Tony</DIV>
<DIV>&nbsp;</DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
<DIV style="FONT: 10pt tahoma">
<DIV>&nbsp;</DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=watts2@illinois.edu 
href="mailto:watts2@illinois.edu">Seth Watts</A> </DIV>
<DIV><B>Sent:</B> Monday, June 09, 2014 8:42 AM</DIV>
<DIV><B>To:</B> <A title=ipopt@list.coin-or.org 
href="mailto:ipopt@list.coin-or.org">ipopt@list.coin-or.org</A> </DIV>
<DIV><B>Subject:</B> [Ipopt] initial point in pyIPOPT</DIV></DIV></DIV>
<DIV>&nbsp;</DIV></DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
<DIV dir=ltr>Hello - 
<DIV>&nbsp;</DIV>
<DIV>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.</DIV>
<DIV>&nbsp;</DIV>
<DIV>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.</DIV>
<DIV>&nbsp;</DIV>
<DIV>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.</DIV>
<DIV>&nbsp;</DIV>
<DIV>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.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Example: here is the value of x0 I pass into IPOPT via the pyIPOPT 
interface:</DIV>
<DIV>&nbsp;</DIV>
<DIV>
<DIV>[ 0.5&nbsp;&nbsp; 0.5&nbsp;&nbsp; 0.&nbsp;&nbsp;&nbsp; 0.25&nbsp; 
0.25&nbsp; 0.25&nbsp; 0.25&nbsp; 0.25&nbsp; 0.25&nbsp; 0.25&nbsp; 0.25]</DIV>
<DIV>&nbsp;</DIV>
<DIV>with the upper/lower bounds on each component of +/- 2e19.</DIV>
<DIV>&nbsp;</DIV>
<DIV>The value of x first encountered in IPOPT is:</DIV>
<DIV>&nbsp;</DIV>
<DIV>
<DIV>
<DIV>[ -8.6673931&nbsp;&nbsp; -0.41015111&nbsp;&nbsp; 6.69634436&nbsp; 
-3.0302794&nbsp;&nbsp;&nbsp; 1.55978807</DIV>
<DIV>&nbsp; -9.71466175&nbsp; -5.99820966&nbsp; 10.0586816&nbsp;&nbsp;&nbsp; 
5.25994266&nbsp; 2.42452724</DIV>
<DIV>&nbsp; -2.72581804]</DIV></DIV>
<DIV>&nbsp;</DIV>
<DIV>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]).</DIV>
<DIV>&nbsp;</DIV>
<DIV>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:</DIV>
<DIV>&nbsp;</DIV>
<DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Name&nbsp;&nbsp; Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
used</FONT></DIV>
<DIV><FONT face="'courier new', monospace">&nbsp;&nbsp; 
acceptable_obj_change_tol = 
0.0001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
bound_frac = 1e-08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
bound_mult_init_method = constant&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
bound_mult_init_val = 
1e-08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
bound_push = 1e-08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
bound_relax_factor = 1e-08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
derivative_test = first-order&nbsp;&nbsp;&nbsp; yes</FONT></DIV>
<DIV><FONT face="'courier new', monospace">derivative_test_perturbation = 
1e-05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yes</FONT></DIV>
<DIV><FONT face="'courier new', monospace">&nbsp;&nbsp; 
derivative_test_print_all = 
yes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
findiff_perturbation = 
1e-05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yes</FONT></DIV>
<DIV><FONT face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
hessian_approximation = limited-memory yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
max_iter = 100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
mu_init = 1e-08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
no</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
nlp_scaling_method = 
none&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
print_info_string = 
yes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
print_user_options = 
yes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
slack_bound_frac = 1e-08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
slack_bound_push = 1e-08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV>
<DIV><FONT 
face="'courier new', monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
tol = 1e-08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
yes</FONT></DIV></DIV></DIV></DIV>
<DIV>&nbsp;</DIV>
<DIV>(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.)</DIV>
<DIV>&nbsp;</DIV>
<DIV>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?</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thank you,</DIV>
<DIV>- Seth Watts</DIV>
<DIV>&nbsp;</DIV></DIV>
<P>
<HR>
_______________________________________________<BR>Ipopt mailing 
list<BR>Ipopt@list.coin-or.org<BR>http://list.coin-or.org/mailman/listinfo/ipopt<BR></DIV></DIV></DIV></BODY></HTML>