26次发布
0.3.4 | 2024年3月31日 |
---|---|
0.2.6 | 2023年9月21日 |
0.2.5 | 2023年7月27日 |
0.1.13 | 2023年3月10日 |
#149 in 算法
2,339 每月下载量
用于 3 个crate (2 直接)
160KB
3K SLoC
russcip
A safe Rust interface for SCIP. This crate also exposes access to the SCIP's C-API through the ffi
module. The project is currently actively developed, issues/pull-requests are very welcome.
安装
通过运行
cargo add russcip --features bundled
The bundled
feature will download a precompiled SCIP as part of the build process. This is the easiest to get started with russcip, instead you could try the from-source or if you want to link against your custom SCIP installation check the section below.
from-source
feature
To build SCIP from source, you can enable the from-source
feature. This will download the SCIP source code and build it as part of the build process.
cargo add russcip --features from-source
自定义SCIP安装
If no feature is not enabled, russcip
will look for a scip installation in the current conda environment, to install SCIP using conda run the following command
conda install --channel conda-forge scip
或者,您可以通过设置环境变量SCIPOPTDIR
来指定安装目录。
russcip已针对SCIP 9.0.0进行测试,但它可能适用于其他版本,具体取决于您使用的功能。
示例
在这里可以找到一个关于如何建模和求解整数规划的示例。要运行示例,您可以使用以下命令
cargo run --example create_and_solve
The raw
feature
您可以通过在您的 Cargo.toml
中指定功能来启用此功能
[dependencies]
russcip = { features = ["raw"] }
这允许您通过 Model
结构体中的 scip_ptr
不安全函数访问底层SCIP原始指针。这可以与 ffi
模块一起使用,以调用尚未在安全接口中包装的SCIP函数。
实现自定义插件
SCIP的一些插件被导入到Rust接口作为特质。目前实现的插件有
名称 | 文件 | 文档 |
---|---|---|
分支规则 | branchrule.rs | docs |
变量定价器 | pricer.rs | docs |
事件处理器 | eventhdlr.rs | docs |
主启发式 | heuristic.rs | docs |
要将自定义插件添加到SCIP Model
实例,您应该实现其特质并调用相应的 include_{PLUGIN_NAME}
方法。有关实现特定插件特质的示例,您可以查看相应文件的测试。
贡献
正在考虑为russcip做出贡献?首先,感谢您!您可以查看我们的问题页面,那里有很多良好的入门问题,或者您可以查看我们的贡献指南。如果您想做出贡献,但不确定该做什么,或者正在考虑一个大功能并想要讨论它是否合理以及最佳实现方式,您可以打开一个新的问题/讨论,或者给我发送一封快速电子邮件@mmghannam。
关于SCIP
SCIP是目前最快的非商业混合整数规划(MIP)和混合整数非线性规划(MINLP)求解器之一。它还是一个约束整数规划和分支-切割-定价的框架。它允许完全控制求解过程并访问到求解器内部的详细信息。
依赖关系
~1.8–4.5MB
~50K SLoC