【发布时间】:2018-10-13 00:58:51
【问题描述】:
我正在尝试创建一个 CLIPS 程序,该程序将采用任何初始堆栈并将其重新排列到任何目标堆栈中。我在断言这一点,但它似乎没有做任何事情。
(assert (stack A B C) (stack D E F) (goal-stack D C B) (goal-stack A) (goal-stack F E))
这是我目前的代码:
(defrule move-direct
;(declare (salience 10000))
?stack1 <- (stack ?block1 $?bottom1)
?stack2 <- (stack ?block2 $?bottom2)
(goal-stack ?block1 ?block2 $?goalbottom)
=>
(retract ?stack1 ?stack2)
(assert (stack ?block1 ?block2 ?bottom2))
(assert (stack $?bottom1))
(printout t ?block1 " moved on top of " ?block2 crlf))
(defrule move-on-floor
; (declare (salience 10000))
?stack1 <- (stack ?top $?blocks ?movethisblock $?bottom1)
;(goal-stack ?movethisblock $?bottom1)
(goal-stack $?blocks ?movethisblock $?bottom2)
=>
(retract ?stack1)
(assert (stack ?top))
(assert (stack $?blocks ?movethisblock $?bottom1))
(printout t ?top " moved on to the floor" crlf))
【问题讨论】:
标签: clips