#coin-or #solver #link #build #osi #src #cgl

sys cgl-src

将 Coin-OR Cgl 作为 crate 分发

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)

Apache-2.0

2MB
53K SLoC

C++ 52K SLoC // 0.1% comments Automake 232 SLoC // 0.6% comments Rust 192 SLoC Shell 11 SLoC // 0.3% comments

Cgl-src

Package Documentation License

描述

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。它不直接调用求解器。

使用方法

  1. 将以下内容添加到您的 Cargo.toml

    [dependencies]
    cgl-src = "\*"
    
  2. 将以下内容添加到您的 lib.rs

    extern crate cgl_src;
    

此包不提供绑定。请使用 coincbc-sys, coinclp-sys 来使用 Cbc,Clp 等。

[dependencies]
coincbc-sys = { version = "\*" }

配置

功能

以下 Cargo 功能受支持

  • defaultwith_clpdefault_cuts 功能;

  • with_clp 用于构建具有 Clp 支持的版本;

  • default_cuts 提供以下所有切片生成器;

  • 组合切片

    • CglZeroHalf 提供 [CglZeroHalf] 切割生成器;
  • 流覆盖切割

  • Gomory 切割及其变体

    • CglGomory = 提供一个 CglGomory 切割生成器,使用时需要 with_clp 功能以使用 clp-src
    • CglGMI 提供一个 [CglGMI] 切割生成器;
    • CglRedSplit 提供一个 CglRedSplit 切割生成器;
    • CglRedSplit2 提供一个 [CglRedSplit2] 切割生成器;
  • 提升和投影切割

    • CglLiftAndProject 提供 CglLiftAndProject 切割生成器;
    • CglLandP = 提供一个 CglLandP 切割生成器,使用时需要 CglGomory 功能;
  • 混合整数舍入切割及其变体

  • 强化

环境

从源代码构建的包默认静态链接。它还提供以下环境变量,允许用户自定义链接到系统库:

  • 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}_SYSTEMCARGO_${LIB_NAME}_STATIC 均设置为 1

Windows 和 vcpkg

在 Windows 上,如果 ${LIB_NAME}_SYSTEM 设置为 1,则 cgl-src 将使用 vcpkg 来查找 Cgl。在构建之前,您必须为目标三元组和链接类型正确安装 Cgl。例如,为 x86_64-pc-windows-msvc 工具链动态链接,安装 cglx64-windows 三元组。

vcpkg install cgl --triplet x64-windows

要静态链接 Cgl,安装 cglx64-windows-static-md 三元组。

vcpkg install cgl --triplet x64-windows-static-md

要静态链接 Cgl 和 C 运行时 (CRT),安装 cglx64-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