我正在尝试编写一个 7x7 的板,我需要设置和检查板的限制,所以我做了以下函数:
lim(X, Y) :-
X =< 7,
X >= 1,
Y =< 7,
Y >= 1.
但它一直给我错误“未捕获的异常:错误(instantiation_error,(=<)/2)".
有人知道如何解决这个问题吗?
我尝试更改为:
lim(X, Y) :-
X < 8,
X > 0,
Y < 8,
Y > 0.
但它给了我错误“未捕获的异常:错误(instantiation_error,(<)/2)", and I dont know what to do.
我也尝试搜索错误,我看到的内容是因为我没有使用变量 X 和 Y,所以我将其更改为 X -> La 和 Y -> Ca,这是我使用的变量使用但出现同样的错误,所以这是新的限制函数:
lim(La, Ca) :-
La =< 7,
La >= 1,
Ca =< 7,
Ca >= 1.
有关更多上下文,代码的第一部分如下:
% state -> e(AgentLine, AgentColumn, MachineLine, MachineColumn)
inicial_state(e(1, 2, 2, 2)).
final_state(e(_, _, 7, 2)).
%restrictions
obsta(e(6, 1)).
obsta(e(6, 3)).
obsta(e(7, 4)).
obsta(e(4, 4)).
obsta(e(3, 4)).
obsta(e(2, 4)).
obsta(e(6, 7)).
lim(La, Ca) :-
La =< 7,
La >= 1,
Ca =< 7,
Ca >= 1.
equals(A, A).
%state operator -> op(actual_state, operator, next_state, cost)
op(e(La, Ca, Lm, Cm), up, e(Ls, Cs, Lms, Cms), 1) :-
Ls is La + 1.
只需使用:之间(1, 7, X),之间(1, 7, Y)。 致谢:brebs