[Coin-ipopt] Putt-Putt, Sputter, Solved -- IPOPT tuning help?

Frank J. Iannarilli franki at aerodyne.com
Wed Jun 7 14:20:35 EDT 2006


Hi,


This is likely a plea to Andreas or Carl, but am happy to receive 
suggestions from anyone else :-)

My problem most likely involves some appropriate tuning of IPOPT's control 
options.  IPOPT is taking *many* hundreds of iterations to reach a solution 
(tol=1e-4), and there seems to be lots of internal "restarting", where at 
first the inf_pr and inf_du (primal and dual infeasibilities) trend down 
(say reaching 1e3, 1e2, 1e1), but suddenly the inf_du will spike back up to 
1e10, mu will be raised, and the search progress begins anew. This behavior 
is when in non-monotonic-mu mode...the monotonic mode rarely succeeds at 
all.

I suspect a good part of the issue is that my problem is relatively 
under-contrained and, to my knowledge, non-convex.  It also doesn't help 
that I'm not providing any explicit variable initialization, although some 
constraint-setting seems to comprise an effective surrogate.

Anyhow, for those still following along, I'll briefly describe my problem 
model, and paste-in some screen-scroll from IPOPT (I'm still using ver 3.0, 
but imagine it is as good for my purposes as 3.1).


    Model:  wrap a "free" triangular mesh around a fixed mesh in 3D, 
"lacing" it down along its boundary to "anchor" points on the fixed mesh, 
arranging the free vertices (our variables) to:

      minimize: (1) lace edge lengths (between selected free-mesh boundary 
vertices and fixed anchor vertices);
            and (2) free-mesh bending (angles between edges that meet)

      s.t.:     (a) fixed free-mesh edge lengths;
                (b) free-mesh vertices stay outside convex hull of fixed 
mesh;
                (c) upper-bounded lace edge lengths
                (d) hyperplane normal vectors of unit length* (see below)


     This is cast with variables representing free-mesh vertex (x,y,z) 
coordinates, with (unnormalized) inner products of edge lengths 
representing edge self-lengths and edge-edge angles.  I employ auxillary 
variables representing a normal vector and offset distance for each free 
vertex, to represent the "outside convex hull" constraint as a separating 
hyperplane between a free vertex and the fixed-mesh points.  Solutions I've 
obtained validate the correctness of my model formulation.


     What may be most revealing in an attempt to get this general problem 
to converge more quickly in IPOPT, is that if I constrain the free-mesh 
boundary corner vertices to be *fixed*, IPOPT converges in merely several 
iterations!  But when the free-mesh boundary is merely *constrained to 
within some distance* of such fixed "anchor" locations (my "lace-length" 
constraints), IPOPT cycles away.  Once again, recall I do not provide any 
variable initialization.

-------------------------------

Here are parameters set from within my PARAMS.DAT (IPOPT 3.0, analog to 
3.1's ipopt.opt file):

  (IPOPT 3.0 compiled with MA27)
pivtol 1e-14   # default: 1e-8
epsilon_tol 1e-4  # > 0 default: 1e-8
mu0 1. # Initial value for barrier parameter mu: >0 default: 0.1
mu_max 1.
muupdate nonmonotone             # default: monotone  OR nonmonotone
muoracle optprobing              # optprobing OR loqo OR probing (default)
max_bisection_steps 8            # >0  default: 4
quality_function_norm 2          # 1 OR 2 OR 3  default: 2
quality_function_centrality 0    # 0 OR 1 OR 2 OR 3  default: 1
quality_function_dual_inf 2      #  1 OR 2 default: 1
dual_alpha_for_y 1               # 0 OR 1 default 0 (false)
kappa_d 0                        # >=0 default 1e-5
corrector_type 1                 # default: 0
skip_corr_if_neg_curv 1          # 0 OR 1 default 1 (true)
skip_corr_if_fixed_mode 1        # 0 OR 1 default 1 (true)
corrector_compl_avrg_red_fact 1  # >0 default: 1



Here's a run which terminates abnormally:
===========================================

Total number of variables............................:      210
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       90
                     variables with only upper bounds:        0
Total number of equality constraints.................:      150
Total number of inequality constraints...............:      816
        inequality constraints with only lower bounds:       30
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:      786

 iter     objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du
alpha_pr  ls
    0  2.4459442e+005 7.86e+003 5.86e+002   0.0 0.00e+000    -  0.00e+000 
0.00e+000   0
    1  2.3713045e+005 7.62e+003 1.94e+008   0.0 8.31e+001  -4.0 1.86e-003 
3.15e-002f  1 LL sigma=1.00e+002 xi=4.45e-002
LARGESIGMA
    2  2.3648669e+005 7.60e+003 1.51e+011  -5.0 4.66e+001   9.8 4.74e-001 
2.76e-003f  1 LL sigma=1.25e-009 xi=1.11e-002

    3  2.3642274e+005 7.60e+003 5.84e+012   0.0 3.47e+001  11.2 1.00e+000 
2.80e-004f  1 LL sigma=1.00e+002 xi=1.11e-002
LARGESIGMA
    4  2.3641951e+005 7.60e+003 1.84e+013   0.0 3.42e+001  11.6 1.00e+000 
1.45e-005h  1 LL sigma=1.00e+002 xi=2.59e-002
LARGESIGMA
    5  1.5663229e+005 5.04e+003 3.53e+013   0.0 3.28e+001  12.0 9.80e-001 
4.15e-001f  1 FL
    6  9.8258906e+004 3.49e+003 4.98e+013   0.0 2.14e+001  12.5 1.00e+000 
5.86e-001f  1 FL


....===>>>  Looking to converge...but then "restart"....   <<<==========


   45  2.9076622e+003 6.78e+001 9.81e+012   0.0 1.39e+000  12.8 1.00e+000 
7.60e-003h  1 FL
   46r 2.9076622e+003 6.78e+001 1.00e+003   1.8 0.00e+000  12.3 0.00e+000 
4.02e-007R  7
   47r 3.8972185e+003 3.35e+002 3.50e+003  -5.0 5.51e+004    -  5.38e-004 
1.10e-003f  1  sigma=2.22e-011 xi=2.81e-011 z
   48r 3.8654909e+003 3.13e+002 1.54e+003   0.0 1.65e+001   2.0 8.30e-001 
6.65e-002h  1  sigma=6.31e-001 xi=1.00e-010
   49r 3.7310981e+003 2.35e+002 2.05e+003   0.0 1.04e+001   2.4 4.20e-001 
2.61e-001f  1  sigma=6.74e-001 xi=3.53e-004
 iter     objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   50r 3.5646081e+003 1.53e+002 3.21e+003   0.0 5.46e+000   2.9 1.16e-001 
4.14e-001f  1  sigma=1.80e+000 xi=8.94e-003 LA
RGESIGMA
   51r 3.4980832e+003 1.09e+002 2.08e+003   0.0 8.12e+000   2.4 5.63e-001 
4.20e-001f  1  sigma=5.97e-001 xi=1.23e-002
   52  3.4973446e+003 1.09e+002 7.42e+001   0.0 2.46e+003    -  2.69e-004 
1.60e-003f  1 LL sigma=1.97e+001 xi=3.70e-002
LARGESIGMAL
   53  3.4973249e+003 1.09e+002 7.41e+001  -0.3 6.43e+002    -  2.03e-003 
3.97e-004h  1 LL sigma=5.49e-001 xi=7.77e-004
L
   54  3.4988626e+003 1.07e+002 6.99e+011   0.0 9.88e-001  11.9 1.00e+000 
6.65e-002h  1 LL sigma=1.00e+002 xi=6.11e-005
LARGESIGMA

....===>>>  Now coasting into abnormal termination   <<<==========


 iter     objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
  280r 2.9778833e+003 1.00e+000 5.64e-002  -5.0 3.00e+000    -  1.00e+000 
1.00e+000h  1  sigma=3.21e-001 xi=9.97e-001
  281r 2.9889141e+003 1.00e+000 2.54e-001  -5.0 1.99e+000    -  1.00e+000 
1.00e+000h  1  sigma=5.28e-001 xi=6.98e-002 C
  282r 2.9945604e+003 1.00e+000 2.65e-002  -5.0 9.55e-001    -  1.00e+000 
1.00e+000h  1  sigma=4.72e-001 xi=5.59e-001 C
  283r 2.9985700e+003 1.00e+000 7.22e-003  -5.0 5.22e-001    -  1.00e+000 
1.00e+000h  1  sigma=4.94e-001 xi=7.67e-001 C
  284r 3.0017930e+003 1.00e+000 5.59e-003  -5.0 5.08e-001    -  1.00e+000 
1.00e+000h  1  sigma=4.39e-001 xi=7.58e-001 C
  285r 3.0042192e+003 1.00e+000 3.39e-003  -5.0 4.06e-001    -  1.00e+000 
1.00e+000h  1 qS sigma=4.15e-001 xi=7.68e-001
C
  286r 3.0057995e+003 1.00e+000 1.74e-003  -5.0 2.58e-001    -  1.00e+000 
1.00e+000h  1 qSS sigma=4.20e-001 xi=7.75e-001
 C
  287r 3.0067827e+003 1.00e+000 7.00e-004  -5.0 1.69e-001    -  1.00e+000 
1.00e+000h  1 q sigma=3.95e-001 xi=7.76e-001 C

Exception of type: RESTORATION_FAILED in file "IpRestoFilterConvCheck.cpp" 
at line 130:
 Exception message: Restoration phase converged to a point with small 
primal infeasibility
exit code 4
<BREAK>



Here's a run which eventually achieves solution.  Only difference from the 
run above, is I numerically tightened the "lace" edge length constraint 
upper bound:
=======================================================================


 iter     objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
    0  2.4459442e+005 7.93e+003 5.86e+002   0.0 0.00e+000    -  0.00e+000 
0.00e+000   0
    1  1.7710790e+005 1.20e+004 8.35e+009   0.0 8.94e+001  -4.0 2.33e-003 
9.99e-001f  1 LL sigma=8.98e+001 xi=5.02e-002
LARGESIGMA
    2  1.7297579e+005 1.17e+004 3.61e+011   0.0 5.29e+001   9.8 1.00e+000 
2.36e-002f  1 LL sigma=1.00e+002 xi=2.36e-004
LARGESIGMA
    3  1.7290147e+005 1.17e+004 5.75e+013   0.0 4.81e+001  12.1 1.00e+000 
5.30e-004f  1 LL sigma=1.00e+002 xi=1.00e-002
LARGESIGMA
    4  4.6795453e+004 3.72e+003 2.35e+013   0.0 5.20e+001  11.6 1.00e+000 
1.00e+000f  1 LL sigma=1.46e-001 xi=1.19e-002

    5  2.1667937e+004 1.46e+003 1.61e+013   0.0 2.27e+001  12.0 1.00e+000 
1.00e+000f  1 LL sigma=6.39e-002 xi=8.30e-002

    6  7.9911562e+003 4.70e+002 7.75e+012   0.0 2.36e+001  11.5 1.00e+000 
1.00e+000f  1 LL sigma=3.34e-001 xi=5.34e-002

    7  1.5968713e+003 2.42e+002 3.46e+012   0.0 2.26e+001  11.1 1.00e+000 
1.00e+000f  1 LL sigma=3.34e-001 xi=7.90e-002

    8  6.4805843e+002 4.15e+002 1.49e+012   0.0 1.76e+001  10.6 1.00e+000 
1.00e+000f  1 LL sigma=4.80e-001 xi=4.71e-002

    9  6.4214989e+002 3.13e+002 1.26e+012  -5.0 5.02e+000  11.0 4.80e-001 
3.31e-001h  1 LL sigma=1.35e-011 xi=5.47e-002


....===>>>  Similar kind of "restart" behavior from before .... <<<===


 iter     objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
   40r 6.4246486e+002 2.50e+001 9.85e+002   0.0 9.23e+003    -  1.55e-002 
2.27e-003f  1  sigma=7.51e-001 xi=5.41e-005
   41r 6.9409732e+002 2.48e+001 9.88e+002   0.0 1.49e+001   2.0 9.08e-002 
2.03e-001f  1  sigma=2.02e-001 xi=1.12e-004
   42  6.9743986e+002 2.44e+001 2.09e+001  -5.0 5.24e+001    -  7.67e-003 
1.37e-002h  1 LL sigma=9.62e-011 xi=2.29e-003
L
   43  7.3879719e+002 2.94e+001 2.36e+001   0.0 7.06e+001    -  1.58e-002 
2.41e-001f  1 LL sigma=2.15e-001 xi=2.37e-004
L
   44  7.2928717e+002 4.64e+001 2.26e+001   0.0 1.21e+002    -  1.60e-001 
1.48e-001f  1 LL sigma=8.41e-001 xi=1.42e-004
L
   45  7.3197857e+002 4.54e+001 4.61e+008   0.0 4.95e+000   8.0 1.00e+000 
2.18e-002h  1 LL sigma=1.00e+002 xi=3.14e-003
LARGESIGMA
   46  7.3215186e+002 4.53e+001 2.22e+009   0.0 1.64e+000   9.3 7.58e-001 
2.43e-003h  1 FL
   47  7.4036943e+002 4.02e+001 8.04e+009   0.0 1.54e+000   9.7 8.32e-001 
1.36e-001h  1 FL
   48  7.7373960e+002 2.12e+001 1.60e+010   0.0 1.39e+000  10.2 9.75e-001 
7.10e-001h  1 FL
   49  7.7435238e+002 2.10e+001 2.63e+010   0.0 6.33e-001  10.6 1.00e+000 
1.93e-002h  1 FL


.....  And finally a solution .....


  220  6.0508181e+002 1.08e-001 6.86e+006  -1.1 4.70e+000   4.0 2.26e-001 
1.25e-001f  4 FL
  221  6.0507691e+002 1.03e-001 8.65e+006  -1.1 4.26e+000   3.5 8.79e-001 
5.46e-002h  1 FL
  222  6.0498743e+002 1.14e-001 7.98e+005  -1.1 6.42e-001   3.0 9.50e-001 
1.00e+000f  1 FL
  223  6.0213392e+002 1.22e-001 6.16e+005  -1.1 1.29e+000   2.5 2.74e-001 
1.00e+000f  1 FL
  224  6.0205016e+002 6.54e-003 6.04e+003  -1.1 8.30e-002   2.1 9.89e-001 
1.00e+000f  1 FL
  225  6.0174872e+002 2.37e-003 5.68e+002  -1.1 7.71e-002   1.6 9.01e-001 
1.00e+000f  1 FL
  226  6.0181161e+002 1.27e-003 6.53e-001  -1.1 4.99e-002   1.1 1.00e+000 
1.00e+000f  1 FL
  227  6.0093229e+002 3.44e-003 3.66e-001  -1.5 9.21e-002   0.6 9.30e-001 
1.00e+000f  1 LL sigma=4.30e-001 xi=1.22e-001

  228  5.9785469e+002 3.23e-002 5.23e-001  -2.2 3.60e-001   0.2 1.00e+000 
1.00e+000f  1 LL sigma=1.51e-001 xi=2.15e-002

  229  5.9399308e+002 8.09e-002 3.41e-001  -1.7 7.04e-001  -0.3 1.00e+000 
7.13e-001f  1 LL sigma=3.11e+000 xi=6.64e-002
LARGESIGMA
 iter     objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
  230  5.8943234e+002 9.62e-002 2.75e-001  -2.2 1.38e+000  -0.8 5.61e-001 
5.03e-001f  1 LL sigma=3.61e-001 xi=1.97e-002

  231  5.8071692e+002 4.25e-001 5.09e-001  -2.3 2.75e+000  -1.3 8.67e-001 
8.78e-001f  1 LL sigma=4.16e-001 xi=2.02e-002

  232  5.7610349e+002 3.01e-001 4.20e-001  -2.7 3.26e+000  -1.7 8.40e-001 
8.31e-001f  1 LL sigma=3.74e-001 xi=2.76e-002

  233  5.7464794e+002 1.59e-001 2.53e-001  -2.5 2.96e+000  -2.2 9.71e-001 
1.00e+000f  1 LL sigma=1.00e+000 xi=2.35e-002

  234  5.7448613e+002 2.69e-001 4.76e-002  -3.1 1.87e+000  -2.7 9.90e-001 
1.00e+000h  1 LL sigma=3.05e-001 xi=1.71e-002

  235  5.7446688e+002 2.14e-001 8.39e-002  -4.4 1.21e+001    -  6.53e-001 
1.00e+000h  1 LL sigma=4.76e-002 xi=1.96e-002
LC
  236  5.7446334e+002 8.98e-003 2.62e-002  -4.7 1.93e+000    -  9.24e-001 
1.00e+000h  1 LL sigma=5.57e-002 xi=4.90e-002
LC
  237  5.7446276e+002 1.30e-002 5.90e-003  -5.0 6.41e-001    -  9.78e-001 
1.00e+000h  1 LL sigma=8.16e-003 xi=5.06e-002
LC
  238  5.7446216e+002 4.65e-002 1.55e-003  -5.0 8.76e-001    -  9.69e-001 
1.00e+000h  1 LL sigma=2.21e-002 xi=1.61e-001
LC
  239  5.7446166e+002 2.77e-001 3.48e-003  -5.0 1.12e+000    -  8.98e-001 
1.00e+000h  1 LL sigma=1.64e-002 xi=4.15e-002
LC
 iter     objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
  240  5.7446124e+002 6.14e-002 3.01e-003  -5.0 6.20e-002  -1.4 1.00e+000 
7.81e-001h  1 LL sigma=1.00e+002 xi=1.29e-002
LARGESIGMA
  241  5.7446116e+002 4.67e-004 3.46e-004  -5.0 2.34e-002  -1.8 1.00e+000 
1.00e+000h  1 LL sigma=3.91e+000 xi=1.01e-002
LARGESIGMA
  242  5.7446076e+002 1.33e-002 1.62e-003  -5.0 1.40e-001  -2.3 1.00e+000 
6.67e-001h  1 LL sigma=6.05e-001 xi=5.42e-001

  243  5.7445927e+002 1.21e-001 5.05e-003  -5.0 8.41e-001  -2.8 4.61e-001 
3.37e-001h  1 LL sigma=8.57e-002 xi=1.44e-003

  244  5.7445797e+002 6.42e-003 1.84e-003  -4.8 2.33e-001  -2.4 1.00e+000 
9.70e-001h  1 LL sigma=1.46e+001 xi=1.80e-002
LARGESIGMA
  245  5.7445742e+002 8.56e-003 1.45e-002  -5.0 8.62e-001  -2.9 6.40e-001 
9.92e-002h  1 LL sigma=6.42e-005 xi=1.02e-002

  246  5.7445768e+002 8.88e-003 1.02e-002  -3.2 3.65e+000  -3.3 1.09e-001 
2.46e-002f  1 LL sigma=1.00e+002 xi=9.18e-003
LARGESIGMA
  247  5.7445600e+002 2.04e-002 5.75e-003  -3.9 5.92e-001  -2.9 2.27e-001 
1.00e+000h  1 LL sigma=1.80e+000 xi=2.41e-003
LARGESIGMA
  248  5.7445361e+002 4.52e-002 3.88e-002  -5.0 3.31e+000  -3.4 7.04e-001 
1.44e-001h  1 LL sigma=1.20e-005 xi=3.42e-002

  249  5.7443814e+002 1.10e+000 4.72e-002  -4.7 3.43e+002  -3.9 1.28e-002 
1.18e-002h  1 FL
 iter     objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du 
alpha_pr  ls
  250  5.7443421e+002 1.07e+000 9.34e-002  -4.7 2.33e+001    -  2.76e-001 
4.05e-002h  1 FL
  251  5.7442930e+002 4.95e-001 8.28e-002  -4.7 2.63e+001    -  4.94e-002 
5.39e-001h  1 FL
  252  5.7442729e+002 2.97e-001 1.41e-002  -4.7 1.03e+001    -  8.82e-001 
4.00e-001f  1 FL
  253  5.7442516e+002 2.26e-002 9.45e-003  -4.7 1.17e+001    -  1.55e-001 
1.00e+000h  1 FL
  254  5.7442521e+002 1.91e-003 1.91e-003  -4.7 3.24e+000    -  7.99e-001 
1.00e+000h  1 FL
  255  5.7442497e+002 7.02e-005 3.62e-005  -5.0 7.01e-002    -  9.81e-001 
1.00e+000h  1 LL sigma=2.64e-002 xi=7.24e-005
LC

Number of Iterations    = 255
Objective Value         = 5.7442496531155632e+002
Primal Infeasibility    = 7.0215073861845667e-005
Dual Infeasibility      = 3.6164516794445767e-005
Complementarity         = 1.1225427732328427e-006




Frank J. Iannarilli, franki at aerodyne.com
Aerodyne Research, Inc., 45 Manning Rd., Billerica, MA 01821 USA
www.aerodyne.com/cosr/cosr.html



More information about the Coin-ipopt mailing list