20241114 记录一下 Ubuntu 20.04 下安装 MPC 中两种常用开源 NLP 优化器 CasADi + Ipopt / acados
可以新建一个文件夹,保存所有源码安装下载的代码
mkdir ~/mpc_dep
1. 安装依赖
# **IPOPT**
sudo apt-get install gcc g++ gfortran git patch wget pkg-config libmetis-dev
# IPOPT - BLAS 和 LAPACK
sudo apt install libblas-dev liblapack-dev
# Casadi - Could NOT find SWIG (missing: SWIG_EXECUTABLE SWIG_DIR)
sudo apt-get install swig
# Mumps
sudo apt install libmumps-seq-dev
2. 安装 Ipopt
参考官网
Ipopt: Installing Ipopt
Ipopt 使用一些外部包,这些包不包括在 Ipopt 源代码分发中,例如 ASL(如果您想编译 Ipopt AMPL 求解器可执行文件,需要 AMPL 求解库),Blas 和 Lapack。
Ipopt 还至少需要一个线性求解器来处理稀疏对称不定矩阵。根据不同的需求,有多种选择。请注意,通常优化器中的计算时间大部分都花在求解线性系统上,且选择的线性求解器会影响 Ipopt 的速度和稳定性。因此,尝试不同的线性求解器可能对应用有益。
由于这些第三方软件的许可证与 Ipopt 不同,ipopt 不能将它们的代码与 Ipopt 包一起分发,因此必须自行获取。对于 ASL、HSL 和 MUMPS,COIN-OR 提供了专门的构建系统,这些系统可以生成与 Ipopt 构建系统兼容的库。部分专门的构建系统还配有脚本,可以使用 wget 或 curl 轻松下载代码。
接下来先安装 Ipopt 依赖的库,再安装本体
Pardiso/SPRAL/WSMP/ASL 都是一些特殊应用的库,可以参考官网按需安装。下面是必须和比较通用的依赖。
2.1. BLAS 和 LAPACK
Ipopt 的构建系统会尝试在系统中找到 BLAS 和 LAPACK 的安装版本。在 Ubuntu 上,可以通过安装 libblas-dev
和 liblapack-dev
来提供这些库。
# 刚才安装过了
# sudo apt install libblas-dev liblapack-dev
2.2. HSL(较复杂)
2.2.1 克隆仓库
cd ~/mpc_dep
git clone https://github.com/coin-or-tools/ThirdParty-HSL
cd ThirdParty-HSL
git checkout releases/2.2.4 #