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 数学
每月 56 次下载
1MB
8K SLoC
Mosek 10.2 Rust 接口
- Mosek 优化软件:https://mosek.com/
- 此软件包的 GitHub 仓库:https://github.com/MOSEK/mosek.rust
- Rust 语言:https://www.rust-lang.com
- 预包装的 Crates 可从 https://crates.io/crates/MOSEK 获取
该软件包应适用于
- 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 发行版(这需要外部工具
curl
、tar
和bzip2
)。在 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 当前仅依赖于 libc
、itertools
和 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