#cp #constraint #programming

cp_sat

Rust 对 Google CP-SAT 约束求解器的绑定

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

Download history 38/week @ 2024-03-15 6/week @ 2024-03-22 39/week @ 2024-03-29 13/week @ 2024-04-05 17/week @ 2024-04-12 4/week @ 2024-04-19 4/week @ 2024-05-03 9/week @ 2024-05-10 12/week @ 2024-05-17 12/week @ 2024-05-24 5/week @ 2024-05-31 39/week @ 2024-06-07 15/week @ 2024-06-14 39/week @ 2024-06-21 1/week @ 2024-06-28

每月下载量 95

Apache-2.0

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