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

         

Это законченная программа на языке



;; которое указано в цепи,

;; переместить туда робот и объект.

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

Это законченная программа на языке CLIPS, которую можно запустить на выполнение в среде разработки CLIPS 6.O. В этой программе не нужно было специально предусматривать какие-либо варианты разрешения конфликтных ситуаций, поскольку стратегия, предложенная по умолчанию, всегда обеспечит решение задачи (см. раздел 5.3). Введите в систему текст этой программы и запустите на выполнение:

  • введите (reset),

  • затем введите (run).

    С помощью команды watch посмотрите, в каком порядке будут использоваться специфицированные в программе правила. Во врезке 5.2 представлены трассировка выполнения этой программы и краткие пояснения.

    5.2. Трассировка программы управления роботом

    Представленная ниже карта трассировки будет сформирована при запуске про-граммы в режиме трассировки.

    Команда reset обеспечит перезагрузку описания исходного состояния в рабочую память, а команда run запустит программу на выполнение.

    В карте трассировки каждая строка, которая начинается с символов ==>, представляет добавление вектора в рабочую память, а строка, которая начинается с символов, <==, — удаление вектора из рабочей памяти. Строки, которые начинаются с 'FIRE', представляют активизацию какого-либо правила. Остальные строки пока ,что игнорируйте.

    (reset)

    ==> f-0 (initial-fact)

    => f-1 (in (object robot) (location RoomA))

    ==> f-2 (in (object box) (location RoomB))

    ==> f-3 (goal (action push) {object box)

    (from RoomB) (to RoomA)) CLIPS>

    (run) FIRE 1 move: f-3, f-2, f-1

    <== f-1 (in (object robot) (location RoomA))

    ==> f-4 (in (object robot) (location RoomB))

    FIRE 2 push: f-3, f-2, f-4 <== f_4

    (in (object robot) (location RoomB))

    ==> f-5 (in (object robot) (location RoomA))

    <== f-2 (in (object box) (location RoomB))

    ==> f-6 (in (object box) (location RoomA))

    FIRE 3 stop: f-3, f-6

    [PRCCODE4] Execution halted during the actions of defrule stop.

    CLIPS> (reset)

    <== f-0 (initial-fact)

    <== f-3 (goal {action push)

    (object box) (from RoomB) (to RoomA))

    <== f-5 (in (object robot) (location RoomA))

    <== f-6 (in (object box) (location RoomA))

    CLIPS>

    Обратите внимание на то, что выполнение программы останавливается правилом 'stop'.


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







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