我试图熟悉约束编程。
到目前为止,我所看到的所有文档/视频都只包含基于CP库利用率的顶级概念和代码示例的描述(如Choko,Gecode,JaCoP等)。
我想在没有任何库的情况下在Java中实现至少一些简单的东西。
是否有任何资源可以在Java / C#/ C ++ / Python中找到实现主要CP思想的工作代码? (至少"发送更多钱"问题解决方案)。
(或者,也许,如果有人可以在这里解释,那就太棒了。)
答案 0 :(得分:6)
这取决于你想做什么。
1-如果您想开始使用约束编程(CP)工具,首先需要了解这种方法的建模。为此,您可以将给定问题定义为一组约束,然后将模型发布到求解器(已经知道如何处理这些约束)。
我个人觉得G12_MiniZinc_Distribution(可通过http://www.minizinc.org/获得)及其最新教程是一个非常好的开始方式(最新发布的版本有很多)。如果您想了解CP模型的外观(w.r.t minizinc语法),还有在线模型:http://www.hakank.org/minizinc。
2-如果您对CP有更深入的理论知识,您可以直接从可用库中看到某些技术(例如传播器)的实现,因为从头开发CP解算器(IMO)是一个愚蠢的想法。 这些是一些开源求解器/库:G12,Choco,Mistral,Or-Tools。
答案 1 :(得分:2)
答案 2 :(得分:0)
如果仍然有人在寻找这样的东西:
您可能想签出Minicp 您可以在其中找到幻灯片,它是用Java编写的求解器。
如果您想以高级但快速的编程语言从头开始编写自己的求解器,请查看我的博客系列: ConstraintSolver.jl blog posts