在 Omg-tools 中使用 HSL 求解器

Using HSL solvers in Omg-tools

使用 OMG-tools I wish to run an example with an HSL solver, such as the ma57 used in compare_distributed_optimization_quadrotors.py.

首先,我使用 pip 安装了 OMG-tools,它还会自动安装 Casadi and Ipopt. I then followed the Casadi tutorial 以从源代码构建 HSL,我可以确认软件包已安装在 /usr/local/lib 中,但是当 运行 OMG-tools 的示例时,我总是为选定的求解器得到 Invalid_Option。我添加了 link 和教程中提到的环境变量。

在我的系统上使用 Ipopt 设置 HSL 是否需要任何额外的步骤,我需要遵循这些步骤?

我的系统是运行Ubuntu16.04.

我知道了 运行宁。希望这篇短文 guide/advice 能对其他人派上用场,除了我未来的自己。

首先,当您在 OMG-tools 中声明一个新的 problem 时,options 语法应该如下所示:

options = {'horizon_time': horizon_time, 'solver_options': {'ipopt':{'ipopt.linear_solver': 'ma57'}}};

如果您在每个 update_time 的终端中打印出错误 Invalid_Option,则无法识别 ipopt 命令。

如果程序退出说明 ma57 解算器有问题,那么 HSL 已安装,只是它找不到正确的解算器 - 您可能有 HSL 的存档版本。

要安装,请转到 Casadi guide on obtaining HSL follow the first option, building from source. Note, instead of libblas3gf and liblapack3gf, you can also use libblas3 and liblapack3. Once that is done, you need to obtain HSL。下载使用学术许可证访问的两个包(RC,稳定版)之一的源代码。在此步骤中,您需要填写一些表格并等待一两分钟才能收到下载文件的 link。

准备好环境并下载所有必要的文件后,运行按照指南中的说明进行配置,我推荐使用/usr/local,这将在条款中安装包/usr/local/lib:

$> ./configure --prefix=(where_you_want_to_install) LIBS="-llapack" --with-blas="-L/usr/lib -lblas" CXXFLAGS="-g -O2 -fopenmp" FCFLAGS="-g -O2 -fopenmp" CFLAGS="-g -O2 -fopenmp"

配置后,运行 制作并 (sudo) 安装。最后,将 /usr/local/lib 添加到 $LD_LIBRARY_PATH。通过将路径回显到终端来确保路径有效。

现在 ma27ma57 求解器都应该可以工作了。如需有关哪些解算器以及如何使用它们的更多信息,请转至 http://www.hsl.rl.ac.uk/.

PS:每个 Coin-HSL 包都有自己的 README。此外,您可以 运行 configure --help 来理解命令本身。如果您在安装过程中遇到任何问题,请务必阅读两者。