Иллюстрированный самоучитель по введению в экспертные системы

         

Этот пример основан на планировщике


Этот пример основан на планировщике STRIPS, о котором шла речь в главе 3. Программа состоит из выражений трех типов:

  • деклараций (или шаблонов), которые определяют формат векторов в рабочей памяти;

  • определений фактов, которыми задается начальное состояние проблемы;

  • порождающих правил, которые определяют возможные трансформации состояния проблемы.

    Строки, которые начинаются символами ";;", являются комментариями.

    Листинг 5.3. Набор правил для проблемы в системе STRIPS

    ;; Шаблоны

    ;; Цель (goal) представляет собой вектор, состоящий из

    ;; четырех компонентов:

    ;; действие, которое нужно выполнить,

    ;; объект, над которым должно быть выполнено действие;

    ;; исходное положение;

    ;; положение, в которое нужно перейти.

    (deftemplate goal

    (field action (type SYMBOL))

    (field object (type SYMBOL))

    (field from (type SYMBOL))

    (field to (type SYMBOL))

    )

    ;; Вектор 'in' указывает, где находится объект, (deftemplate in

    (field object (type SYMBOL))

    (field location (type SYMBOL)) )

    ФАКТЫ

    ;;Функция 'deffacts' вводит в рабочую память

    ;;описание исходного состояния.

    ;;Функция вызывается при перезапуске системы.

    ;;Исходное состояние объектов следующее.

    ;;Робот находится в комнате А,

    ;;ящик находится в комнате В,

    ;;цель - вытолкнуть ящик в комнату А.

    (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))

    ;; Если робот и объект не в том помещении,

    Содержание  Назад  Вперед







    Forekc.ru
    Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий