

非线性优化求解器IPOPT
source link: https://blog.csdn.net/nudt_zrs/article/details/123239598?spm=1001.2101.3001.6650.5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-5-123239598-blog-103387026.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=10
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

目录
5、IPOPT的initial gauss 以及 warm star
优化,在Apollo规划模块中占据了重要的地位
Apollo中 OSQP 和 IPOPT 的应用:
OSQP | IPOPT |
参考线:discrete_points_smoother( FemPosSmooth) 参考线:qp_spline_smoother | 参考线:spiral_smoother 分段五次螺旋线非线性优化拟合 参考线:discrete_points_smoother(CosThetaSmooth) ipopt+adol-c |
Lattice中横向规划中使用的基于二次规划的轨迹规划 | Hybrid A*的轨迹优化 |
路径规划的QP 速度规划中DP之后的QP | 速度规划中DP之后的IPOPT |
其中OSQP在之前的文章中测试过,这篇文章主要进行IPOPT的相关实践
非线性优化的一般形式为:
IPOPT是一种常用的非线性优化求解器,使用内点法进行求解
对于复杂问题,需要借助自动微分工具,帮助求解梯度、Yacobian矩阵、Hessian矩阵,
如ADOL-C,CppAD
1、IPOPT的安装(简洁版本)
(1).安装apt包
sudo apt-get install gcc g++ gfortran git patch wget pkg-config liblapack-dev libmetis-dev
(2).安装BLAS and LAPACK
即为前面apt安装的liblapack-dev
(3).安装HSL 官网注册申请下载
需要教育网邮箱申请,
同时下载如下库.并将前面下载的HSL包解压后改名为coinhsl
(例如coinhsl-archive-2021.05.05 => coinhsl
)后复制到ThirdParty-HSL
文件夹中,最后进行编译安装.
(4).安装IPOPT
make test的输出应该如下:
(5).安装成功与否
进入IPOPT源码文件夹如下位置,用官方例子测试
Ubuntu 16.04 安装Ipopt 3.12.7 和 CppAD - 简书
Ubuntu18.04配置Ipopt,CppAD 通过C++求解最优控制_小朱 智能驾驶的博客-CSDN博客_c++ ipopt
2、IPOPT测试案例

3、ADOL-C的使用
4、CppAD的使用
CMakeList.txt

5、IPOPT的initial gauss 以及 warm star
参考链接:
非线性优化求解器IPOPT的使用学习 - Challenging-eXtraordinary
基础理论:
Chapter 11 导数、梯度、 Jacobian、Hessian {Gradient Related Concepts} | 数值分析笔记
梯度向量、Jacobian、Hessian矩阵_Alinooo的博客-CSDN博客_梯度向量怎么求
自动微分工具:ADOL-C、CppAD
自动微分的理论:
ipopt CppAD 非线性规划_梦醒时分1218的博客-CSDN博客_cppad
无人车系统(十):c++与python非线性规(优)划(化)工具_昔风不起,唯有努力生存!-CSDN博客 C++自动微分(Automatic differentiation)原理1_Daniel 的技术笔记 不积跬步无以至千里,不积小流无以成江海。-CSDN博客_c++ 自动微分
自动微分的使用 - propagator的个人空间 - OSCHINA - 中文开源技术交流社区
后记:关于非线性优化,,我只在CasADi(MATLAB,Python)中进行过简单的测试
SX、MX以及Opti方法(像在写数学表达式),使用最基本的Opti方法
还有一种方式是AMPL,我在讲座中看到过
以上方案可以作为研究中初步的仿真测试,实际运行还是要用C++
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK