#ipopt #optimization #non-linear #constrained #unsafe

sys ipopt-sys

对Ipopt非线性优化库的原始不安全Rust绑定

12个版本

0.5.5 2020年11月26日
0.5.4 2020年3月8日
0.5.1 2019年4月23日
0.5.0 2019年3月28日
0.1.0 2018年3月1日

#6 in #ipopt

Download history 29/week @ 2024-03-11 31/week @ 2024-03-18 20/week @ 2024-03-25 51/week @ 2024-04-01 33/week @ 2024-04-08 39/week @ 2024-04-15 161/week @ 2024-04-22 53/week @ 2024-04-29 100/week @ 2024-05-06 99/week @ 2024-05-13 14/week @ 2024-05-20 26/week @ 2024-05-27 51/week @ 2024-06-03 48/week @ 2024-06-10 39/week @ 2024-06-17 38/week @ 2024-06-24

每月176次下载
用于ipopt

MIT/Apache

75KB
1.5K SLoC

Rust 1K SLoC // 0.1% comments C++ 411 SLoC // 0.0% comments

ipopt-sys

本软件包提供了对Ipopt非线性优化库的不安全Rust绑定。与其他大多数Ipopt包装器不同,我们链接到一个自定义的C接口,称为CNLP,该接口模拟Ipopt的C++ TNLP接口。这有两个目的

  1. 它帮助熟悉Ipopt C++接口的用户过渡到Rust。
  2. 它在后续求解之间持续Ipopt求解器实例,从而消除了对初始数据和边界的额外分配。

这也意味着您将需要一个工作的C++编译器和C++标准库实现,因为CNLP模拟器目前在使用实现中使用了它。

欢迎贡献!

构建

我们提供了从源代码构建Ipopt以及检索二进制文件的不同方法的选项。构建还需要openssllibclang系统库。目前支持获取Ipopt库的方法

  1. 使用pkg-config查找已安装的静态或动态库。

  2. 手动检查系统库目录中的动态库。

  3. 从源代码构建Ipopt。您需要安装fortran编译器库(例如libgfortran)和以下线性求解器之一

    a. 链接MKL。(设置MKLROOT环境变量以指定自定义MKL安装路径或找不到系统路径时。)

    b. 使用MUMPS/METIS构建,并链接到系统安装的OpenBLAS库(Linux)或Accelerate框架(macOS)。如果没有找到系统BLAS/LAPACK库,则将拉取并构建默认的netlib实现。

  4. 从JuliaOpt下载预构建的动态Ipopt库。

这些步骤各有不同的完善程度,目前仅在Linux和macOS系统上进行测试。

MacOS

由于macOS没有附带fortran库,您需要手动安装它。使用homebrew,您可以直接使用以下命令安装gccgfortran

$ brew install gcc

$ brew cask install gfortran

分别。由于homebrew不会自动从/usr/local/lib链接,您需要手动使用以下命令创建符号链接

$ ln -s /usr/local/Cellar/gcc/8.3.0_2/lib/gcc/8/libgfortran.dylib /usr/local/lib/libgfortran.dylib

如果您从gcc套件中安装了libgfortran(注意gcc版本)。否则使用以下命令创建符号链接

$ ln -s /usr/local/gfortran/lib/libgfortran.dylib /usr/local/lib/libgfortran.dylib

如果您直接安装了gfortran

最终,无论您选择哪种方法,libgfortran.dylib必须通过链接器搜索路径可用。

许可证

本存储库根据以下之一进行许可

根据您的选择。

无运行时依赖

~0-4.5MB
~75K SLoC