简单约束编程求解器

Rom*_*man 6 java artificial-intelligence mathematical-optimization constraint-programming

我正在努力熟悉约束编程.

到目前为止,我看到的所有文档/视频都只包含基于CP库利用率的顶级概念和代码示例的描述(如Choko,Gecode,JaCoP等).

我想在没有任何库的情况下在Java中实现至少一些简单的东西.

有没有资源可以在Java/C#/ C++/Python中找到实现主要CP思想的工作代码?(至少"发送更多钱"问题解决方案).

(或者,也许,如果有人可以在这里解释,那就太好了).

小智 6

这取决于你想做什么.

1-如果要开始使用约束编程(CP)工具,首先需要了解此方法中的建模.为此,您可以将给定问题定义为一组约束,然后将模型发布到求解器(已经知道如何处理这些约束).

我个人觉得G12_MiniZinc_Distribution(可通过http://www.minizinc.org/获得)及其最新教程是一个非常好的开始方式(最新的发行版有很多型号).如果您想了解CP模型的外观(wrt minizinc语法),还有在线模型:http://www.hakank.org/minizinc.

2-如果你对CP有一个高级的理论知识,你可以直接从可用的库中看到一些技术(例如传播器)的实现,因为从头开发CP解算器是(IMO)一个愚蠢的想法.这些是一些开源求解器/库:G12,Choco,Mistral,Or-Tools.