ubuntu 环境下 IPOPT 安装与使用

安装 Ipopt

$ wget https://www.coin-or.org/download/source/Ipopt/Ipopt-3.12.7.zip 
$ unzip Ipopt-3.12.7.zip 
$ rm Ipopt-3.12.7.zip
$ cd Ipopt-3.12.7
$ ./configure
......
configure: Main configuration of Ipopt successful

$ make
$ make test
$ make install

参考:https://www.jianshu.com/p/4cdaa93d460b 

参考:https://github.com/bapaden/ipopt-cmake-demo

下载 HSL MA21求解器  : 

http://www.hsl.rl.ac.uk/ipopt/
https://github.com/casadi/casadi/wiki/Obtaining-HSL

没有学校邮箱的同学,可以选择下载个人版的。

为了避免后续问题,建议安装源码版本的。

#确保安装环境
$ sudo apt-get install libblas3 libblas-dev liblapack3 liblapack-dev gfortran
#方式1:下载HSL安装包后,解压
$ tar -xf coinhsl-archive-linux-x86_64-2014.01.17.tar.gz
$ cd coinhsl-archive-linux-c86_64-2014.01.17

#安装包
$ cd lib && sudo cp -r * /usr/local/lib/ && cd ..
$ cd include && sudo cp -r * /usr/local/include/ && cd ..
$ sudo ldconfig

#方式2:源代码编译
$ tar -xf coinhsl-archive-2014.01.17.tar.gz
$ cd Ipopt-3.12.7/ThirdParty/HSL
$ ln -s ../../../coinhsl-archive-2014.01.17/ coinhsl
$ ./configure --enable-loadable-library
#出现
configure: Configuration of ThirdPartyHSL successful

$ make install 

 在$ make test  过程中出现问题:


# 出现错误:
Exception of type: OPTION_INVALID in file "IpAlgBuilder.cpp" at line 271:
 Exception message: Selected linear solver MA27 not available.
Tried to obtain MA27 from shared library "libhsl.so", but the following error occured:
libhsl.so: cannot open shared object file: No such file or directory

# 解决:
# 将lib copy到根目录下:
$cd Ipopt-3.12.7/ThirdParty/HSL/lib
$ln -s libcoinhsl.so.1.5.6 libhsl.so
$sudo cp -rd * /usr/local/lib
$vim ~/.bashrc
#在最下方添加如下:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

#$ env | grep LD #确认设置好环境变量

$cd Ipopt-3.12.7/lib
$sudo cp * /usr/local/lib/

 然后重新打开一个terminal 或者 $ bash ~/.bashrc

回到IPOPT环境下进行编译

$ make test
$ make install

编译成功后,可以看到目录下有这几个文件夹"bin", "lib" and "include"

 

有时候需要安装CppAd,安装方法:

sudo apt-get update -y
sudo apt-get install -y cppad

没有装CppAd可能会出现下面的问题:

example.cpp:1:33: fatal error: cppad/ipopt/solve.hpp: No such file or directory

出现问题:

/usr/include/cppad/ipopt/solve_callback.hpp:16:40: fatal error: coin/IpIpoptApplication.hpp: No such file or directory

解决办法:(参考:https://zhuanlan.zhihu.com/p/34650692)

$sudo cp ~/Ipopt-3.12.7/include/* /usr/local/include

AMPL 的C++ API 

方法:https://ampl.com/api/latest/cpp/getting-started.html

下载:https://ampl.com/products/api/

 

 

学习例子参考: 

1)https://github.com/mez/model_predictive_controller_cpp

2)https://github.com/tianchenji/CarND-MPC-Project

 

你可能感兴趣的:(C++)