8 个版本

新版本 0.2.9+0.108.11 2024年8月20日
0.2.8+0.108.10 2024年4月14日
0.2.6+0.108.9 2023年10月27日
0.2.4+0.108.8 2023年5月18日
0.2.2+0.108.7 2023年3月28日

#1214 in 算法

Download history 11/week @ 2024-05-02 9/week @ 2024-05-09 20/week @ 2024-05-16 27/week @ 2024-05-23 16/week @ 2024-05-30 14/week @ 2024-06-06 18/week @ 2024-06-13 44/week @ 2024-06-20 7/week @ 2024-06-27 1/week @ 2024-07-04 12/week @ 2024-07-11 15/week @ 2024-07-18 24/week @ 2024-07-25 19/week @ 2024-08-01 12/week @ 2024-08-08 136/week @ 2024-08-15

191 次每月下载
用于 6 个包 (3 直接)

Apache-2.0

1.5MB
30K SLoC

C++ 30K SLoC // 0.2% comments Automake 145 SLoC // 0.5% comments Rust 120 SLoC Shell 55 SLoC // 0.3% comments

Osi-src

Package Documentation License

描述

Osi-src 包是一个 *-src 包。此包将 Osi 库链接到 cargo 构建的可执行文件,但不提供 Rust 绑定。Osi 使用 CoinUtils (CoinUtils-src) 支持构建。

通过此包,您无需担心在系统中安装 Osi,这是一个适用于 所有平台 的包。

Osi (Open Solver Interface) 提供了一个抽象基类,用于通用线性规划 (LP) 求解器,以及特定求解器的派生类。许多应用程序可能能够使用 Osi 来将自己与特定的 LP 求解器隔离开。也就是说,根据 OSI 标准编写的程序可以链接到任何具有 OSI 接口的求解器,并应产生正确的结果。与最初的版本相比,OSI 已得到显著扩展。目前,OSI 支持线性规划求解器,并对整数规划有初步支持。

用法

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

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

    extern crate osi_src;
    

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

[dependencies]
coincbc-sys = { version = "0.2" }

配置

功能

以下 Cargo 功能受支持

  • default 用于构建不包含任何求解器支持的 Osi
  • osicpx 用于启用 Cplex 支持;
  • osiglpk 用于启用 GLPK 支持;
  • osigrb 用于启用 Gurobi 支持;
  • osimsk 用于启用 Mosek 支持;
  • osispx 用于启用 Soplex 支持;
  • osixpr 用于启用 XPRESS 支持;

环境

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

  • CARGO_COINUTILS_STATIC 用于静态链接 CoinUtils;
  • CARGO_COINUTILS_SYSTEM 用于链接 CoinUtils 系统库;
  • CARGO_OSI_STATIC 用于静态链接 Osi;
  • CARGO_OSI_SYSTEM 用于链接 Osi 系统库;

将环境变量设置为 1 以启用该功能。例如,要动态链接到系统库,将 CARGO_${LIB_NAME}_SYSTEM 设置为 1;要静态链接到系统库,将 CARGO_${LIB_NAME}_SYSTEMCARGO_${LIB_NAME}_STATIC 都设置为 1

Windows 和 vcpkg

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

vcpkg install osi --triplet x64-windows

要静态链接 Osi,为 x64-windows-static-md 三元组安装 osi

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

要静态链接 Osi 和 C 运行时 (CRT),为 x64-windows-static 三元组安装 osi

vcpkg install osi --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
其他 未测试

贡献

您的贡献非常受欢迎。请毫不犹豫地提交问题或拉取请求。请注意,任何提交给项目包含的贡献将根据 LICENSE 中给出的条款进行许可。

依赖项

~2.5MB
~62K SLoC