9 个版本
0.1.8 | 2023 年 8 月 29 日 |
---|---|
0.1.7 | 2022 年 10 月 5 日 |
0.1.6 | 2021 年 9 月 10 日 |
0.1.5 | 2021 年 4 月 26 日 |
0.1.0 | 2020 年 5 月 13 日 |
#59 in 数学
1,724 每月下载次数
用于 7 个 Crates (5 个直接使用)
56KB
1K SLoC
Coin CBC Rust 绑定
Rust 使用 C API 绑定到 CoinOR CBC MILP 求解器。
在 Debian 10, AMD64, coinor-libcbc3 2.9.9+repack1-1 上进行测试。有关安装 libCbc
依赖项的更多详细信息,请参阅以下内容。
coin_cbc_sys
此 crate 提供了对 C 函数的原始绑定。
coin_cbc
此 crate 提供了使用 coin_cbc_sys
的安全 Rust 绑定。 coin_cbc::raw::Model
提供了对 C 函数的直接翻译,并通过 assert 保证安全使用。 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
并行解决多个问题
默认情况下,该软件包强制实施全局锁,即使 solve
从多个线程并行调用,也会强制多个问题顺序解决。这是因为默认情况下,libcbc 不是线程安全的。如果您已使用 CBC_THREAD_SAFE
选项编译了自己的 libcbc,可以通过禁用此软件包上的 singlethread-cbc
功能来禁用此行为。如果您不确定是否具有线程安全的 libcbc,请不要禁用此功能,否则您将面临内存损坏漏洞的风险。