3 个版本
0.1.2 | 2022年10月7日 |
---|---|
0.1.1 | 2021年4月26日 |
0.1.0 | 2020年5月13日 |
#1200 在 数学 中
1,829 每月下载量
在 8 个包中使用(通过 coin_cbc)
10KB
167 行
Coin CBC Rust 绑定
Rust 使用 C API 对 CoinOR CBC MILP 求解器进行绑定的封装。
在 Debian 10, AMD64, coinor-libcbc3 2.9.9+repack1-1 上测试。有关安装 libCbc
依赖项的更多详细信息,请参阅下文。
coin_cbc_sys
此包公开了 C 函数的原始绑定。
coin_cbc
此包通过 coin_cbc_sys
公开了安全的 Rust 绑定。 coin_cbc::raw::Model
直接将 C 函数翻译为 Rust,并通过断言来保证安全使用。 coin_cbc::Model
提供了一个更用户友好、Rust 风格和高效的 API:它已成功用于解决包含 250,000 个二进制变量的 MILP,且开销可忽略不计。
示例
请参阅示例目录。
先决条件:安装 Cbc
库文件
当编译依赖于 coin_cbc
的项目时,需要将 COIN-OR
求解器 Cbc
的库文件安装到您的系统上。在具有管理员权限的 Debian 系统上,这可以通过以下方式轻松实现
sudo apt install coinor-libcbc-dev
如果您的系统上已安装 pkg-config
,则将使用它来查找库。
对于其他系统,如果没有管理员权限或您需要安装 Cbc
的新版本(例如,带有错误修复),您可以通过 coinbrew
安装 Cbc
: https://coin-or.github.io/user_introduction#building-from-source
然后您必须
- 将生成的库文件注册到您的系统中,或者
- 为
cargo
提供该库的位置。对于第一种选择,coinbrew
在编译成功后提供命令建议。第二种选择可以通过
RUSTFLAGS='-L /path/to/your/cbc/install/lib' cargo test
并行解决多个问题
默认情况下,此crate强制执行全局锁,即使从多个线程并行调用solve
,也会强制多个问题按顺序解决。这是因为默认情况下,libcbc不是线程安全的。如果您使用CBC_THREAD_SAFE
选项自行编译了libcbc,可以通过禁用此crate上的singlethread-cbc
功能来禁用此行为。如果您不确定是否有一个线程安全的libcbc,请不要禁用此功能,否则您将面临内存损坏漏洞的风险。
许可证
lib.rs
:
为CBC 2.9提供的原始coin cbc绑定。有关文档,请参阅官方文档。
无运行时依赖
~5KB