CLIPS пример программы робот
Primary tabs
Forums:
[другие примеры программ на CLIPS ]
;Робот, находящийся в комнате А перетаскивает ящик из комнаты В в А ;; ШАБЛОНЫ (deftemplate goal (slot action (type SYMBOL)) (slot object (type SYMBOL)) (slot from (type SYMBOL)) (slot to (type SYMBOL)) ) (deftemplate in (slot object (type SYMBOL)) (slot location (type SYMBOL)) ) ;; ФАКТЫ ;; Робот в комнате А, ;; ящик в комнате B, ;; цель - вытолкнуть ящик в комнату A. (deffacts world (in (object robot) (location RoomA)) (in (object box) (location RoomB)) (goal (action push) (object box) (from RoomB) (to RoomA)) ) ;;ПРАВИЛА ;; Прекратить процесс, когда цель будет достигнута. (defrule stop (goal (object ?X) (to ?Y)) (in (object ?X) (location ?Y)) => (halt) ) ;; Если робот отсутствует в том месте, где находится объект, ;; который нужно передвинуть, ;; переместить туда робот. (defrule move (goal (object ?X) (from ?Y)) (in (object ?X) (location ?Y)) ?robot-position <- (in (object robot) (location ?Z&~?Y)) => (modify ?robot-position (location ?Y)) ) ;; Если робот и объект не в том помещении, ;; которое указано в цели, ;; переместить туда робот и объект. (defrule push (goal (object ?X) (from ?Y) (to ?Z)) (in (object ?X) (location ?Y)) ?object-position <- (in (object ?X) (location ?Y)) ?robot-position <- (in (object robot) (location ?Y)) => (modify ?robot-position (location ?Z)) (modify ?object-position (location ?Z)) )
- Log in to post comments
- 10671 reads