courses:knowledge_representation_and_artificial_intelligence_systems:lab5

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
courses:knowledge_representation_and_artificial_intelligence_systems:lab5 [2019/07/01 21:23]
andrey.suchkov created
courses:knowledge_representation_and_artificial_intelligence_systems:lab5 [2022/12/10 09:08] (current)
Line 2: Line 2:
 ===== Цель работы ===== ===== Цель работы =====
 Изучение принципов описания и решения задачи планирования на основе продукционной модели с использованием механизма поиска в пространстве состояний. Изучение принципов описания и решения задачи планирования на основе продукционной модели с использованием механизма поиска в пространстве состояний.
 +===== Основные теоретические положения =====
 +Задача построения башни из блоков (кубиков) заключается в последовательном выборе из неупорядоченной кучи блоков и постановки их друг на друга. План решения задачи представляет собой чередование двух фаз: выбора блока из кучи и установки его в башню. При этом больший по размерам блок не может ставиться на меньший по размерам и, следовательно,​ на каждом шаге решения задачи необходимо выбирать из кучи самый большой блок.
 +
 +Каждый блок характеризуется //​размером//,​ //​цветом//​ и //​положением//,​ поэтому для его описания можно использовать следующий шаблон:​
 +<​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 программу решения задачи планирования постройки башни из блоков с пошаговым отображением плана построения башни.
 +
 +===== Порядок выполнения работы =====
 +  - Разработать программу решения задачи планирования на языке CLIPS, реализующую описанные выше правила,​ в соответствии с вариантом задания,​ указанным в таблице. \\ Исходное состояние должно описываться конструкцией ''​deffacts'',​ содержащей четыре факта, соответствующих блокам в куче.
 +  - Вывод результатов на экран должен обеспечивать пошаговое отображение плана построения башни.
 +===== Варианты заданий =====
 +<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 ​ |
 +|  9  |  чёрный/​18 ​ |  жёлтый/​15 ​ |  красный/​20 ​ |  белый/​10 ​ |
 +===== Содержание отчёта =====
 +  * Цель работы.
 +  * Краткое изложение основных теоретических понятий.
 +  * Постановка задачи с кратким описанием порядка выполнения работы.
 +  * Пошаговый план решения задачи.
 +  * Результаты работы программы с краткими выводами.
 +  * Общий вывод по проделанной работе.
 +  * Код программы.
 +
courses/knowledge_representation_and_artificial_intelligence_systems/lab5.1562016190.txt.gz · Last modified: 2022/12/10 09:08 (external edit)