18 个版本 (稳定)

使用旧的 Rust 2015

10.2.1 2024 年 6 月 3 日
10.1.5 2024 年 3 月 5 日
10.1.3 2024 年 2 月 28 日
10.1.1 2023 年 8 月 28 日
0.1.0 2021 年 6 月 17 日

#99 in 数学

Download history 1/week @ 2024-04-25 1/week @ 2024-05-16 201/week @ 2024-05-30 66/week @ 2024-06-06 15/week @ 2024-06-13 2/week @ 2024-06-20 9/week @ 2024-07-04 5/week @ 2024-07-11 4/week @ 2024-07-25 18/week @ 2024-08-01 34/week @ 2024-08-08

每月 56 次下载

BSD-4-Clause

1MB
8K SLoC

Mosek 10.2 Rust 接口

该软件包应适用于

  • Linux x86_64
  • Linux aarch64 (RaspberryPi 4, Amazon Graviton 2 等)
  • Windows x86_64
  • Mac OSX x86_64
  • Mac OSX aarch64

构建 API 需要 MOSEK 库。

  • 如果定义了环境变量 MOSEK_BINDIR_102,它应指向包含 MOSEK 二进制的目录,
  • 否则如果定义了环境变量 MOSEK_INST_BASE,构建脚本将查找 mosek $MOSEK_INST_BASE/mosek
  • 否则构建脚本将在 $HOME/mosek 中查找 MOSEK。
  • 如果上述任何一种方法都没有产生 MOSEK 发行版,在 Linux 和 OSX 上它将尝试下载和解压最新的 MOSEK 发行版(这需要外部工具 curltarbzip2)。在 Windows 上将失败。

例如

export MOSEK_INST_BASE=$HOME/local
cargo build

export MOSEK_BINDIR_102=$HOME/local/mosek/10.2/tools/platform/linux64x86/bin
cargo build

外部依赖项

Mosek Rust API 当前仅依赖于 libcitertools 和 MOSEK 库。

文档

cargo doc

将为所有函数、对象和常量构建简单的API文档。要获取更完整的文档,请参阅https://docs.mosek.com/latest/capi/index.html

示例

示例位于 examples/ 目录下

要编译示例,请运行

cargo build --examples

要运行示例二进制文件,需要在 LD_LIBRARY_PATH (Linux), DYLD_LIBRARY_PATH (OS X) 或 PATH (Windows) 环境变量中添加 MOSEK 库的路径。

在其他项目中使用 MOSEK

要从其他 Rust 项目中使用 MOSEK,请将 "mosek" 添加到依赖项中。通常,指定依赖项的确切主版本和次版本是一个好主意,因为没有保证 MOSEK API 在次版本之间不会发生变化(尽管通常变化不会很大)。

例如,添加到您的 Cargo.toml

[dependencies]
mosek = "10.2"

为什么要在 Mosek 中使用 Rust?

Rust 相比 MOSEK 直接支持的其他语言有许多优势。在数据处理方面,它比 Python、Java 或 .NET 快,并且比 C 或 C++ 安全得多。当构建非平凡模型时,形成问题的输入数据所需的时间也可能变得非平凡。当效率至关重要时,传统的语言选择会是 C 或 C++,但现在 Rust 提供了一个更安全的替代方案。

与 Java 和 .NET 相比,在构建复杂约束矩阵等情况下,Rust 在许多情况下要快一些。

最后,它看起来很好。Rust 语言设施允许我们非常紧凑地编写许多数组操作,从而生成简洁且易于阅读的模型代码。

依赖项

约 470KB