我正在为机器人系统编写知识库。该系统实际上由两部分组成:知识库中的规则和传感器读数生成的一组谓词。
例如,可能的规则:
do(stop) :- obstacleDist(N), N<1.
do(shoot(E)) :- canSee(E), enemy(E).
传感系统产生如下谓词:
canSee(plane).
obstacleDist(3.5).
工作流程包括咨询传感器生成的谓词,咨询规则引擎,然后查询要做什么。(例如做(X)。)
问题是,如果(例如)canSee谓词不是由传感器产生的,prolog在查看规则do(shoot(E))时会抱怨Undefined procedure。
一种可能的解决方法是在规则中生成基本谓词列表(如canSee(nothing)),但我不确定这是最好的方法。
有任何想法吗?