未捕获的异常:错误(instantiation_error,(=<)/2)

问题描述 投票:0回答:1

我正在尝试编写一个 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.
prolog instantiation uncaught-exception
1个回答
0
投票

只需使用:之间(1, 7, X),之间(1, 7, Y)。 致谢:brebs

© www.soinside.com 2019 - 2024. All rights reserved.