#线性规划 #MILP #MIPI #API 绑定 #安全绑定 #用户友好

coin_cbc

Rust 使用 C API 绑定到 CoinOR CBC MILP 求解器

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 数学

Download history 410/week @ 2024-04-22 322/week @ 2024-04-29 261/week @ 2024-05-06 648/week @ 2024-05-13 454/week @ 2024-05-20 600/week @ 2024-05-27 400/week @ 2024-06-03 514/week @ 2024-06-10 498/week @ 2024-06-17 534/week @ 2024-06-24 371/week @ 2024-07-01 424/week @ 2024-07-08 556/week @ 2024-07-15 523/week @ 2024-07-22 386/week @ 2024-07-29 246/week @ 2024-08-05

1,724 每月下载次数
用于 7 Crates (5 个直接使用)

MIT 许可证

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)

然后您必须执行以下操作之一:

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

并行解决多个问题

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

许可证

本项目由 MIT 许可证 通过 Kardinal 发布。

依赖关系