#约束 #csp #组合 #求解 #约束 #可满足性 #整数

libpcp

支持整数算术约束的约束求解器

4 个版本

使用旧Rust 2015

0.7.0 2022年12月21日
0.6.4 2020年6月29日
0.6.3 2020年6月29日
0.6.2 2020年6月29日

#496 in 数学

Apache-2.0

245KB
5.5K SLoC

约束编程库

ptal on Travis CI

PCP是一个库,用于在约束编程范式中建模约束满足问题(CSP)。约束编程是一种范式,用于用数学关系(称为约束)来表述问题,这些关系在变量上(例如,x > y)。约束是一种直观的方法,可以自然地描述许多现实世界问题,这些问题最初作为人工智能和运筹学的子领域出现。约束编程的旗舰应用包括调度、配置和车辆路径问题。约束还应用于音乐、生物和模型检查等各个领域。

这是一种独立的编程范式,仅用Rust编程并不足以掌握约束编程的技巧。这就是为什么我强烈推荐那些想要学习这种范式的人参加离散优化基础建模课程。同时,您也可以查看文档中的运行示例。

PCP在稳定Rust通道上编译。

参考文献

现有的库是无价的研究灵感来源

  • Sylvain Soliman的csar Rust库帮助我入门。
  • 由于许多原因,以下库也很有趣: GeCodeChocoMinion、...

大部分这项工作的根源在于以下研究成果

  • Guido Tack. 《约束传播 - 模型、技术、实现》. 博士学位论文,萨尔兰大学,2009年。
  • Tom Schrijvers、Peter Stuckey和Philip Wadler. 单子约束编程. 《J. Funct. Program.
  • Tom Schrijvers、Guido Tack、Pieter Wuille、Horst Samulowitz和Peter J. Stuckey. 搜索组合子. 《Constraints
  • ...

依赖关系

~1MB
~17K SLoC