【发布时间】:2014-01-25 22:08:29
【问题描述】:
基本上,我试图让 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,每个都使用 faces(_) 格式检查不同的方向,但是 swipl 不喜欢这样并抛出错误。
【问题讨论】:
标签: prolog artificial-intelligence