10 个版本
0.3.3 | 2021 年 9 月 29 日 |
---|---|
0.3.2 | 2021 年 9 月 16 日 |
0.2.1 | 2021 年 9 月 13 日 |
0.1.3 | 2021 年 9 月 10 日 |
在 数学 中排名 1175
每月下载量 95 次
48KB
616 行(不含注释)
Google CP-SAT 求解器 Rust 绑定
Rust 对 Google CP-SAT 约束求解器的绑定。
要使用此库,您需要一个 C++ 编译器和 Google or-tools 库文件的安装。
环境变量 ORTOOLS_PREFIX
用于查找包含文件和库文件。如果未设置,则将 /opt/ortools
添加到搜索路径(也将使用经典搜索路径)。
lib.rs
:
该 cp_sat
包提供对 Google CP SAT 的接口。
OR-Tools 安装
为了使 cp_sat
运作,您需要安装一个有效的 OR-Tools。默认情况下,此包将使用默认的 C++ 编译器,并在搜索路径中添加 /opt/ortools
。如果您想提供您的 OR-Tools 安装目录,可以定义环境变量 ORTOOL_PREFIX
。
简要概述
该 builder::CpModelBuilder 提供了一个构建您问题的简单接口。然后您可以轻松地解决和访问求解器的响应。在这里您可以找到 CP SAT 官方文档中第一篇教程的翻译
use cp_sat::builder::CpModelBuilder;
use cp_sat::proto::CpSolverStatus;
fn main() {
let mut model = CpModelBuilder::default();
let x = model.new_int_var_with_name([(0, 2)], "x");
let y = model.new_int_var_with_name([(0, 2)], "y");
let z = model.new_int_var_with_name([(0, 2)], "z");
model.add_ne(x, y);
let response = model.solve();
println!(
"{}",
cp_sat::ffi::cp_solver_response_stats(&response, false)
);
if response.status() == CpSolverStatus::Optimal {
println!("x = {}", x.solution_value(&response));
println!("y = {}", y.solution_value(&response));
println!("z = {}", z.solution_value(&response));
}
}
依赖关系
~1.9–4MB
~72K SLoC