10个稳定版本

2.0.1 2024年6月20日
2.0.0 2024年5月12日
1.3.0 2021年11月16日
1.2.0 2021年10月19日
1.0.1 2021年2月18日

#66 in 数学

25 每月下载量
用于 2 软件包

MIT 许可证

255KB
5.5K SLoC

grb GitHub标签(最新SemVer)

此软件包为Gurobi优化器提供Rust绑定。目前需要Gurobi 9.0或更高版本。

这个库最初是gurobi的分支,该分支似乎不再维护。它已经经历了一系列根本性的API变化。

此软件包支持Gurobi 9.5、10和11。

安装和链接

在开始使用此软件包之前,您应该安装Gurobi并获得许可证

构建

在本节中,假设Gurobi已安装于/opt/gurobi/linux64

建议您使用系统链接器的环境变量以确保可以找到Gurobi。例如,在Linux系统上,可以通过将gurobi安装目录下的lib子目录路径追加到LIBRARY_PATH来完成此操作。例如,在您的~/.profile文件中添加以下内容:

export LIBRARY_PATH="LIBRARY_PATH:/opt/gurobi/linux64/lib"

您也可以在每个项目的基础上将此设置在PROJECT/.cargo/config.toml文件中(见[env] 部分)。

另一种选择是将环境变量GUROBI_HOME设置为Gurobi的安装路径(例如,/opt/gurobi95/linux64)。

Gurobi 共享库的库名中会包含 Gurobi 的主版本号和副版本号。例如,Gurobi 11.0.* 将有一个共享库文件 libgurobi110.so。依赖于这个库的 grb-sys2 crate 将使用 -lgurobi110 链接。在 Linux 上,我们根据 GUROBI_HOME 来猜测库名。如果这个猜测不正确(或者没有设置 GUROBI_HOME,或者你在 Windows 上),你需要设置 GUROBI_LIBNAME 环境变量。例如,假设你的 LIBRARY_PATH 设置为 /opt/gurobi1003/linux64/lib(其中包含 libgurobi100.so),并且没有设置 GUROBI_HOME。那么,你应该设置 GUROBI_LIBNAME=gurobi100,这样在编译期间就会发出正确的 -lgurobi100 标志。

运行

在运行编译后的二进制文件或运行测试时,你可能得到

error while loading shared libraries: libgurobi95.so: cannot open shared object file: No such file or directory

在这种情况下,你需要设置 LD_LIBRARY_PATH(在 Windows 上我相信这被称为 PATH)环境变量,或者在编译期间通过在 RUSTFLAGS 中提供适当的链接器标志将 libgurobi95.so 的路径嵌入到 rpath 中。

对于下面的示例,假设 Gurobi 在路径 /opt/gurobi/linux64/lib/libgurobi95.so 中。你可以在你的 ~/.profile 中像设置 LIBRARY_PATH 变量一样设置 LD_LIBRARY_PATH

export LD_LIBRARY_PATH="LD_LIBRARY_PATH:/opt/gurobi/linux64/lib"

文档

文档可以在 docs.rs 上找到

许可证

本软件在 MIT 许可证 下发布。

依赖

~1.3–1.8MB
~40K SLoC