使用Sicstus 4.2.3和4.3.0之间的time_out区别进行标记

时间:2014-07-16 08:30:10

标签: clpfd sicstus-prolog

在Sicstus 4.2.3中,可以这样做:

| ?- X in 0..2, labeling( [minimize(X), time_out(1000, Lr)],[X] ). 
X = 0,
Lr = success ? yes
| ?- 

如果你在Sicstus 4.3.0中做同样的事情,你会得到:

| ?- X in 0..2, labeling( [minimize(X), time_out(1000, Lr)],[X] ). 
X = 0 ? yes
| ?- 

4.3.0中Lr发生了什么?

您如何知道4.3.0中的解决方案是最佳解决方案还是解决方案是非最佳解决方案?

1 个答案:

答案 0 :(得分:4)

当然这是一个错误。 Lr应该受到'成功'的约束。如果Lr保持未绑定状态,则无法确定解决方案是否最佳。

感谢你报告这个!