【发布时间】:2016-10-27 17:52:32
【问题描述】:
我是 Prolog 的新手,目前正在研究一个简单的约束规划问题。所以我有四个实数 A,B,C,D 的属性使得 A+B+C+d = ABC*D = 7.11 由于使用整数更容易,我尝试了以下实现:
:- use_module(library(clpfd)).
grocery(Vars):-
Vars=[A,B,C,D],
X #= 100 * A,
Y #= 100 * B,
Z #= 100 * C,
W #= 100 * D,
X+Y+Z+W #= 711,
X*Y*Z*W #= 71100000000.
由于以上将给我部分解决的答案,我尝试将关键字 label(Vars) 放在最后。但这会导致我对grocery(V) 的执行产生
ERROR: Arguments are not sufficiently instantiated.
而grocery([V]) 会给我一个false。谁能告诉我如何做标签?谢谢
编辑:我之前没有调用库 clpfd
【问题讨论】:
-
请显示您实际输入的内容。当我尝试它时,我没有得到任何解决方案,而不是出现错误。
-
那是我实际输入的。一个错误是当我放置标签(Vars)并通过杂货店(V)执行时。
-
如何输入
label(Vars)很重要。您应该输入grocery(Vars), label(Vars).(注意第一次通话后的逗号)。这就是我用你的代码运行的,没有得到错误,但没有得到任何解决方案。如果您输入带有句点的grocery(Vars).,然后输入label(Vars).,那么label(Vars)对前面查询中的Vars一无所知。它们是分开的。
标签: prolog clpfd instantiation-error