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