基本上我试图让AI代理根据给定的感知导航一个世界。我的问题是处理代理如何移动。基本上,我创建了find_action/4,以便我们传递知觉,行动,当前单元格以及代理正在面对的方向。由于它代表整个代码如下所示:http://wesnoth.pastebin.com/kdNvzZ6Y序言:没有按预期执行代码
我的问题主要是第102到第106行。基本上,在它的当前表单中,代码不起作用,即使代理实际上面向右方,find_action也会被跳过我已经证实了这一点)。这断码如下:
% If we are headed right, take a left turn
find_action([_, _, _, _, _], Action, _, right) :-
retractall(facing(_)),
assert(facing(up)),
Action = turnleft .
然而,经过一番试验我的结论是以下几项工作:
% If we are headed right, take a left turn
find_action([_, _, _, _, _], Action, _, _) :-
facing(right),
retractall(facing(_)),
assert(facing(up)),
Action = turnleft .
我不整肯定这是为什么。我试图创建几个相同的find_action,每个都使用facing(_)格式检查不同的方向,但swipl不喜欢这样并引发错误。