7 个版本
新 0.2.8+0.60.9 | 2024 年 8 月 20 日 |
---|---|
0.2.7+0.60.8 | 2024 年 4 月 11 日 |
0.2.6+0.60.8 | 2023 年 10 月 27 日 |
0.2.4+0.60.7 | 2023 年 5 月 18 日 |
0.2.2+0.60.6 | 2023 年 3 月 28 日 |
#1249 在 算法
每月 48 次下载
在 4 个 crate 中使用 (通过 cbc-src)
2MB
53K SLoC
Cgl-src
描述
Cgl-src
crate 是一个 *-src crate。它将 Cgl 库链接到 cargo 构建的可执行文件,但不提供 Rust 绑定。 Cgl 使用 CoinUtils (CoinUtils-src), Osi (Clp-src) 和 Clp (Clp-src)(可选) 构建。
通过此包,您无需担心在系统中安装 Cgl,并且它可以为所有平台构建。
COIN-OR 切片生成库 (Cgl) 是一组可用于与其他 COIN-OR 包一起使用的切片生成器,例如,混合整数线性规划求解器 Cbc (Cbc-src)。Cgl 使用 Osi (Osi-src) 来使用或与求解器通信,例如线性规划求解器 Clp Clp-src。它不直接调用求解器。
使用方法
-
将以下内容添加到您的
Cargo.toml
[dependencies] cgl-src = "\*"
-
将以下内容添加到您的
lib.rs
extern crate cgl_src;
此包不提供绑定。请使用 coincbc-sys, coinclp-sys 来使用 Cbc,Clp 等。
[dependencies]
coincbc-sys = { version = "\*" }
配置
功能
以下 Cargo 功能受支持
-
default
到with_clp
和default_cuts
功能; -
with_clp
用于构建具有 Clp 支持的版本; -
default_cuts
提供以下所有切片生成器; -
组合切片
CglAllDifferent
提供用于 CglAllDifferent 切片生成器;
CglClique
提供用于 CglClique 切片生成器;CglKnapsackCover
提供 CglKnapsackCover 切割生成器;CglOddHole
提供 CglOddHole 切割生成器;
CglZeroHalf
提供 [CglZeroHalf] 切割生成器;
-
流覆盖切割
CglFlowCover
提供 CglFlowCover 切割生成器;
-
Gomory 切割及其变体
CglGomory
= 提供一个 CglGomory 切割生成器,使用时需要with_clp
功能以使用 clp-src;CglGMI
提供一个 [CglGMI] 切割生成器;CglRedSplit
提供一个 CglRedSplit 切割生成器;CglRedSplit2
提供一个 [CglRedSplit2] 切割生成器;
-
提升和投影切割
CglLiftAndProject
提供 CglLiftAndProject 切割生成器;CglLandP
= 提供一个 CglLandP 切割生成器,使用时需要CglGomory
功能;
-
混合整数舍入切割及其变体
CglMixedIntegerRounding
提供 CglMixedIntegerRounding 切割生成器;CglMixedIntegerRounding2
提供 CglMixedIntegerRounding2 切割生成器;CglTwomir
提供 CglTwomir 切割生成器,使用时需要with_clp
功能以使用 clp-src;CglResidualCapacity
提供 CglResidualCapacity 切割生成器;
-
强化
CglDuplicateRow
提供 CglDuplicateRow 切割生成器;CglPreProcess
提供 CglPreProcess 切割生成器;CglProbing
提供 CglProbing 切割生成器;CglSimpleRounding
提供 CglSimpleRounding 切割生成器;
环境
从源代码构建的包默认静态链接。它还提供以下环境变量,允许用户自定义链接到系统库:
CARGO_COINUTILS_STATIC
静态链接到 CoinUtils;CARGO_COINUTILS_SYSTEM
链接到 CoinUtils 系统库;CARGO_OSI_STATIC
静态链接到 Osi;CARGO_OSI_SYSTEM
链接到 Osi 系统库;CARGO_CLP_STATIC
如果启用了with_clp
功能,则静态链接到 Clp;CARGO_CLP_SYSTEM
如果启用了with_clp
功能,则链接到 Clp 系统库;CARGO_CGL_STATIC
静态链接到 Cgl;CARGO_CGL_SYSTEM
链接到 Cgl 系统库;
将环境变量设置为 1
以启用此功能。例如,要动态链接到系统库,将 CARGO_${LIB_NAME}_SYSTEM
设置为 1
;要静态链接到系统库,将 CARGO_${LIB_NAME}_SYSTEM
和 CARGO_${LIB_NAME}_STATIC
均设置为 1
。
Windows 和 vcpkg
在 Windows 上,如果 ${LIB_NAME}_SYSTEM
设置为 1
,则 cgl-src
将使用 vcpkg 来查找 Cgl。在构建之前,您必须为目标三元组和链接类型正确安装 Cgl。例如,为 x86_64-pc-windows-msvc
工具链动态链接,安装 cgl
的 x64-windows
三元组。
vcpkg install cgl --triplet x64-windows
要静态链接 Cgl,安装 cgl
的 x64-windows-static-md
三元组。
vcpkg install cgl --triplet x64-windows-static-md
要静态链接 Cgl 和 C 运行时 (CRT),安装 cgl
的 x64-windows-static
三元组。
vcpkg install cgl --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 |
✓ |
其他 | 未测试 |
贡献
非常感谢您的贡献。请不要犹豫,提出问题或发送 pull request。请注意,任何提交给项目的贡献都将根据 LICENSE 中给出的条款进行许可。
依赖项
~3.5–5.5MB
~134K SLoC