如何在Prolog代码中解决此算法? (生产系统)

时间:2019-01-10 08:27:02

标签: prolog

我是Prolog的最大新手之一,我试图了解如何将以下谜语编写为Prolog代码:

“为了说明实际的生产系统,我们考虑了 接下来的任务。我们有三块不同大小的砖块坐在 一堆我们要确定三个可定位的位置 用机器人的“手”把砖砌起来;将这些位置称为1、2和3。我们的目标 是按照大小顺序将砖块放在这些位置, 位置1最大,位置3最小。”

那么这实际上如何工作?我认为首先,需要有一个这样的工作记忆:

(brick name: brick1 size: 3 position: heap)
(brick name: brick2 size: 4 position: heap)
(brick name: brick3 size: 5 position: heap)

目标是位置1的Brick3,位置2的Brick2和位置3的Brick 1。

我也知道我需要2条生产规则,第一个规则将最大的砖放在手边,另一个规则将手中的砖放在下一个位置,但是我如何将这些规则表示为Prolog代码而我将运行什么命令以获得结果?

编辑:我只知道我的规则应该是:

IF (brick position: heap name: n size: s) 
−(brick position: heap size:{> s}) 
−(brick position: hand) 
THEN MODIFY 1 (position hand) 

IF (brick position: hand) 
(counter value: i)
THEN MODIFY 1 (position i) MODIFY 2 (value [i + 1])

0 个答案:

没有答案