#线性规划 #MILP #MIP

sys coin_cbc_sys

Rust 使用 C API 对 CoinOR CBC MILP 求解器进行绑定的封装

3 个版本

0.1.2 2022年10月7日
0.1.1 2021年4月26日
0.1.0 2020年5月13日

#1200数学

Download history 425/week @ 2024-04-22 350/week @ 2024-04-29 291/week @ 2024-05-06 679/week @ 2024-05-13 474/week @ 2024-05-20 623/week @ 2024-05-27 414/week @ 2024-06-03 531/week @ 2024-06-10 516/week @ 2024-06-17 557/week @ 2024-06-24 394/week @ 2024-07-01 438/week @ 2024-07-08 577/week @ 2024-07-15 568/week @ 2024-07-22 403/week @ 2024-07-29 267/week @ 2024-08-05

1,829 每月下载量
8 个包中使用(通过 coin_cbc

MIT 许可证

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 安装 Cbchttps://coin-or.github.io/user_introduction#building-from-source

然后您必须

  1. 将生成的库文件注册到您的系统中,或者
  2. cargo 提供该库的位置。对于第一种选择,coinbrew 在编译成功后提供命令建议。第二种选择可以通过
RUSTFLAGS='-L /path/to/your/cbc/install/lib' cargo test

并行解决多个问题

默认情况下,此crate强制执行全局锁,即使从多个线程并行调用solve,也会强制多个问题按顺序解决。这是因为默认情况下,libcbc不是线程安全的。如果您使用CBC_THREAD_SAFE选项自行编译了libcbc,可以通过禁用此crate上的singlethread-cbc功能来禁用此行为。如果您不确定是否有一个线程安全的libcbc,请不要禁用此功能,否则您将面临内存损坏漏洞的风险。

许可证

本项目由MIT许可证Kardinal分发。


lib.rs:

为CBC 2.9提供的原始coin cbc绑定。有关文档,请参阅官方文档。

无运行时依赖

~5KB