嗨我需要一个非确定性约束满足问题工具,因为我需要不同的解决方案,同样的问题输入。有人知道有这种特性的工具吗?
我只知道像Gecode(c ++),Choco(Java)和Curry(Haskell)这样的工具,我认为这些工具是以确定的方式工作的。
答案 0 :(得分:0)
如果您想获得一些随机解决方案,大多数CP工具都支持使用随机启发式方法。例如,标准Gecode分支器具有此选项,例如整数变量的INT_VAR_RND和INT_VAL_RND。要每次都进行不同的搜索,请确保唯一地设置种子。
请注意,使用随机启发式功能不会保证您的分发。例如,您的问题可能只有两个解决方案,但几乎所有随机选择都可能导致其中一个解决方案产生非常偏斜的分布。
答案 1 :(得分:0)
您是否尝试Pareto optimization(又称多目标优化)并让用户选择其中一种帕累托最优解?
人们通过简单地替换Drools Planner类,用BestSolutionRecaller(java,开源)完成了这项工作。请参阅this thread和this thread。 Planner 6.0或6.1将提供开箱即用的帕累托支持。
答案 2 :(得分:0)
与Zayenz所说的类似,您可以使用-randomiseorder
标志Minion来尝试。