CPMpy/cpmpy

Constraint Programming and Modeling library in Python, based on numpy, with direct solver access.

它解决了什么问题

CPMpy 致力于解决涉及布尔变量和整数变量的组合问题,例如调度、资源分配和优化。它提供了高级约束,当求解器不支持这些约束时,它们会自动分解,从而使复杂问题的表达变得简单。

工作原理

你将决策变量定义为 numpy 数组,添加约束和目标函数,然后调用 solve()。CPMpy 会将你的模型转换为所选的求解器(CP、ILP、SMT、PB、SAT 等),并可以比较不同的求解器。它支持增量求解、假设变量,以及在求解后添加约束或更新目标函数。

适用人群

需要一个轻量级、文档完善且能与科学 Python 生态系统(pandas、plotly、Jupyter)集成的约束编程、运筹学和机器学习领域的研究人员及从业者。它也广泛应用于工业界和学术研究。

亮点

  • 求解器无关:适用于 CP、ILP、SMT、PB 和 SAT 求解器
  • 对机器学习友好:决策变量是支持向量化操作的 numpy 数组
  • 增量求解:支持假设变量、添加约束、更新目标函数
  • 经过广泛测试,拥有庞大的测试套件和模糊测试
  • 提供参数调优、调试、解释生成和 XCSP3 基准测试工具
  • 开源 (Apache 2.0),拥有活跃的社区,欢迎贡献

相关

  • 项目
  • 项目
  • 项目
  • 项目