如何在Ubuntu系统中安装IPOPT(C++)?

IPOPT是一款开源的非线性规划求解器,可以用来对机器人的运动进行优化控制,下面介绍如何在Ubuntu环境中进行程序包的安装。

1. 在Ubuntu系统里,打开命令行终端并输入:
$ sudo apt update
来更新系统程序包的列表。如果有程序包不是最新版本,使用:
$ sudo apt upgrade
来更新它们。

2. 安装使用IPOPT(C++)所需要的系统程序包:
$ sudo apt install gcc g++ gfortran git make

3. 安装进行线性代数运算所需的系统程序包:
$ sudo apt install liblapack-dev libmetis-dev

4. 安装运行稀疏线性求解器所需的系统程序包。这里选择MUMPS,因为它是开源免费的。如果只用于学术,可以选择HSL Full中的MA57,它的求解速度更快。开源项目COIN-OR Tools中的ThirdParty-Mumps可以用来下载MUMPS,并建立可以被IPOPT识别的库。在该教程撰写时,只有Mumps的4.1版本可以供IPOPT使用,所以需要使用ThirdParty-Mumps的2.1版本。你可以从https://github.com/coin-or-tools/ThirdParty-Mumps下载到正确版本的程序包,并解压到名为"ThirdParty-Mumps"的文件夹。然后你可以在命令行终端中继续下列操作:
$ cd ThirdParty-Mumps
$ ./get.Mumps
$ ./configure
$ make
$ sudo make install
如果安装过程中因缺少一些程序包而导致安装过程中止,请安装所缺少的程序包后再重新尝试。

5. 在命令行终端中安装IPOPT(C++):
$ cd ~/Downloads
$ git clone https://github.com/coin-or/Ipopt.git
如果因某种原因无法与GitHub建立连接,你可以前往https://github.com/coin-or/Ipopt去下载程序包的最新版本并把它解压到名为"Ipopt"的文件夹。然后你可以继续操作:
$ cd Ipopt
$ ./configure
$ make
$ sudo make install

6. 测试IPOPT(C++)的一个示例:
$ cd ./exmaples/hs071_cpp
$ make
$ ./hs071_cpp
如果安装成功,你应该可以看到这个示例问题的求解结果。但是,在该教程撰写时,事实并不是这样的,你必须运行下列命令来安装libmumps-dev程序包,以便运行上述示例。这其中的原因暂时还未知,可能是因为某些所依赖的程序包或某些配置是缺失状态。很诡异的是,即使你在安装libmumps-dev后卸载它,你依然可以运行前述示例。
$ sudo apt update
$ sudo apt install libmumps-dev