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