IPOPT options for reducing constraint violation after fewer iterations

扶醉桌前 提交于 2020-01-04 06:57:09

问题


I am using IPOPT implemented through OpenMDAO and am having some trouble understanding and controlling the stopping criteria.

Here is what I'm experiencing specifically: Initially, IPOPT is able to find a solution that appears to be much better, although constraints are violated slightly (intuition tells me that adjusting a few parameters would likely bring it into the feasible region). From this discussion I understand that "linear or nonlinear equality or inequality constraint will not necessarily be satisfied until the solver has finished converging at the final iteration," so I would like to know if I can change tolerances such that the solver will begin to completely satisfy constraints sooner (am I even understanding that correctly?). Currently nearly all evaluations are in the infeasible regime.

I realize that this approach would result in a less optimal solution, but my function evaluations are quite computationally expensive so I'd like to be able to have some kind of control over exiting earlier but with feasible results. It is not clear to me when looking at IPOPT termination documentation how this might be done. (dual_inf_tol?)

Here is some output of a not-yet-converged optimization in case that is helpful. Each of my parameters is on the order of approximately -30 to +30 and my constraints all have an upper bound of 1.0.

This is Ipopt version 3.11.7, running with linear solver ma27.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:      144
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       12
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       12
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:       12
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:       12

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  2.2773950e-10 4.72e-02 4.31e-01   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1 -4.9176078e-05 4.70e-02 9.91e-02  -4.8 9.65e-02    -  9.86e-01 1.00e+00h  1
   2  2.1621729e-03 4.03e-02 1.12e-02  -2.8 8.31e-02    -  9.93e-01 1.00e+00h  1
   3  2.4150351e-03 3.95e-02 7.40e-01  -3.3 5.27e-02    -  1.00e+00 1.86e-01h  1
   4  1.3194689e-02 5.61e-03 3.60e-01  -3.4 4.16e-01    -  1.00e+00 1.00e+00h  1
   5  1.4923797e-02 5.70e-04 2.12e+00  -4.8 7.84e-02    -  1.00e+00 1.00e+00h  1
   6  1.1292725e-02 1.03e-02 6.11e-01  -4.3 1.28e-01    -  9.91e-01 1.00e+00h  1
   7 -3.0932752e-02 1.78e-01 2.37e-02  -2.7 4.93e+01    -  9.77e-01 3.04e-02f  1
   8 -1.0919263e-01 1.41e-01 1.83e-02  -3.7 6.55e+01    -  1.97e-01 2.13e-01h  1
   9 -1.0200310e-02 6.29e-02 2.12e-01  -1.0 8.84e+02    -  1.91e-01 3.11e-02f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10  1.4379416e-02 7.83e-02 6.69e-02  -1.8 2.72e+01    -  5.78e-01 4.76e-01h  1
  11 -6.2485434e-02 3.98e-02 4.35e-02  -1.8 2.23e+01    -  6.03e-01 1.00e+00h  1
  12 -1.2862241e-01 1.22e-01 3.52e-03  -2.4 8.08e+00    -  1.00e+00 9.90e-01h  1
  13 -1.4931148e-01 1.03e-01 1.28e-01  -3.5 7.31e+00    -  8.14e-01 1.00e+00h  1
  14 -1.5628632e-01 1.73e-01 6.53e-02  -2.3 1.62e+01    -  1.00e+00 9.20e-01f  1
  15 -1.4969877e-01 2.81e-02 5.75e-02  -2.4 1.44e+01    -  1.00e+00 9.86e-01h  1
  16 -1.5014809e-01 1.13e-01 3.08e-02  -2.6 5.97e+00    -  9.57e-01 1.00e+00h  1
  17 -1.5492389e-01 1.97e-02 6.94e+00  -3.3 3.98e+00    -  9.91e-01 1.00e+00h  1
  18 -1.6660309e-01 5.33e-02 1.37e-02  -3.0 4.11e+00    -  9.90e-01 1.00e+00h  1
  19 -1.6258901e-01 2.00e-01 7.76e-02  -2.7 5.95e+01    -  1.00e+00 1.72e-01h  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20 -1.8526459e-01 3.63e-01 3.54e-02  -2.7 2.48e+01    -  4.07e-01 1.00e+00h  1
  21 -1.7711436e-01 7.11e-02 1.58e-02  -3.1 1.31e+01    -  9.35e-01 1.00e+00h  1
  22 -1.7548211e-01 4.64e-02 1.90e-01  -3.1 6.76e+00    -  5.89e-01 1.00e+00h  1
  23 -1.8872718e-01 5.14e-01 5.11e-02  -2.7 8.01e+00    -  1.00e+00 9.03e-01h  1
  24 -2.2657415e-01 1.51e+00 4.27e-03  -2.8 4.58e+01    -  4.16e-01 7.23e-01h  1
  25 -2.1865212e-01 9.90e-01 1.52e+01  -2.8 1.94e+01    -  1.00e+00 4.04e-01h  1
  26 -2.1865639e-01 9.90e-01 1.52e+01  -2.2 2.05e+01    -  9.93e-01 3.40e-04h  6
  27 -2.1869343e-01 9.92e-01 1.51e+01  -3.3 2.94e+00    -  1.05e-02 1.05e-02s 16
  28 -2.1869424e-01 9.91e-01 2.56e+05  -3.1 5.56e+00    -  1.00e+00 1.06e-04h  1
  29r-2.1869424e-01 9.91e-01 6.51e+02   0.0 0.00e+00    -  0.00e+00 2.66e-07R  3
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30r-2.1042636e-01 9.23e-01 1.85e+03   1.6 3.78e+02    -  1.00e+00 7.81e-04f  1
  31 -2.1041707e-01 9.23e-01 8.99e+02  -4.8 1.50e+01    -  3.50e-01 3.85e-04h  1
  32r-2.1041707e-01 9.23e-01 6.36e+02   1.2 0.00e+00    -  0.00e+00 4.82e-07R  4
  33r-8.8862276e-03 4.97e-01 6.37e+02   3.1 1.26e+03    -  1.07e-02 6.68e-03f  1
  34r-1.5970781e-02 5.08e-01 5.67e+02   1.4 1.32e+01    -  1.00e+00 4.22e-02f  1
  35  8.0787130e-04 9.17e-03 8.87e+01   1.1 1.88e+02    -  4.69e-02 1.25e-01f  1
  36 -2.3518550e-02 0.00e+00 1.37e+04   0.4 2.17e+00    -  3.97e-03 1.00e+00f  1
  37 -1.8805455e-02 0.00e+00 1.11e+00   0.4 9.51e-01    -  1.00e+00 1.00e+00h  1
  38 -1.7449909e-02 0.00e+00 3.81e-01  -0.3 1.72e+00    -  9.86e-01 1.00e+00f  1
  39 -2.3978737e-02 0.00e+00 2.15e-02  -1.0 3.61e+00    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40 -2.4302684e-02 0.00e+00 1.38e-02  -3.1 3.49e-02    -  9.96e-01 1.00e+00h  1
  41 -2.5007489e-02 0.00e+00 2.59e-02  -4.3 2.59e-02    -  9.97e-01 1.00e+00h  1
  42 -2.5718840e-02 0.00e+00 2.61e-02  -5.9 2.61e-02    -  1.00e+00 1.00e+00h  1
  43 -2.6430293e-02 0.00e+00 2.61e-02  -7.3 2.61e-02    -  1.00e+00 1.00e+00h  1
  44 -7.4175847e-02 1.51e-02 2.61e-02  -5.3 2.96e+05    -  7.07e-06 5.89e-06f  1
  45 -1.3141330e-01 1.27e-01 2.61e-02  -7.4 3.72e+05    -  2.02e-05 1.13e-05f  1
  46 -1.5205276e-01 1.58e-01 2.61e-02  -7.4 2.22e+04    -  9.04e-04 1.16e-04f  1
  47 -1.7484215e-01 2.50e-01 2.60e-02  -7.4 2.76e+04    -  8.48e-04 2.40e-04f  1
  48 -1.8401410e-01 2.76e-01 2.60e-02  -7.4 3.18e+04    -  1.07e-03 6.43e-05f  1
  49 -1.9843226e-01 3.54e-01 2.60e-02  -5.1 2.08e+04    -  1.65e-03 2.72e-04f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  50 -2.1122735e-01 9.43e-01 2.60e-02  -5.2 2.08e+04    -  3.03e-03 4.51e-04f  1
  51 -2.1122463e-01 9.43e-01 2.59e-02  -5.1 6.90e-01    -  6.08e-04 1.49e-04h  1
  52 -1.7577586e-01 5.51e-01 1.67e-01  -5.8 1.34e+00    -  1.00e+00 1.00e+00h  1
  53 -1.7055963e-01 5.20e-01 7.44e+00  -4.0 3.27e+00    -  2.92e-01 6.02e-02h  1
  54 -7.0194072e-02 2.42e-01 5.35e+03  -4.0 3.62e+00    -  8.83e-02 1.00e+00h  1
  55 -7.0281067e-02 2.43e-01 6.22e+00  -4.0 4.94e-02    -  4.30e-01 1.00e+00h  1
  56 -7.0328967e-02 2.45e-01 2.62e-02  -4.0 2.02e-03    -  1.00e+00 1.00e+00h  1
  57 -7.0328879e-02 2.45e-01 6.00e+00  -4.0 2.39e-01    -  1.00e+00 8.29e-05h  2
  58 -6.6871118e-02 2.29e-01 4.76e+00  -4.0 4.28e+00    -  5.76e-02 6.70e-02h  1
  59 -6.5418550e-02 2.23e-01 6.38e+00  -4.0 5.06e+00    -  1.00e+00 2.97e-02h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  60 -6.1144197e-02 1.94e-01 5.06e+00  -4.0 5.21e+00    -  1.00e+00 1.09e-01h  1
  61 -1.4374533e-01 6.24e-02 5.31e-01  -4.0 6.05e+00    -  1.32e-01 1.00e+00h  1
  62 -1.9075327e-01 1.76e-01 1.15e-01  -4.0 1.56e+01    -  7.66e-01 1.80e-01h  1
  63 -1.6009455e-01 1.04e-01 2.07e-02  -3.8 3.17e+00    -  1.00e+00 1.00e+00h  1
  64 -1.6095612e-01 1.54e-01 4.94e-03  -2.8 6.40e+00    -  1.00e+00 1.00e+00f  1
  65 -1.6644868e-01 1.13e-01 2.36e-02  -2.8 5.98e+00    -  1.00e+00 6.06e-01h  1
  66 -1.7023044e-01 1.14e-01 1.87e-02  -2.8 7.48e+00    -  1.00e+00 1.00e+00h  1
  67 -1.8720782e-01 1.65e-01 1.03e-03  -2.8 4.63e+00    -  1.00e+00 1.00e+00h  1

I am fairly new to IPOPT so feel free to correct me if it is clear I am misunderstanding anything or if the optimization is obviously not performing well (I have my suspicions...).

来源:https://stackoverflow.com/questions/43850427/ipopt-options-for-reducing-constraint-violation-after-fewer-iterations

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!