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