微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Matlab中IPOPT的必要梯度和雅可比

如何解决Matlab中IPOPT的必要梯度和雅可比

我有一个带有非线性目标函数和非线性约束的凸优化问题。目标函数和约束是在我的算法过程中通过凸松弛生成的,一开始并不知道。 我的第一次尝试是使用 Matlab 求解器“fmincon”来计算优化问题。它有效,但求解器的计算时间非常长。 所以我的第二次尝试是用 C++ 求解器 IPOPT 解决优化问题。 我已经在 linux 下从 https://github.com/ebertolazzi/mexIPOPT 为 IPOPT 安装了预编译的 MATLAB 接口。此安装使用“MUMPS”作为线性求解器。

求解器需要

  • 初始起点,
  • 变量的下限和上限,
  • 约束的下限和上限,
  • 计算当前点的目标函数函数
  • 计算目标在当前点的梯度的函数
  • 一个评估当前点约束的函数
  • 评估当前点约束的雅可比矩阵的函数
  • 返回一个显示雅可比矩阵稀疏结构的稀疏矩阵的函数
  • 计算当前点拉格朗日的 Hessian 的函数
  • 返回稀疏矩阵的函数,该矩阵显示 Hessian 的稀疏结构。

在我的算法中给出了起点、变量和约束的界限、目标函数和约束的函数。 IPOPT 有一个选项来计算 Hessian 和它的稀疏结构,它具有有限内存的准牛顿近似。 所以未知输入是目标函数的梯度和约束的雅可比矩阵。

我的第一次尝试是在 Matlab 工具箱 INTLAB 中使用梯度近似导数,该工具箱在正向模式下使用自动微分,参见 http://www.ti3.tuhh.de/intlab/demos/html/dgradient.html

通过我的安装、设置和输入,IPOPT 比“fmincon”慢三到六倍。

是否有可能更有效地计算导数?

为什么求解器的计算时间比使用“fmincon”要长这么多?

如何减少求解器的计算时间?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?