当前位置: 首页 > 知识库问答 >
问题:

IPOPT选项用于减少迭代后的约束冲突

邵子平
2023-03-14

我正在使用通过OpenMDAO实现的IPOPT,在理解和控制停止标准方面遇到了一些问题。

这是我具体经历的:最初,IPOPT能够找到一个看起来更好的解决方案,尽管约束有点违反(直觉告诉我,调整几个参数可能会使其进入可行区域)。从这次讨论中,我了解到“线性或非线性等式或不等式约束在解算器在最终迭代中完成收敛之前不一定会得到满足”,因此我想知道是否可以更改容差,使解算器能够更快地开始完全满足约束(我是否正确理解了这一点?)。目前,几乎所有评估都处于不可行状态。

我意识到这种方法会导致一个不太理想的解决方案,但是我的函数评估在计算上非常昂贵,所以我希望能够对更早退出进行某种控制,但结果可行。当我查看IPOPT终止留档时,我不清楚如何做到这一点。(dual_inf_tol?)

这里是一个尚未收敛的优化的一些输出,以防有用。我的每个参数大约在-30到30之间,我的约束都有一个上限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

我对IPOPT相当陌生,所以如果很明显我误解了什么,或者如果优化明显表现不佳,请随时纠正我(我有我的怀疑...)。

共有1个答案

狄安歌
2023-03-14

在MATLAB中使用IPOPT时,我也遇到了同样的问题。我已将此选项“gamma_theta”设置为1e-2。这降低了违反约束的松弛因子。这对我有用。希望我有所帮助!

有关该选项的更多信息,请参见下文。"http://casadi.sourceforge.net/v2.1.1/api/internal/d7/d2f/classcasadi_1_1IpoptInterface.html"

 类似资料:
  • 来自constraints模块的函数在优化过程中为网络的参数施加约束 惩罚项基于层进行惩罚,目前惩罚项的接口与层有关,但Dense, Conv1D, Conv2D, Conv3D具有共同的接口。 这些层通过一下关键字施加约束项 kernel_constraint:对主权重矩阵进行约束 bias_constraint:对偏置向量进行约束 from keras.constraints import m

  • 来自constraints模块的函数在优化过程中为网络的参数施加约束 惩罚项基于层进行惩罚,目前惩罚项的接口与层有关,但Dense, TimeDistributedDense, MaxoutDense, Covolution1D, Covolution2D, Convolution3D具有共同的接口。 这些层通过一下关键字施加约束项 W_constraint:对主权重矩阵进行约束 b_constr

  • 我见过其他的链接错误,但没有一个能说明如何使用罐子。当我在Jboss中部署我的应用程序时,它可以正常工作,但当我将应用程序部署到websphere时,我遇到了这种链接错误。在这里可以找到一个类似的问题:调用webservice方法时出现LinkageError,但不确定如何修复它 它主要是从和加载的,带有共享类 我所拥有的是jsp调用Web服务。从消息中,我看到的唯一jars来自axis.jar,

  • 我在WebSphereApplicationServer(8.5.5.14)中遇到了LinkageError。这里也发现了类似的问题LinkageError 原因:java。lang.LinkageError:解析方法“javax/xml/soap/SOAPElement.getElementQName()Ljavax/xml/namespace/QName;”时加载约束冲突:loader“com

  • 问题内容: 我在使用JPA / Hibernate(3.5.3)设置时遇到麻烦,在这里我有一个实体,即“ Account”类,该类具有子实体列表,“ Contact”实例。我试图能够将Contact的实例添加/删除到Account的List 属性中。 将新实例添加到集合中并调用saveOrUpdate(account)可以保留所有可爱的东西。如果我然后选择从列表中删除该联系人并再次调用saveOr

  • 问题内容: 我试图在数据库上运行一些更新脚本,但出现以下错误: ALTER TABLE语句与FOREIGN KEY约束“ FK_UPSELL_DT_AMRNO_AFMKTG_REF”冲突。数据库“ ECOMVER”的表“ dbo.AFFILIATE_MKTG_REF”的列“ AMRNO”中发生了冲突。 我正在运行以下脚本: AMRNO是表AFFILIATE_MKTG_REF中的PK。 另外,我尝试