<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri'; COLOR: #000000">
<DIV>Udit,</DIV>
<DIV> </DIV>
<DIV>Interior point algorithms are known for being difficult to warm start.
There are various options in Ipopt to get as much of the solution warm-started
as is reasonably possible (you’ll also need the dual variables), but the barrier
parameter and other algorithmic details mean this doesn’t always work that well.
Interior point algorithms generally converge better when initialized far from
active constraints, but the optimum solution of most interesting constrained
optimization problems tends to be on the boundary of the feasible region. And as
far as the tolerances that you’ve provided to Ipopt are concerned, the two
solutions you’re getting are essentially the same.</DIV>
<DIV> </DIV>
<DIV>Separately, Ipopt is not generally recommended for problems with a small
number of variables, very simple constraints, but complicated very expensive to
evaluate black-box objective functions. It can be used for this type of problem,
but there are probably better options. If you’re trying to solve a
DAE-constrained optimization problem, Ipopt will perform much better if you can
translate a discretization of the problem (via collocation or local Runge-Kutta
type approximations) into a large-scale sparse set of constraints relating the
differential variables over many discretization points. A modeling language such
as AMPL, GAMS, Pyomo, etc can perform automatic differentiation on your problem
formulation, saving you the hassle of manually calculating first and second
derivatives of your discretized DAE.</DIV>
<DIV> </DIV>
<DIV>-Tony</DIV>
<DIV> </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><FONT size=3 face=Calibri></FONT> </DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=gupta117@umn.edu
href="mailto:gupta117@umn.edu">Udit Gupta</A> </DIV>
<DIV><B>Sent:</B> Wednesday, April 09, 2014 11:08 PM</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] Less Optimum solution for successive
runs</DIV></DIV></DIV>
<DIV> </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>Hi,
<DIV> </DIV>
<DIV>I am using IpOpt to optimize a problem with 5 decision variables in
successive runs. My first run involves using all 5 variables (relaxing all
variables simultaneously). IpOpt terminates successfully and gives an optimum
solution. Next I relax only one variable (4th) of the 5 (keeping other 4
variables constant from the earlier run). I find that IpOpt provides a
relatively "bad" optimum solution with higher objective value (i am minimising
my obj fn). NLP functions are being evaluated using a DAE solver.</DIV>
<DIV> </DIV>
<DIV><B>First Run:</B></DIV>
<DIV> </DIV>
<DIV>
<DIV>Total number of
variables............................:
5</DIV>
<DIV>
variables with only lower bounds:
0</DIV>
<DIV>
variables with lower and upper bounds:
5</DIV>
<DIV>
variables with only upper bounds:
0</DIV>
<DIV>Total number of equality
constraints.................: 0</DIV>
<DIV>Total number of inequality
constraints...............: 0</DIV>
<DIV> inequality constraints with only
lower bounds: 0</DIV>
<DIV> inequality constraints with lower and upper
bounds: 0</DIV>
<DIV> inequality constraints with only
upper bounds: 0</DIV>
<DIV> </DIV>
<DIV>iter objective inf_pr
inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls</DIV>
<DIV> 0 3.4059520e-001 0.00e+000 1.26e-001 0.0
0.00e+000 - 0.00e+000 0.00e+000 0</DIV>
<DIV> 1 3.3227739e-001 0.00e+000 5.39e-002 -5.0
6.09e-002 - 9.86e-001 1.00e+000f 1</DIV>
<DIV> 2 2.8068876e-001 0.00e+000 2.95e-002 -2.5
5.58e-001 - 9.75e-001 8.79e-001f 1</DIV>
<DIV> 3 2.7651747e-001 0.00e+000 7.72e-003 -2.6
1.62e-001 - 9.93e-001 1.00e+000f 1</DIV>
<DIV> 4 2.6969369e-001 0.00e+000 9.19e-003 -4.1
2.00e-001 - 9.98e-001 9.85e-001f 1</DIV>
<DIV> 5 2.6371187e-001 0.00e+000 1.16e-002 -4.0
7.34e-001 - 1.00e+000 5.35e-001f 1</DIV>
<DIV> 6 2.5342676e-001 0.00e+000 2.66e-002 -4.9
3.35e+000 - 1.00e+000 3.31e-001f 1</DIV>
<DIV> 7 2.3664505e-001 0.00e+000 5.43e-002 -4.2
5.52e+000 - 8.07e-001 1.00e+000f 1</DIV>
<DIV> 8 2.3213622e-001 0.00e+000 1.01e-002 -5.1
1.97e+000 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 9 2.3155882e-001 0.00e+000 6.38e-003 -3.9
5.49e-001 - 1.00e+000 1.00e+000f 1</DIV>
<DIV>iter objective inf_pr
inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls</DIV>
<DIV> 10 2.3030322e-001 0.00e+000 6.01e-003 -4.6
1.16e+000 - 9.98e-001 1.00e+000f 1</DIV>
<DIV> 11 2.3008095e-001 0.00e+000 4.60e-002 -2.6
3.02e+001 - 5.36e-001 2.27e-001f 2</DIV>
<DIV> 12 2.2783106e-001 0.00e+000 1.06e-001 -2.4
2.06e+001 - 1.00e+000 2.02e-001f 2</DIV>
<DIV> 13 2.1571297e-001 0.00e+000 5.67e-002 -2.3
8.77e+000 - 1.00e+000 2.21e-001f 3</DIV>
<DIV> 14 1.8078192e-001 0.00e+000 5.68e-002 -2.9
7.69e+000 - 9.97e-001 3.62e-001f 2</DIV>
<DIV> 15 1.4540550e-001 0.00e+000 8.58e-002 -3.8
6.54e+000 - 1.00e+000 3.26e-001f 1</DIV>
<DIV> 16 1.5533380e-001 0.00e+000 1.25e-001 -2.4
5.58e+000 - 9.45e-001 5.00e-001f 2</DIV>
<DIV> 17 1.4003026e-001 0.00e+000 4.40e-002 -2.6
1.05e+000 - 1.00e+000 2.93e-001f 2</DIV>
<DIV> 18 1.1513233e-001 0.00e+000 3.28e-002 -3.5
1.65e+000 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 19 1.1058175e-001 0.00e+000 5.58e-002 -3.5
7.25e-001 - 1.00e+000 1.83e-001f 1</DIV>
<DIV>iter objective inf_pr
inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls</DIV>
<DIV> 20 1.0840715e-001 0.00e+000 2.40e-002 -4.6
5.04e-001 - 1.00e+000 5.00e-001f 2</DIV>
<DIV> 21 1.0730184e-001 0.00e+000 2.59e-003 -4.7
8.46e-002 - 1.00e+000 4.43e-001f 1</DIV>
<DIV> 22 1.0693632e-001 0.00e+000 1.15e-003 -6.2
1.83e-002 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 23 1.0692761e-001 0.00e+000 3.95e-005 -8.0
1.93e-003 - 1.00e+000 9.85e-001f 1</DIV>
<DIV> 24 1.0692755e-001 0.00e+000 1.11e-004 -11.0
1.05e-003 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 25 1.0692753e-001 0.00e+000 1.09e-006 -11.0
6.86e-004 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> </DIV>
<DIV>Number of Iterations....: 25</DIV>
<DIV> </DIV>
<DIV>
(scaled)
(unscaled)</DIV>
<DIV>Objective...............: <B>1.0692753478330776e-001 </B>
1.0692753478330776e-001</DIV>
<DIV>Dual infeasibility......: 1.0936467431047899e-006
1.0936467431047899e-006</DIV>
<DIV>Constraint violation....: 0.0000000000000000e+000
0.0000000000000000e+000</DIV>
<DIV>Complementarity.........: 1.0027270245806282e-011
1.0027270245806282e-011</DIV>
<DIV>Overall NLP error.......: 1.0936467431047899e-006
1.0936467431047899e-006</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>Number of objective function
evaluations
= 62</DIV>
<DIV>Number of objective gradient
evaluations
= 26</DIV>
<DIV>Number of equality constraint
evaluations =
0</DIV>
<DIV>Number of inequality constraint
evaluations = 0</DIV>
<DIV>Number of equality constraint Jacobian evaluations = 0</DIV>
<DIV>Number of inequality constraint Jacobian evaluations = 0</DIV>
<DIV>Number of Lagrangian Hessian
evaluations
= 0</DIV>
<DIV>Total CPU secs in IPOPT (w/o function evaluations)
= 25.657</DIV>
<DIV>Total CPU secs in NLP function
evaluations
= 1809.632</DIV></DIV>
<DIV> </DIV>
<DIV>Optimal Solution : 5.24069, 1.21765, 5.77537e-10, <B>3.33815e-10</B>,
3.99296e-10</DIV>
<DIV> </DIV>
<DIV><B>Second Run: (The bold variable is changed in this run)</B></DIV>
<DIV>
<DIV>Total number of
variables............................:
1</DIV>
<DIV>
variables with only lower bounds:
0</DIV>
<DIV>
variables with lower and upper bounds:
1</DIV>
<DIV>
variables with only upper bounds:
0</DIV>
<DIV>Total number of equality
constraints.................: 0</DIV>
<DIV>Total number of inequality
constraints...............: 0</DIV>
<DIV> inequality constraints with only
lower bounds: 0</DIV>
<DIV> inequality constraints with lower and upper
bounds: 0</DIV>
<DIV> inequality constraints with only
upper bounds: 0</DIV>
<DIV> </DIV>
<DIV>iter objective inf_pr
inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls</DIV>
<DIV> 0 1.0692753e-001 0.00e+000 2.99e-002 0.0
0.00e+000 - 0.00e+000 0.00e+000 0</DIV>
<DIV> 1 1.0998169e-001 0.00e+000 6.45e-002 -1.1
8.05e-002 - 9.98e-001 1.00e+000f 1</DIV>
<DIV> 2 1.6595396e-001 0.00e+000 2.03e-002 -1.1
5.84e-001 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 3 1.3200249e-001 0.00e+000 4.12e-003 -1.8
2.83e-001 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 4 1.1346410e-001 0.00e+000 5.79e-003 -2.7
2.35e-001 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 5 1.0877403e-001 0.00e+000 1.68e-003 -4.0
9.49e-002 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 6 1.0735574e-001 0.00e+000 3.01e-004 -4.0
3.88e-002 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 7 1.0696293e-001 0.00e+000 3.89e-005 -6.0
1.25e-002 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> 8 1.0692884e-001 0.00e+000 9.98e-007 -6.0
1.14e-003 - 1.00e+000 1.00e+000f 1</DIV>
<DIV> </DIV>
<DIV>Number of Iterations....: 8</DIV>
<DIV> </DIV>
<DIV>
(scaled)
(unscaled)</DIV>
<DIV>Objective...............: <B>1.0692884325163618e-001</B>
1.0692884325163618e-001</DIV>
<DIV>Dual infeasibility......: 9.9778841742863659e-007
9.9778841742863659e-007</DIV>
<DIV>Constraint violation....: 0.0000000000000000e+000
0.0000000000000000e+000</DIV>
<DIV>Complementarity.........: 1.3088189011168833e-006
1.3088189011168833e-006</DIV>
<DIV>Overall NLP error.......: 1.3088189011168833e-006
1.3088189011168833e-006</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>Number of objective function
evaluations
= 9</DIV>
<DIV>Number of objective gradient
evaluations
= 9</DIV>
<DIV>Number of equality constraint
evaluations =
0</DIV>
<DIV>Number of inequality constraint
evaluations = 0</DIV>
<DIV>Number of equality constraint Jacobian evaluations = 0</DIV>
<DIV>Number of inequality constraint Jacobian evaluations = 0</DIV>
<DIV>Number of Lagrangian Hessian
evaluations
= 0</DIV>
<DIV>Total CPU secs in IPOPT (w/o function evaluations)
= 20.861</DIV>
<DIV>Total CPU secs in NLP function
evaluations
= 228.325</DIV>
<DIV> </DIV>
<DIV>EXIT: Optimal Solution Found.</DIV></DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>Objective fn value changed from <B>1.0692753478330776e-001 --->
</B><B>1.0692884325163618e-001</B></DIV>
<DIV>Variable value changed from <B>3.33815e-10 ---> 4.36996e-5</B></DIV>
<DIV><B><BR></B></DIV>
<DIV>I presume that for the second run, the optimal dual is calculated in the 8
iterations but my solution degrades from the starting point.</DIV>
<DIV> </DIV>
<DIV>My options:</DIV>
<DIV>
<DIV>app->Options()->SetNumericValue("tol", 1e-5);</DIV>
<DIV>app->Options()->SetNumericValue("constr_viol_tol", 1e-10);</DIV>
<DIV>app->Options()->SetNumericValue("bound_frac", 1e-15);</DIV>
<DIV>app->Options()->SetNumericValue("bound_push", 1e-15);</DIV>
<DIV>app->Options()->SetNumericValue("tiny_step_tol", 1e-10);</DIV>
<DIV>app->Options()->SetNumericValue("tiny_step_y_tol", 1e-10);</DIV>
<DIV>app->Options()->SetNumericValue("bound_relax_factor", 0);</DIV>
<DIV>app->Options()->SetStringValue("mu_strategy", "adaptive");</DIV>
<DIV>app->Options()->SetStringValue("hessian_approximation",
"limited-memory");<BR></DIV></DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>Is there a way to avoid calculating new iterations or considering the
initial solution as the final solution?</DIV>
<DIV> </DIV>
<DIV>Thank You</DIV>
<DIV> </DIV>
<DIV>Regards</DIV>
<DIV>Udit Gupta</DIV>
<DIV><B><BR></B></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>