【发布时间】:2014-06-29 02:53:27
【问题描述】:
举个小例子:
go:-
length( X, 200 ),
domain( X, 1, 25),
postConstraints( X, Y ),
labeling( [minimize(Y), X ).
如果我们假设postConstraints 设置了一些复杂的约束。
Y 从postConstraints 返回并在标记期间用作成本函数。
我们假设我们对postConstraints 设置的约束一无所知(或知之甚少)。但是我们知道最优解(或好的解)将是 X 包含或多或少均匀分布的可能域。 IE。值 1 将出现大约 8 (200/25) 次,2 将出现大约 8 次,依此类推。
但是我们不知道每个值会出现在什么位置。
如果我们从使用默认标签开始,X 将首先被分配只有 1,这是一个解决方案,但不是一个好的解决方案(高 Y)。通过长时间的搜索,将找到最优解,它在可能的域上或多或少是均匀分布的。
这意味着搜索需要很长时间才能从第一个可能的解决方案转到最佳(或更好的)解决方案。
我认为,如果可以在标记之前对 X 应用初始“猜测”,则搜索会更快。
前任。如果 X 填充了来自域的随机值?
在 Sicstus 有没有办法做到这一点?这是您在labeling 中使用value(Enum) 的地方吗?
【问题讨论】:
标签: prolog clpfd sicstus-prolog