8 个版本
新版本 0.2.9+0.108.11 | 2024年8月20日 |
---|---|
0.2.8+0.108.10 | 2024年4月14日 |
0.2.6+0.108.9 | 2023年10月27日 |
0.2.4+0.108.8 | 2023年5月18日 |
0.2.2+0.108.7 | 2023年3月28日 |
#1214 in 算法
191 次每月下载
用于 6 个包 (3 直接)
1.5MB
30K SLoC
Osi-src
描述
Osi-src 包是一个 *-src 包。此包将 Osi 库链接到 cargo 构建的可执行文件,但不提供 Rust 绑定。Osi 使用 CoinUtils (CoinUtils-src) 支持构建。
通过此包,您无需担心在系统中安装 Osi,这是一个适用于 所有平台 的包。
Osi (Open Solver Interface) 提供了一个抽象基类,用于通用线性规划 (LP) 求解器,以及特定求解器的派生类。许多应用程序可能能够使用 Osi 来将自己与特定的 LP 求解器隔离开。也就是说,根据 OSI 标准编写的程序可以链接到任何具有 OSI 接口的求解器,并应产生正确的结果。与最初的版本相比,OSI 已得到显著扩展。目前,OSI 支持线性规划求解器,并对整数规划有初步支持。
用法
-
将以下内容添加到您的
Cargo.toml
[dependencies] osi-src = "\*"
-
将以下内容添加到您的
lib.rs
extern crate osi_src;
此包不提供绑定。请使用 coincbc-sys、coinclp-sys 来使用 Cbc、Clp 等。
[dependencies]
coincbc-sys = { version = "0.2" }
配置
功能
以下 Cargo 功能受支持
default
用于构建不包含任何求解器支持的Osi
;osicpx
用于启用 Cplex 支持;osiglpk
用于启用 GLPK 支持;osigrb
用于启用 Gurobi 支持;osimsk
用于启用 Mosek 支持;osispx
用于启用 Soplex 支持;osixpr
用于启用 XPRESS 支持;
环境
该软件包默认从源码构建并静态链接。它还提供了以下环境变量,以允许用户自定义链接到系统库:
CARGO_COINUTILS_STATIC
用于静态链接 CoinUtils;CARGO_COINUTILS_SYSTEM
用于链接 CoinUtils 系统库;CARGO_OSI_STATIC
用于静态链接 Osi;CARGO_OSI_SYSTEM
用于链接 Osi 系统库;
将环境变量设置为 1
以启用该功能。例如,要动态链接到系统库,将 CARGO_${LIB_NAME}_SYSTEM
设置为 1
;要静态链接到系统库,将 CARGO_${LIB_NAME}_SYSTEM
和 CARGO_${LIB_NAME}_STATIC
都设置为 1
。
Windows 和 vcpkg
在 Windows 上,如果 ${LIB_NAME}_SYSTEM
设置为 1
,osi-src
将使用 vcpkg 来查找 Osi。在构建之前,您必须为目标三元组和链接类型安装正确的 Osi。例如,要为 x86_64-pc-windows-msvc
工具链动态链接,为 x64-windows
三元组安装 osi
。
vcpkg install osi --triplet x64-windows
要静态链接 Osi,为 x64-windows-static-md
三元组安装 osi
vcpkg install osi --triplet x64-windows-static-md
要静态链接 Osi 和 C 运行时 (CRT),为 x64-windows-static
三元组安装 osi
vcpkg install osi --triplet x64-windows-static
并使用 +crt-static
选项进行构建
RUSTFLAGS='-C target-feature=+crt-static' cargo build --target x86_64-pc-windows-msvc
请参阅 《Rust 参考》中的“静态和动态 C 运行时” 获取详细信息。
交叉编译
您可以通过向 --target
选项提供 cargo build
提供其他目标的编译。
目标 | 支持 |
---|---|
arm-unknown-linux-gnueabi |
✓ |
arm-unknown-linux-gnueabihf |
✓ |
armv7-unknown-linux-gnueabi |
✓ |
armv7-unknown-linux-gnueabihf |
✓ |
armv7-unknown-linux-musleabi |
✓ |
armv7-unknown-linux-musleabihf |
✓ |
aarch64-unknown-linux-gnu |
✓ |
aarch64-unknown-linux-musl |
✓ |
riscv64gc-unknown-linux-gnu |
✓ |
x86_64-pc-windows-msvc |
✓ |
x86_64-unknown-linux-gnu |
✓ |
x86_64-unknown-linux-musl |
✓ |
其他 | 未测试 |
贡献
您的贡献非常受欢迎。请毫不犹豫地提交问题或拉取请求。请注意,任何提交给项目包含的贡献将根据 LICENSE 中给出的条款进行许可。
依赖项
~2.5MB
~62K SLoC