Table of Contents

Лабораторная работа №5: Исследование моделей планирования действий в системах искусственного интеллекта

Цель работы

Изучение принципов описания и решения задачи планирования на основе продукционной модели с использованием механизма поиска в пространстве состояний.

Основные теоретические положения

Задача построения башни из блоков (кубиков) заключается в последовательном выборе из неупорядоченной кучи блоков и постановки их друг на друга. План решения задачи представляет собой чередование двух фаз: выбора блока из кучи и установки его в башню. При этом больший по размерам блок не может ставиться на меньший по размерам и, следовательно, на каждом шаге решения задачи необходимо выбирать из кучи самый большой блок.

Каждый блок характеризуется размером, цветом и положением, поэтому для его описания можно использовать следующий шаблон:

(deftemplate block 
  (slot size (type INTEGER))
  (slot place (type SYMBOL))
  (slot color (type SYMBOL))
)

Каждый блок может находиться либо в куче (heap), либо в руке (hand), когда он выбран из кучи, либо в башне (tower).

В результате решения задачи необходимо последовательно вывести информацию о действиях, составляющих план её решения и взаимное положение блоков в построенной по данному плану башне с указанием их цвета. С этой целью для блоков, находящихся в башне, необходимо определить отношение, указывающее, какой блок (upper) на каком (lower) стоит:

(deftemplate on 
  (slot upper (type SYMBOL))
  (slot lower (type SYMBOL))
  (slot place (type SYMBOL)(default heap))
)

Если блок ставится в основание башни, слоту place присваивается значение tower, а слоты upper и lower остаются неопределенными. Если блок ставится на другой блок, слотам upper и lower должны присваиваться значения цветов соответствующих блоков.

Поскольку план решения задачи представляет собой чередование фаз поиска в компоненте пространства состояний («куче») самого большого блока (find) и его установки в башню (build), необходимо иметь факт, определяющий текущую задачу. Его можно определить с помощью следующего шаблона:

(deftemplate goal 
  (slot current-task (type SYMBOL))
)

Для решения задачи необходимы правила для следующих действий:

Правило установки начального значения текущей задачи должно активироваться исходным фактом (initial-fact) и устанавливать в качестве текущей задачи find.

Правило выбора из кучи самого большого блока должно активироваться следующими условиями:

Действия правила:

Правило установки блока в основание башни (первого блока) имеет следующие условия активации:

Действия правила:

Правило установки в башню последующих блоков имеет условия активации:

Действия правила:

Правило определения окончания процесса должно активироваться, когда в куче больше нет блоков и удалять из рабочей памяти факт текущей задачи.

Постановка задачи

Разработать и отладить на языке CLIPS программу решения задачи планирования постройки башни из блоков с пошаговым отображением плана построения башни.

Порядок выполнения работы

  1. Разработать программу решения задачи планирования на языке CLIPS, реализующую описанные выше правила, в соответствии с вариантом задания, указанным в таблице.
    Исходное состояние должно описываться конструкцией deffacts, содержащей четыре факта, соответствующих блокам в куче.
  2. Вывод результатов на экран должен обеспечивать пошаговое отображение плана построения башни.

Варианты заданий

Для каждого блока в таблице через слеш указаны параметры: цвет/размер.
№ варианта Блок-1 Блок-2 Блок-3 Блок-4
1 синий/10 зелёный/8 красный/18 жёлтый/15
2 красный/20 коричневый/5 жёлтый/12 зелёный/8
3 жёлтый/15 красный/10 белый/25 коричневый/5
4 зелёный/10 жёлтый/14 чёрный/18 красный/11
5 коричневый/5 белый/25 синий/14 жёлтый/12
6 красный/10 чёрный/18 жёлтый/15 белый/25
7 жёлтый/12 синий/10 зелёный/8 чёрный/18
8 белый/16 красный/5 коричневый/15 синий/10
9 чёрный/18 жёлтый/15 красный/20 белый/10

Содержание отчёта