This shows you the differences between two versions of the page.
courses:knowledge_representation_and_artificial_intelligence_systems:lab5 [2019/07/12 14:13] andrey.suchkov [Варианты заданий] |
courses:knowledge_representation_and_artificial_intelligence_systems:lab5 [2022/12/10 09:08] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Лабораторная работа №5: Исследование моделей планирования действий в системах искусственного интеллекта ====== | ||
- | ===== Цель работы ===== | ||
- | Изучение принципов описания и решения задачи планирования на основе продукционной модели с использованием механизма поиска в пространстве состояний. | ||
- | ===== Основные теоретические положения ===== | ||
- | Задача построения башни из блоков (кубиков) заключается в последовательном выборе из неупорядоченной кучи блоков и постановки их друг на друга. План решения задачи представляет собой чередование двух фаз: выбора блока из кучи и установки его в башню. При этом больший по размерам блок не может ставиться на меньший по размерам и, следовательно, на каждом шаге решения задачи необходимо выбирать из кучи самый большой блок. | ||
- | |||
- | Каждый блок характеризуется //размером//, //цветом// и //положением//, поэтому для его описания можно использовать следующий шаблон: | ||
- | <code> | ||
- | (deftemplate block | ||
- | (slot size (type INTEGER)) | ||
- | (slot place (type SYMBOL)) | ||
- | (slot color (type SYMBOL)) | ||
- | ) | ||
- | </code> | ||
- | Каждый блок может находиться либо в куче (''heap''), либо в руке (''hand''), когда он выбран из кучи, либо в башне (''tower''). | ||
- | |||
- | В результате решения задачи необходимо последовательно вывести информацию о действиях, составляющих план её решения и взаимное положение блоков в построенной по данному плану башне с указанием их цвета. С этой целью для блоков, находящихся в башне, необходимо определить отношение, указывающее, какой блок (''upper'') на каком (''lower'') стоит: | ||
- | <code> | ||
- | (deftemplate on | ||
- | (slot upper (type SYMBOL)) | ||
- | (slot lower (type SYMBOL)) | ||
- | (slot place (type SYMBOL)(default heap)) | ||
- | ) | ||
- | </code> | ||
- | Если блок ставится в основание башни, слоту ''place'' присваивается значение ''tower'', а слоты ''upper'' и ''lower'' остаются неопределенными. Если блок ставится на другой блок, слотам ''upper'' и ''lower'' должны присваиваться значения цветов соответствующих блоков. | ||
- | |||
- | Поскольку план решения задачи представляет собой чередование фаз поиска в компоненте пространства состояний (<<куче>>) самого большого блока (''find'') и его установки в башню (''build''), необходимо иметь факт, определяющий текущую задачу. Его можно определить с помощью следующего шаблона: | ||
- | <code> | ||
- | (deftemplate goal | ||
- | (slot current-task (type SYMBOL)) | ||
- | ) | ||
- | </code> | ||
- | Для решения задачи необходимы правила для следующих действий: | ||
- | * установки начального значения текущей задачи; | ||
- | * выбора из кучи самого большого блока; | ||
- | * установки первого блока в основание башни; | ||
- | * установки в башню всех последующих блоков; | ||
- | * определения окончания процесса, когда в куче нет больше блоков. | ||
- | //Правило установки начального значения текущей задачи// должно активироваться исходным фактом (''initial-fact'') и устанавливать в качестве текущей задачи ''find''. | ||
- | |||
- | **Правило выбора из кучи самого большого блока** должно активироваться следующими условиями: | ||
- | * текущая задача -- ''find''; | ||
- | * наличие в куче блока, для которого не существует большего по размерам. | ||
- | Действия правила: | ||
- | * взять найденный блок в руку (изменить его местоположение на ''hand''); | ||
- | * изменить текущую задачу на ''build''. | ||
- | **Правило установки блока в основание башни** (первого блока) имеет следующие условия активации: | ||
- | * текущая задача -- ''build''; | ||
- | * имеется блок в руке; | ||
- | * отсутствуют блоки в башне -- нет блока, у которого значение слота ''place'' равно ''tower''. | ||
- | Действия правила: | ||
- | * изменить местоположение блока в руке на ''tower''; | ||
- | * изменить текущую задачу на ''find''. | ||
- | **Правило установки в башню последующих блоков** имеет условия активации: | ||
- | * текущая задача -- ''build''; | ||
- | * имеется блок в руке (для него надо запомнить цвет); | ||
- | * имеется блок в башне, на котором не стоит другой блок (для него также надо запомнить цвет). | ||
- | Действия правила: | ||
- | * модифицировать местоположение блока в руке на ''tower''; | ||
- | * установить факт, что новый блок находится на блоке, который был до этого верхним; | ||
- | * изменить текущую задачу на ''find''. | ||
- | **Правило определения окончания процесса** должно активироваться, когда в куче больше нет блоков и удалять из рабочей памяти факт текущей задачи. | ||
- | ===== Постановка задачи ===== | ||
- | Разработать и отладить на языке CLIPS программу решения задачи планирования постройки башни из блоков с пошаговым отображением плана построения башни. | ||
- | ==== Варианты заданий ==== | ||
- | <note important>Для каждого блока в таблице через слеш указаны параметры: цвет/размер.</note> | ||
- | ^ № варианта ^ Блок-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 | | ||
- | ===== Порядок выполнения работы ===== | ||
- | - Разработать программу решения задачи планирования на языке CLIPS, реализующую описанные выше правила, в соответствии с вариантом задания, указанным в таблице. \\ Исходное состояние должно описываться конструкцией ''deffacts'', содержащей четыре факта, соответствующих блокам в куче. | ||
- | - Вывод результатов на экран должен обеспечивать пошаговое отображение плана построения башни. | ||
- | ===== Содержание отчёта ===== | ||
- | ===== Пример решения задачи ===== | ||
- | |||
- | |||