首页
/ Choco-solver 技术文档

Choco-solver 技术文档

2024-12-24 20:50:38作者:尤峻淳Whitney

1. 安装指南

系统要求

  • JDK 8+
  • Maven 3+

Maven 项目中添加依赖

在 Maven 项目的 pom.xml 文件中添加以下依赖项:

<dependency>
   <groupId>org.choco-solver</groupId>
   <artifactId>choco-solver</artifactId>
   <version>4.10.14</version>
</dependency>

如果您需要使用快照版本,请在 pom.xml 中添加以下仓库配置:

<repository>
    <id>sonatype</id>
    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>

独立库使用

下载包含所有依赖的 jar 文件(choco-solver-4.XX.Y-jar-with-dependencies.jar),并将其添加到应用程序的类路径中。

库使用

下载不包含依赖的 jar 文件(choco-solver-4.XX.Y.jar),并将其添加到应用程序的类路径中。同时,您需要添加所有必要的依赖。

Ibex-2.8.7 安装

要声明连续约束,需要安装 Ibex-2.8.7,具体安装说明请参考 Ibex 官网。

从源代码构建

从 GitHub 下载源代码,移动到源代码目录,然后执行以下命令来构建 jar 包:

$ mvn clean package -DskipTests

如果构建成功,生成的 jar 包将自动安装到本地 Maven 仓库,并在 target 子目录中可用。

2. 项目使用说明

Choco-solver 是一个开源的 Java 库,用于约束编程。它支持多种类型的变量(整数、布尔值、集合、图和实数),多种先进的约束(如 alldifferent、count、nvalues 等),以及多种搜索策略,从基本的(如 first_fail、smallest 等)到复杂的(如基于影响和基于活动的搜索)。

以下是一个基本的使用示例:

// 创建模型
Model model = new Model("my first problem");
// 创建变量
IntVar x = model.intVar("X", 0, 5);
IntVar y = model.intVar("Y", 0, 5);
// 创建并发布约束
model.element(x, new int[]{5,0,4,1,3,2}, y).post();
// 或者通过变量直接创建约束
x.add(y).lt(5).post();
// 获取求解器
Solver solver = model.getSolver();
// 定义搜索策略
solver.setSearch(Search.inputOrderLBSearch(x, y));
// 启动求解过程
solver.solve();
// 打印搜索统计信息
solver.printStatistics();

3. 项目 API 使用文档

Choco-solver 的详细 API 文档可以在其官网上找到。API 文档提供了每个类和方法的详细描述,以及使用示例。

4. 项目安装方式

请参考上述 "安装指南" 部分获取项目安装方式的具体步骤。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
52
461
kernelkernel
deepin linux kernel
C
22
5
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
349
381
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
131
185
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
873
517
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
336
1.09 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
179
264
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
608
59
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4