python - 如何使用 Python 和 Pyomo 与 Ipopt 获取 Hessian 和拉格朗日梯度来计算 KKT 矩阵

标签 python pyomo ipopt

from pyomo.environ import *
from pyomo.opt import SolverFactory, ProblemFormat
m = ConcreteModel()
m.i = Set(initialize=[1, 2, 3])
init_vals = {1:25E+07, 2:0.0, 3:0.0}
#: Variables
m.x = Var(m.i, initialize=init_vals)
#: Objective
m.oF = Objective(expr=m.x[1]**2 +m.x[2]**2 + m.x[3]**2,
        sense=minimize)
ipopt = SolverFactory('ipopt')
ipopt.solve(m, tee=True)

我想使用拉格朗日的 hessian 和梯度来计算 KKT 矩阵,以实现 NLP 灵敏度。 我怎样才能从 IPOPT 求解器的结果中得到这些...我尝试 ipopt.hessian(),但它没有给出任何东西。请给我一些帮助。

最佳答案

我认为有一种方法可以使用 sIPOPT 和后缀来做到这一点(请参阅 sIPOPT 文档),但更简单的方法可能是使用 Pyomo 的贡献包 PyNumero。您可以找到构建 KKT 矩阵并提取敏感性的示例 here您可以找到 PyNumero here 的安装说明

关于python - 如何使用 Python 和 Pyomo 与 Ipopt 获取 Hessian 和拉格朗日梯度来计算 KKT 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59515369/

相关文章:

python - 皮莫/IPOPT : retrieving computed variables

python - 将左侧列化的列化行格式化为列化数据?

python - 在 Pyomo 中获取目标的梯度和 Hessian

python-3.x - 您如何指定 CPLEX 在 pyomo 中仅使用一个线程?

python - 如何在 Pyomo 约束中建模逻辑或或量词

macos - 在 Mac OS X 10.11.1 (El Capitan) 上为 Matlab R2015a 安装 IPOPT

python - 无法使用 python 从 Linux shell 命令中提取信息

python - psycopg2 的 pip 安装说没有部分错误 'build_ext'

python - Python 中值之间的零填充

c++ - IpOpt 拒绝解决无约束问题