WWW.LIB.KNIGI-X.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Электронные материалы
 

«ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ УХТИНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Представление знаний в информационных системах ...»

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

УХТИНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Представление знаний в информационных

системах

Лабораторные работы

Методические указания

Ухта 2005

УДК 681.3(075.8)

Х 70

Хозяинова, Т.В. Представление знаний в информационных системах.

Лабораторные работы [Текст]: метод. указания / Т.В. Хозяинова, О.В. Качан,

М.А. Сварник. – Ухта: УГТУ, 2005. – 54 с.: ил.

Настоящие методические указания для выполнения лабораторных работ по дисциплине «Представление знаний в информационных системах»

включают в себя 4 лабораторных работы, пояснения для выполнения заданий и варианты заданий для лабораторных работ. Методические указания предназначены для студентов дневной и заочной формы обучения по направлению 654700 «Информационные системы» (специальность 230201 «Информационные системы и технологии»).

Содержание указаний соответствует рабочей учебной программе.

Методические указания рассмотрены и одобрены кафедрой ИСТ пр. № 4 от 11.11.05 г. и предложены для издания Советом направления 654700 от 11.11.05 г. пр. № 3.

Рецензент доцент, кандидат технических наук Н.А. Николаева Редактор Т.Ю. Калинина План 2005 г., позиция 61.

Подписано в печать 28.12.2005 г. Компьютерный набор.

Объем 54 с. Тираж 70 экз. Заказ № 196.

© Ухтинский государственный технический университет, 2005 169300, г. Ухта, ул. Первомайская,13.



Отдел оперативной полиграфии УГТУ 169300, г. Ухта, ул. Октябрьская,13.

Содержание Введение

Работа № 1. Явные методы представления знаний

Работа № 2. Методы поиска

Работа № 3. Анализ работы ЭС, разработанных на CLIPS

Работа № 4. Разработка классификационной экспертной системы на CLIPS. 40 Варианты.

Лабораторная работа № 1.

Лабораторная работа № 2.

Лабораторная работа №3, 4.

Рекомендуемая литература

Введение Настоящие методические указания по дисциплине «Представление знаний в информационных системах» содержат четыре лабораторных работы.

Методические указания устроены так, чтобы каждая лабораторная работа позволяла познакомиться с одним или несколькими понятиями из области представления знаний и способами реализации этих понятий на языке представления знаний CLIPS.

CLIPS – инструмент для разработки ЭС, созданный специалистами NASA в 1986 г. CLIPS создавался для того, чтобы сделать более удобной разработку программного обеспечения моделирующего поведение человека-эксперта в определенной предметной области. В состав CLIPS входят оболочка экспертной системы, редактор кода и средство для отладки приложений.

Оболочка экспертной системы CLIPS включает следующие базовые элементы:

база фактов и база экземпляров объектов для хранения данных; база правил или база знаний для хранения отношений связывающих факты предметной области (эвристик); система логического вывода для осуществления контроля работы правил. Базовые структуры языка CLIPS упомянуты и разъяснены в текстах лабораторных работ. Детали синтаксиса оставляются на самостоятельное изучение, поскольку есть хорошие руководства ([1-5],[9]), в которых можно отыскать любую использованную в методических указаниях конструкцию и прочесть о её функциональности и условиях использования.

В каждой работе обозначена цель и задачи, в пояснительной записке должно быть отражено решение каждой из задач. Детальный разбор в лабораторных работах выполнен для всех задач каждой работы, за исключением одной, которая оставлена на полностью самостоятельную проработку.





Несмотря на то, что системы, разрабатываемые в третьей и четвёртой лабораторных работах, называются в текстах работ экспертными системами, в общем случае они таковыми не являются, поскольку одним из важнейших свойств ЭС, включенным в её определение, является решение проблем реальной предметной области, в то время как реальность многих предметных областей, представленных в качестве вариантов, можно подвергнуть сомнению.

Поэтому дополнительное задание для этих работ, не отраженное в постановке задач:

представить (как мы это делаем для всех остальных вещей) что всё на самом деле.

Работа № 1. Явные методы представления знаний Методы представления знаний можно разделить на явные и неявные.

Явные методы представления знаний позволяют структурировать проблемную область, выделив в ней некоторые концептуальные объекты, и описать характеристики и способы взаимодействия этих объектов между собой. Для того чтобы рассуждать об отдельных элементах (объектах и группах объектов) получившейся структуры применяются заранее определенные для данного способа представления знаний правила. Таким образом, как сама структура, так и способы её интерпретации «прозрачны» для программиста, воспользовавшегося явным способом представления знаний, а при некоторой, посильной для программиста дополнительной работе и для пользователя, который применил систему, основанную на выбранном явном способе представления знаний. Неявные способы представления знаний не позволяют сформулировать способы отражения проблемной области, которой предполагается оперировать, во внутреннюю структуру, используемую для представления знаний об этой проблемной области. Пользователю системы, построенной на основе одного из неявных способов представления знаний доступны входные и выходные данные; иногда у него также имеется возможность влиять на процесс рассуждения подстройкой одного или нескольких параметров, но эти параметры не соответствуют каким-либо объектам или характеристикам объектов проблемной области, для которой построена система.

Примеры явных и неявных методов представления знаний представлены в табл. 1.

Таблица 1. Методы представления знаний Явные методы представления знаний Неявные методы представления знаний Исчисление высказываний Нейросетевые методы Исчисление предикатов Семантические сети Эволюционные методы (генетические алгоритмы) Сценарии Фреймы Объектно-ориентированные методы Концептуальные графы Упомянутые явные методы делятся на две группы.

К первой относятся формальные языки представления знаний: исчисление высказываний и исчисление предикатов. Становление искусственного интеллекта начиналось с разработки именно формальных языков, основа которых - сохранение истинности операций на корректно построенных выражениях. Однако дальнейшее изучение природы познания человеком окружающего мира подтолкнуло к развитию альтернативные теории, т.н. ассоционистские теории смысла, которые определяют значение объекта в терминах сети ассоциаций с другими объектами. К ассоционистским схемам представления знаний относятся: семантические сети, сценарии, фреймы и концептуальные графы.

Целью данной лабораторной работы является знакомство с явными методами представления знаний: семантическими сетями, сценариями, фреймами, концептуальными графами; а также опробование способов реализации на CLIPS различных методов представления знаний.

Задачи лабораторной работы.

1. Нарисовать семантическую сеть для заданного сообщения, используя как можно больше различных типов связей.

2. Нарисовать семантическую сеть с использованием падежных фреймов.

3. Описать три фрейма, указанных в варианте.

4. Нарисовать концептуальные графы для предложений заданного сообщения, над получившимися графами применить операции ограничения, объединения (и если необходимо, упрощения).

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

6. Создать базу фактов, состоящую из упорядоченных фактов, на основе построенной семантической сети.

7. Создать базу фактов, состоящую из неупорядоченных фактов для фрэймов, указанных в варианте.

Пример.

Сообщение: «Плотник Федоров ежедневно получает более 10 заказов на починку мебели, изготовленной из ДСП. Чаще всего приходится чинить столы и шкафы.»

Фреймы: «мебель», «офисная мебель», «компьютерный стол».

1. Нарисовать семантическую сеть для заданного сообщения, используя как можно больше различных типов связей.

Наиболее удобным формализмом для описания ассоционистских схем представления знаний оказались графы. Семантическая сеть представляет знания посредством ориентированного графа, узлы которого соответствуют фактам или понятиям, а дуги – отношениям или ассоциациям между понятиями. Термин «семантическая сеть» объединяет несколько схем представлений, которые различаются способами именования узлов, связей и правилами вывода, которые определены над этими структурами.

Выделение понятий - особая сложная область, методы классификации предлагаются например в [6]. Классические подходы к классификации предлагают различные контрольные списки кандидатов в понятия (экземпляры понятий).

Примером контрольного списка может служить следующий:

1) люди (роли) - человеческие существа и их роли, выполняющие некоторые функции;

2) предметы – осязаемые материальные объекты или группы объектов;

3) события – то, что происходит с людьми или предметами в заданное время или последовательно;

4) взаимодействия – то, что роли или предметы могут делать с другими ролями или предметами.

Заметим еще раз, что это только один из вариантов контрольных списков, есть и другие, которые включают также понятия места, времени, организации, концепции и пр.

Применив приведённый контрольный список, можно выделить в заданном сообщении следующие понятия:

1) люди и роли: плотник, Фёдоров;

2) предметы: мебель, ДСП, стол, шкаф;

3) события: чинить (столы и шкафы; чаще всего)

4) взаимодействия: заказ.

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

Можно предложить следующий контрольный список стандартизованных отношений между понятиями:

1) «являться» – x является одним из X; например «Фёдоров является плотником».

2) «принадлежать к категории» - категория понятий X принадлежит к категории понятий Y; например «шкаф – это мебель»;

3) «состоять», «быть сделанным из» - x состоит из y и z; например «мебель изготовлена из ДСП».

4) «обладать свойством» - x обладает свойством y со значением z; например (в разбираемом сообщении такого примера нет, поэтому приведём не относящийся к делу) «стол коричневый» – стол обладает свойством цвет со значением корицневый;

5) количественная взаимосвязь – количество x (операция отношения: =; ; и пр.) n; например: «более 10 заказов на починку мебели»;

6) связь «агент-действие» – x делает y; x делает y над z; например, «Плотник Федоров чинит мебель».

Приведённые списки при необходимости могут быть расширены, однако для рассматриваемого сообщения они достаточны и позволяют построить следующую сеть (рис.1):

являться Плотник Федоров

–  –  –

Рисунок 1. Пример семантической сети для заданного сообщения

2. Выделить в семантической сети падежные фреймы.

Следующие работы по сетевым представлениям были ориентированы на стандартизацию сетевых отношений, которая позволила бы моделировать семантику естественного языка, сделав её частью формального представления знаний, а не только описания предметной области. Один из подходов определяет связи ролями существительных в описываемом предложении. В число ролей входят: агент, объект, инструмент, место и время. Предложение представляется набором узлов, один из которых соответствует глаголусказуемому, а остальные подлежащему, дополнениям, определениям. Такая структура получила название «падежного фрейма» и позволяет включить в язык представления правила построения предложений естественного языка.

При разборе предложения программа находит сказуемое и сопоставляет ему падежный фрейм из базы знаний; затем остается «наложить» фрейм на анализируемое предложение, получив, таким образом, значения агента, объекта и пр. Исходные падежные фреймы могут обладать различной структурой, в зависимости от морфологической сложности анализируемого текста и целей анализа. Структуры, например, могут строиться не на основе сказуемого, а на основе отглагольного существительного или прилагательного.

Для нашего примера, в каждом из предложений можно выделить следующие падежные фреймы (рис. 2).

–  –  –

3. Описать три фрейма, указанных в варианте (для рассматриваемого варианта это фреймы «мебель», «офисная мебель», «компьютерный стол»).

Фреймы (не путать с падежными фреймами) схема представления знаний, которая включает строго организованные структуры данных, в которые включаются неявные информационные связи, которые присутствуют в предметной области. Фрейм, как организационная единица представления знаний отображает структуру объекта предметной области, которому соответствует фрейм. Сопоставляя фреймы и семантические сети можно сказать, что фрейм – это некоторая семантическая подсеть, которая представляет отдельный объект предметной области и его характеристики в заданном контексте или некоторую стереотипную ситуацию в предметной области. Механизм подобной организации обеспечивается слотами фреймов – поименованные ячейки, содержащие значение некоторой характеристики.

Фрейм как структура данных для языков представления знаний подобен обычной записи для языков процедурного программирования или классу объектов для языков объектно-ориентированного программирования.

Ячейки (слоты) фрейма могут содержать следующую информацию.

1. Данные для идентификации соответствующего фрейму объекта или ситуации, к таким слотам, например, относится слот идентификатор – содержащий строковое наименование фрейма. Для нашего примера слотидентификатор фрейма «Мебель» будет содержать наименование фрейма «Мебель».

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

(заметим, что в исходном сообщении указано, что вся рассматриваемая мебель изготовлена их ДСП, поэтому, адекватным описанию проблемной области вариантом разработки фрейма является не включать «материал» в число его слотов). Другим типом взаимосвязи является наследование. Например, фрейм «офисная мебель» служит подвидом фрейма «мебель», другими словами «мебель» - суперкласс для «офисная мебель», а «офисная мебель» - подкласс «мебель».

3. Дескрипторы требований для фрейма. Например, мы знаем, что разнообразные предметы быта проектируются сообразно антропометрическим характеристикам потенциального владельца, поэтому в число слотовдескрипторов требований могут быть включены слоты, соответствующие обычно оговариваемым СНиП размерам для любой мебели. Дескрипторы требований могут быть использованы для определения соответствия новых объектов стереотипу фрейма.

4. Дескрипторы свойств для новых экземпляров фрейма. В число слотовсвойств для новых экземпляров фрейма «мебель» могут быть включены, например, размеры, цвет и пр. Значения слотов-свойств могут инициализироваться по умолчанию или оставаться незаполненными, поскольку, как в нашем случае для фрейма «мебель», при создании нового экземпляра фрейма имеют смысл только значения прямо указанные пользователем системы.

5. Процедурная информация об использовании фрейма, некоторый код, который должен выполняться при инициализации определённых свойств фрейма. Процедур, подключённые к фрейму, и запускаемые при обновлении информации в структуре называются демонами, процедуры, запускаемые на выполнение по запросу пользователя называются демонами по требованию, процедуры, запускаемые на выполнение при появлении значения слота называются демонами добавления. Например, для фрейма «мебель» можно запрограммировать демона, который вычислял бы цену доставки в зависимости от размера.

6. Информация по умолчанию. Значения, которыми инициализируются слоты фрейма, если прямо не указаны противоположные. Например, для фрейма «мебель», если мы всё-таки решим ввести в него слот «материал», материалом по умолчанию в соответствие с контекстом задачи будет «ДСП».

Результатом описания фреймов, указанных в варианте может быть, например, следующая схема (рис. 3).

–  –  –

Рисунок 3. Фреймы "Мебель", "Офисная мебель", "Компьютерный стол" В отличие от сетевого представления, фреймы позволяют организовать знания независимым от интерпретации образом.

Фреймовые структуры выглядят более понятными, и позволяют организовать иерархию знаний. Если в сети все связанные понятия присутствуют на одном и том же уровне детализации без учёта того, необходимы они в контексте рассматриваемой задачи или излишни, то фреймовые структуры можно снабдить требуемой степенью детализации в зависимости от степени детализации контекста. В частности для нашего примера «мебель» и «ремонтируемая мебель» могут быть оформлены с помощью взаимосвязанных наследованием, но различных фреймовых структур, что позволяет отделить знания необходимые в контексте ремонта мебели, от знаний необходимых в контексте продажи новой мебели.

4. Нарисовать концептуальные графы для предложений заданного сообщения, над получившимися графами применить операции ограничения, объединения (и если необходимо, упрощения).

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

Каждый концептуальный граф представляет одно высказывание. В нашем примере: плотник, Федоров, ежедневно, получать, более 10, заказ, починка, мебель, изготовлена, ДСП – понятия. Концептуальные отношения между ними представлены следующим концептуальным графом (рис. 4).

Концептуальные графы позволяют также описывать отдельные поименованные экземпляры понятий. Для обозначения каждого экземпляра понятия используется специальный уникальный идентификатор, называемый маркером, в отличие от имен, которых у объекта может быть несколько, маркер экземпляра понятия - единствен. Например, понятие «плотник Фёдоров» может быть представлено следующими вариантами концептуальных графов Плотник: Фёдоров имя плотник: #121

–  –  –

Создание новых концептуальных графов на основе существующих производится применением операций копирования, ограничения, объединения и упрощения. Копирование позволяет создать новый граф, который является точной копией существующего графа. Ограничение позволяет заменить узлы понятий графа узлами, представляющими их специализацию. Ограничение производится путём замены общего маркера, которым помечено понятие, индивидуальным или замены метки типа меткой одного из его подтипов.

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

Создадим общий концептуальный граф для двух концептуальных графов, соответствующих предложениям разбираемого примера (рис. 6).

5. Создать базу фактов, состоящую из упорядоченных фактов, на основе построенной с использованием падежных фреймов семантической сети.

Представить 3 правила, которые оперировали бы со сформулированными фактами.

Факты – высокоуровневый способ представления знаний в CLIPS.

Каждый факт представляет часть сведений о предметной области, и является базовое единицей информации, используемой правилами. Совокупность фактов, описывающих предметную область, составляет базу фактов задачи.

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

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

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

(Fedorov is a carpenter); Фёдоров - плотник (repair Fedorov furniture); ремонт мебели производится Фёдоровым (furniture table shelf book-case); мебель: стол, полка, книжный шкаф Для того чтобы получить доступ к информации, которая задана упорядоченным фактом, пользователь должен знать не только о том, какие данные содержит факт, но и внутреннюю структуру факта, порядок следования его полей. Неупорядоченные факты, которые организуются в CLIPS с помощью структуры deftemplate (см. ниже), позволяют абстрагироваться от жесткого задания структуры факта, путём присвоения каждому из полей собственного имени. Поместить несколько фактов в базу фактов можно с использованием конструкции deffacts.

(deffacts deffacts-name [comment] (fact-name fact-value)*) Основные функции CLIPS, предназначенные для работы с фактами представлены в табл. 2.

Таблица 2. Основные функции для работы с фактами.

–  –  –

пропуски, образовавшиеся вследствие удаления, не заполняются. ‘*’ вместо индекса обозначает удалить все.

Проверяет, существует ли в базе факт (fact-existp (fact-existp 1) factс заданным индексом или адресом.

index|factaddress) Возвращает индекс факта по его (fact-index (fact-index ?f) fact-address) адресу Например, основе семантической сети, созданной с использованием падежного фрейма со структурой (действие-агент-объект-время действия-место действия), можно построить следующий набор фактов:

(deffacts All (is fedorov carpenter); Федоров - плотник (get fedorov 10 orders everyday); Федоров получает 10 заказов ежедневно (order repair furniture); заказ состоит в починке мебели (made furniture DSP); мебель сделана из ДСП (repair tables book-cases)); ремонтируются столы и шкафы.

Неупорядоченные факты могут быть представлены любой удобной в контексте задачи структурой, приведенный пример – только один из вариантов их устройства.

Сформулируем правило, которое оперировало бы с приведённой базой фактов и формировало бы новый факт содержащий информацию о том, что в контексте данной задачи считается мебелью.

Правила – основной метод представления знаний в CLIPS. Разработчик экспертной системы определяет правила, чтобы описать решение некоторой проблемы. С помощью правила назначается набор действий, которые должны быть выполнены в данной проблемной ситуации. Правило состоит из антецедента - левой части (LHS – left hand side) и консеквента - правой части (RHS – right hand side). Антецедент представляет собой набор условий, а консеквент – набор действий которые необходимо предпринять в том случае если условия выполняются.

Конструкция CLIPS defrule предназначена для того, чтобы создавать правила.

(defrule rule-name [comment] [declaration] ; свойства правила conditional-element* ; антецедент = action*) ; консеквент.

Антецеденты в правилах представлены с помощью образцов (patterns) – наборов простых ограничений на содержание базы фактов. Соответствие каждому из ограничений ведет к активизации правила. Процесс определения правил, активных на следующем шаге работы программы, называется поиском соответствия образцу (pattern-matching).

Наше правило будет выглядеть следующим образом (defrule WhatIsFurniture ((order ?what_ordered ?obj) (?what_ordered ?$items)) = (assert (?obj are ?items))

Работает оно так:

1) ищет в базе фактов паттерн соответствующий факту-заказа. Нам, как разработчикам и базы фактов и базы правил для этой условной системы, известно его название – order и его внутренняя структура (order что-делаем надчем-делаем). Мы вводим две переменные: в переменную ?what_ordered – запоминаем производимое в соответствие с заказом действие, а в переменную ?obj – запоминаем субъект, над которым производится действие;

(order ?what_ordered ?obj)

2) ищет в базе фактов паттерн, соответствующий факту, содержащему информацию о том, какие конкретно объекты ?$items(объекты помещаются в эту новую переменную; префикс ?$ - обозначает переменную, содержащую несколько значений, массив) чаще всего подвергаются действию, составляющему предмет заказа;

(?what_ordered ?items))

3) из соответствующих образцам фактов – в правой части правила составляется и помещается в базу фактов с помощью функции assert факт сопоставляющие общее название предмета заказа, конкретным наиболее часто заказываемым объектам.

(assert (?obj are ?items)) В результате в базе фактов окажется факт (furniture are tables book-cases)

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

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

Конструкция deftemplate является аналогом структуры типа запись (record и struct в Паскале и Си, соответственно). В отличие от упорядоченных фактов для слотов (полей) структуры deftemplate можно определить тип данных содержимого, перечислить возможные значения, которыми слот может быть проинициализирован, для них могут быть определены значения по умолчанию.

Главным отличием фактов, построенных с использованием структуры deftemplate, от упорядоченных фактов является первое поле факта, которое для первых должно соответствовать имени структуры deftemplate, экземпляром которой является факт, а для последних может быть любым допустимым символом CLIPS. Последующие поля в неупорядоченных фактах – список проинициализированных слотов.

Синтаксис структуры deftemplate представлен ниже.

(deftemplate deftemplate-name [comment] slot-definition*) slot-definition ::= single-slot-definition |multislot-definition single-slot-definition::= (slot slot-name template-attribute*) multislot-definition::= (multislot slot-name template-attribute*) template-attribute ::= default-attribute | Конструкция включает именованные слоты (slot-name), аналогичные полям записи. Слоты могут хранить одно (single-slot) или несколько (multislot) значений, иметь значения по умолчанию (default-attribute). Также слоты можно типизировать и определять для них набор значений, так чтобы слот мог инициализироваться единственно значениями этого набора (constraint-attribute).

Например, (deftemplate furniture (deftemplate furniture (slot name) (slot name) (multislot sizes)) (slot height) (slot depth) (slot width))

Создаём экземпляр факта:

(assert (furniture (name table) (sizes 0.75 1 1))) Значение по умолчанию для слота представляется следующим образом.

default-attribute::=(default ?DERIVE|?NONE | expression*) | (default-dynamic expression*) Статическое значение по умолчанию задается с помощью ключевого слова default. В примере (default gensym*) значение функции–генератора уникальных значений считается и приписывается слоту id при помещении в базу фактов, то есть в течение времени выполнения программы является статическим.

Динамическое (результат некой функции, который пересчитывается при каждом изменении факта) – с помощью ключевого слова default-dynamic.

Например, (deftemplate furniture (slot name (default ?NONE)) (slot id (default gensym*)) (slot height (default 0.75)))

Ограничения на значения слота могут быть представлены следующим образом:

constraint-attribute ::= type-attribute |allowed-constant-attribute |range-attribute |cardinality-attribute|default-attribute type-attribute::= (type type-specification) type-specification::= allowed-type+ | ?VARIABLE allowed-constant-attribute::= (allowedsymbols symbol-list) | (allowedstrings string-list) | (allowed-lexemes lexeme-list | (allowedintegers integer-list) | (allowedfloats float-list) | (allowednumbers number-list)| (allowed-instance-names instance-list) | (allowedvalues value-list) range-attribute::= (range range-specification range-specification) range-specification ::= number | ?VARIABLE cardinality-attribute::= (cardinality cardinality-specification cardinality-specification) cardinality-specification ::= integer | ?VARIABLE Type-attribute позволяет назначать слотам типы данных CLIPS. Allowedconstant-attribute позволяет задавать ограничения на значения слотов, создавая набор значений или, для перечислимых типов, создавая ряд значений (rangeattribute). Сardinality-attribute позволяет ограничивать размерность, слотов содержащих несколько значений.

Например, (deftemplate furniture (slot name (type SYMBOL) (allowed-values table book-case)) (slot height (type FLOAT) (range 1 2.5))) или (deftemplate furniture (slot name) (multislot sizes (cardinality 3))) Конструкция deftemplate может быть ограниченно использована для представления фреймов в CLIPS. Представить фреймы с помощью этой структуры предлагается самостоятельно.

Работа № 2. Методы поиска Одним из начальных этапов развития систем искусственного интеллекта было решение с помощью компьютера различных игровых задач и головоломок. Фундаментальная идея которая была выработана в результате получила название поиска в пространстве состояний.

Она заключается в том, что множество задач можно сформулировать следующим образом:

1) начальное состояние проблемы;

2) тест завершения – проверка, найдено ли решение проблемы;

3) множество операций, которые можно использовать для перехода из текущего состояния в следующее.

Базовый алгоритм порождения новых состояний называется generate-andtest (алгоритм порождения и проверки). Его шаги:

1) создать новое состояние, изменив существующее применением операции из допустимого множества операций;

2) проверить не является ли вновь созданное состояние решением, если не является вернуться к шагу 1 и породить новое состояние.

Этот алгоритм имеет две основных модификации: поиск в глубину, и поиск в ширину. Алгоритм поиска в ширину отыскивает на графе пространства состояний решение, путь к которому – кратчайший (если такое решение существует). Алгоритм поиска в глубину ищет более специфичные решения, и помогает быстрее найти решение в конечном пространстве состояний, но если пространство состояний не является конечным алгоритм, выполняясь бесконечно, может не найти решения вообще.

Цель данной лабораторной работы применить методы поиска в глубину и в ширину, метод эвристического поиска.

Задачи работы:

1. Сформулировать поставленную задачу в терминах пространства состояний:

выделить исходное состояние, целевое состояние, определить дозволенные ходы и ограничения.

2. Построить граф пространства состояний для указанного в варианте метода поиска.

3. Определить на CLIPS структуру (структуры) для фреймового представления текущего состояния.

4. Определить на CLIPS структуру и правила перехода (в зависимости от задачи – структура может не понадобиться) для допустимых шагов и ограничений в соответствие с указанным в варианте методом поиска.

5. Определить правило, которое опознает конечное состояние.

6. В результате 1-5 должна получиться система, которая почему-то не работает. Выяснить почему не работает, воспользовавшись отладчиком CLIPS.

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

Пример. Рассмотрим решение поставленных задач на примере головоломки пятнашки (поле 3*3). Метод поиска – поиск в глубину.

1. Сформулировать поставленную задачу в терминах пространства состояний: выделить исходное состояние, целевое состояние, определить дозволенные ходы и ограничения.

Задача: «Пятнашки (поле 3 х 3)»

Метод: поиск в глубину Исходное Целевое 1 2 3 состояние: состояние: 8 4 Дозволенные ходы: освободить поле выше, ниже, слева, справа Ограничения: нельзя освободить поле по диагонали.

2. Построить граф пространства состояний для указанного в варианте метода поиска.

–  –  –

Рисунок 5. Фрагмент графа пространства состояний для игры "Пятнашки"

3. Определить на CLIPS структуру (структуры) для фреймового представления текущего состояния.

Представить пространство состояний разбираемого примера можно различными способами. В любом случае необходим фрейм игрового поля. Но он может быть организован по-разному. Во-первых, можно создать фрейм, соответствующий постановке задачи, то есть полю для пятнашек 3*3, в котором каждая ячейка на поле характеризуется номером (вроде бы номер и не нужен, поскольку присутствует в имени следующего слота-идентификатора, но извлекать его оттуда – не очень просто, хотя и можно; поэтому лучше ввести в виде значения слота идентификатора), числом, которое в настоящее время располагается в нумерованной ячейке, и индикатором, занята ячейка или нет.

Выглядеть это будет примерно так:

(deftemplate puzzle (slot ID (type INTEGER) (range 1 9)) (slot Used (type SYMBOL) (allowed-values yes no)) (slot Number (type INTEGER) (range 1 9)) ) После того, как структура создана, необходимо создать её экземпляр.

Воспользуемся для этого конструкцией deffacts. Конструкция deffacts позволяет определить набор фактов которые будут автоматически размещены в базе фактов при выполнении команды reset. Помещаемые посредством этой конструкции факты – те же самые, что помещаются с помощью функции assert, оперировать с ними можно посредством любой из функций для работы с фактами, предоставляемых CLIPS.

Синтаксис конструкции таков:

(deffacts Наименование конструкции [Комментарий] Факт*) Примем для себя, что ячейки пронумерованы (то есть их поле ID заполнено) в порядке, в котором они расположены в собираемой цепочке.

Соответственно конструкция, создающая ячейки игрового поля-экземпляры

puzzle будет выглядеть так:

(deffacts Puzzle-facts (puzzle (ID 1) (Used yes) (Number 2)) (puzzle (ID 2) (Used yes) (Number 8)) (puzzle (ID 3) (Used yes) (Number 3)) (puzzle (ID 4) (Used yes) (Number 4)) (puzzle (ID 5) (Used yes) (Number 5)) (puzzle (ID 6) (Used no)) (puzzle (ID 7) (Used yes) (Number 7)) (puzzle (ID 8) (Used yes) (Number 1)) )

4. Определить на CLIPS структуру и правила перехода (в зависимости от задачи – структура может не понадобиться) для допустимых шагов и ограничений в соответствие с указанным в варианте методом поиска.

Допустимыми ходами для разбираемой головоломки являются освобождение поля выше, ниже, слева или справа. Можно составить следующую таблицу переходов из ячейки в ячейку (см. табл. 3).

Таблица 3. Правила перехода по ячейкам игрового поля для "Восьмерки".

–  –  –

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

А мы вводим структуру следующего вида:

(deftemplate Step (slot from (type INTEGER) (range 1 9)) (multislot to (type INTEGER) (range 1 9))) и добавляем в конструкцию deffacts Puzzle-facts факты, представляющие собой экземпляры возможных ходов:

(deffacts Puzzle-facts (puzzle … ) (step (from 1) (to 2 8)) (step (from 2) (to 1 3 9)) (step (from 3) (to 2 4)) (step (from 4) (to 3 5 9)) (step (from 5) (to 4 6)) (step (from 6) (to 5 7 9)) (step (from 7) (to 6 8)) (step (from 8) (to 1 7 9)) (step (from 9) (to 2 4 6 8))) Ни один экземпляр структуры step не определяет диагональных переходов, поэтому ограничение на невозможность освободить поле по диагонали – выполняется. Теперь переходим к правилам выполнения ходов. Формулировка хода в «Восьмёрке» выглядит следующим образом: «Можно передвигать любую цифру на соседнее сверху, снизу, слева или справа пустое поле». На CLIPS это записывается несколько сложнее (defrule move ?from-(puzzle (ID ?from_id) (Used yes) (Number ?num)) ?to-(puzzle (ID ?to_id) (Used no) (Number ~?num)) (step (from ?from_id) (to $?to_items&:(member$ ?to_id ?to_items))) = (modify ?from (Used no)) (modify ?to (Used yes) (Number ?num)) ) Теперь то же самое, только с пояснениями.

(defrule move ;находим факт, соответствующий любой занятой ячейке ;в переменную ?from_id сохраняем идентификатор ячейки ;в переменную ?num – число, хранящееся в ячейке ;в переменную ?to – адрес найденного факта ;(кстати, оператор - означает чтение адреса факта) ?from-(puzzle (ID ?from_id) (Used yes) (Number ?num)) ;находим факт соответствующий любой незанятой ячейке, ;которая не была освобождена на предыдущем ходе ;если ячейка освобождена на предыдущем ходе от того же самого числа, ;то в слоте Number этой ячейки сохранилось это число ; (Number ~?num) – условие неравенства числа, которое мы собираемся ; передвигать –числу от которого была последней освобождена эта ячейка ; так можно избавиться от простых зацикливаний ; а от сложных нельзя – нужно придумывать что-то другое ; в переменную ?to_id сохраняется идентификатор ячейки ?to-(puzzle (ID ?to_id) (Used no) (Number ~?num)) ;находим факт, соответствующий допустимому переходу из ;ячейки ?from_id в одну из ячеек массива $?to_items, содержащегося в слоте to ;(обозначения переменных массивов начинаются на $) ;$?to_items&:(member$ ?to_id ?to_items)) – это условие правильного перехода ;это значит что прочитанная переменная to_items должна содержать в качестве ;одного из элементов ?to_id идентификатор свободной ячейки, ;которую мы собираемся занять на этом ходе (step (from ?from_id) (to $?to_items&:(member$ ?to_id ?to_items))) = ;если все сложные условия выполнились – можно перейти к действиям ;освобождаем ячейку, цифру которой двигали ;модифицируя значение слота Used (modify ?from (Used no)) ;занимаем ячейку, в которую двигали цифру ;говорим что она занята (Used yes) числом ?num (Number ?num) (modify ?to (Used yes) (Number ?num)))

5. Определить правило, которое опознает конечное состояние.

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

Формулируется это на первый взгляд просто:

(defrule finish ;если нет ни одной задействованной ячейки в которой не располагалась бы цифра ;равная адресу ячейки ?p1-(puzzle (ID ?id1&1)(Number ?id1)) ?p2-(puzzle (ID ?id2&2)(Number ?id2)) ?p3-(puzzle (ID ?id3&3)(Number ?id3)) ?p4-(puzzle (ID ?id4&4)(Number ?id4)) ?p5-(puzzle (ID ?id5&5)(Number ?id5)) ?p6-(puzzle (ID ?id6&6)(Number ?id6)) ?p7-(puzzle (ID ?id7&7)(Number ?id7)) ?p8-(puzzle (ID ?id8&8)(Number ?id8)) ?p9-(puzzle (ID ?id9&9)) = (printout t ?id1 "||" ?id1 crlf) (printout t ?id2 "||" ?id2 crlf) (printout t ?id3 "||" ?id3 crlf) (printout t ?id4 "||" ?id4 crlf) (printout t ?id5 "||" ?id5 crlf) (printout t ?id6 "||" ?id6 crlf) (printout t ?id7 "||" ?id7 crlf) (printout t ?id8 "||" ?id8 crlf) (printout t ?id9 "||" "0" crlf) (halt))

Или так, не читая конкретных ячеек:

(defrule finish (not (exists (puzzle (ID ?id) (Used yes) (Number ~?id)))) = ;но тогда мы уже не можем вывести на печать реального состояния базы фактов ;поэтому всё равно, что печатать (printout t “Success” crlf) (halt)) Но в таком случае правило сработает при обнаружении хотя бы одного совпадения. Для того, чтобы представить в CLIPS правило, срабатывающее в случае такого совпадения для всех экземпляров puzzle, присутствующих в базе фактов и соответствующих заполненным ячейкам, необходимо обратить формулировку. Итак, правило должно активизироваться если в базе фактов нет ни одного экземпляра структуры puzzle, соответствующего заполненной ячейке, в котором в момент активизации не помещалась бы цифра, равная адресу ячейки. Для этого воспользуемся логическими элементами условия not и exists.

(defrule finish (not (exists (puzzle (ID ?id) (Used yes) (Number ~?id)))) = (ppdeffacts Puzzle-facts) (halt))

6. В результате 1-5 должна получиться система, которая почему-то не работает. Выяснить, почему не работает, воспользовавшись отладчиком CLIPS.

К этому шагу всё именно так и получилось: программа формально работает, но решения не находит, а, наоборот, зацикливается. Это немножко неприятно, но дает нам замечательную возможность познакомиться с отладчиком CLIPS. Для Вашего варианта может получиться, что программа работает, но медленно – в этом случае её также необходимо исследовать отладчиком, или даже отлично работает – это, при условии, пошагового выполнения лабораторной работы – чудо, которое тем более интересно исследовать отладчиком. Итак, воспользуемся командой Execution|Watch и включим опции Facts (показывать изменения базы фактов) и Rules (показывать активизацию правил). В меню Window выберем Facts (показывать текущее состояние базы фактов) и Agenda (показывать агенду – список правил, которые могут сработать на данном шаге выполнения программы при текущем состоянии базы фактов). Теперь загрузим программу (Load) и инициализируем базу фактов (Reset).

Выглядит всё так:

–  –  –

Отсюда и дальнейшего хода выполнения программы понятно, что в нынешнем своём виде программа просто передвигает пустую ячейку по часовой стрелке, реализуя, строго говоря, поиск в глубину, но без исключения уже пройденных состояний. Помимо этого недостатка переход между состояниями ничем не направляется, то есть состояние игрового поля, в отсутствие оценки качества совершаемых ходов, может произвольно удаляться от цели или приближаться к ней.

Варианты решения перечисленных проблем – следующие:

1) сохранять предыдущие состояния – для того чтобы избежать возврата к ним;

2) реализовать generate-and-test в чистом виде, то есть порождать состояния и записывать их в список непосещённых; а при осуществлении перехода – переводить в список посещённых;

3) задать предельное значение глубины поиска – если это предельное значение превышено, начинать поиск с какого-нибудь состояния, не возвращаясь к пройденным состояниям;

4) организовать поиск с итерационным заглублением, когда на первом этапе поиск ограничен глубиной в один уровень, если цель не достигнута, то выполняется ещё один шаг с предельной глубиной 2;

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

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

Итак, для того, чтобы просто усовершенствовать поиск в глубину нам необходимо создать механизм сохранения предыдущих состояний и, например, возвращаться из любого тупикового состояния к предыдущему.

Для этого введем ещё одну структуру для хранения пройденных состояний:

(deftemplate state ;идентификатор состояния (slot ID (type INTEGER) (default 0)) ;состав состояния – элементы размещены местам на поле соответствующим ;индексам в массиве (multislot numbers (default 0 0 0 0 0 0 0 0 0)) ;флаг - является состояние последним или нет (slot last (type SYMBOL) (allowed-values yes no)) ) ;и набор фактов для этой структуры (deffacts states (state (ID 0) (last yes))) и усовершенствуем правило передвижения, таким образом, чтобы оно проверяло не находилось ли уже игровое поле в том состоянии, в которое его собирается перевести система:

(defrule move ?from-(puzzle (ID ?from_id) (Used yes) (Number ?num)) ?to-(puzzle (ID ?to_id) (Used no) (Number ~?num)) (step (from ?from_id) (to $?to_items)) ;читаем последнее состояние ?st-(state (last yes) (ID ?state_id) (numbers $?some_nums)) ;проверяем – является ли переход из поля ?from_id к полю ?to_id допустимым ;ходом (test (member$ ?to_id $?to_items)) ;убеждаемся, что для всех состояний, кроме последнего (возврат к последнему ;- и так проверяется (forall (state (ID ~?state_id) (numbers $?nums&~$?some_nums)) ;замена в последнем состоянии двух элементов, соответствующих ходу ;не переводит его в одно из существующих состояний, которые представлены ;переменной ?nums (test (neq (replace$ (replace$ $?some_nums ?to_id ?to_id ?num) ?from_id ?from_id 0) ?nums))) = ;создаем новое последнее состояние (modify ?st (last no)) (assert (state (last yes) (ID (+ ?state_id 1)))) ;делаем ход (modify ?from (Used no)) (modify ?to (Used yes) (Number ?num)) ) Заметим, что приведённое правило move сработает только в том случае если в базе фактов присутствуют два состояния с различными идентификаторами, стало быть перемещения из начального состояния оно осуществить не сможет.

Поэтому (и для того чтобы не усложнять правило move) введём правило первого хода movefirst.

(defrule movefirst ;правило в общем работает так же как и move ?from-(puzzle (ID ?from_id) (Used yes) (Number ?num)) ?to-(puzzle (ID ?to_id) (Used no) (Number ~?num)) (step (from ?from_id) (to $?to_items)) ?st-(state (last yes) (ID ?state_id) (numbers $?some_nums)) ;но только в тех случаях когда в базе фактов нет ничего кроме начального ;состояния – что и обозначает следующее выражение (forall (state (ID 0) (numbers $?nums)) (state (ID 0) (numbers $?some_nums))) = (modify ?st (last no) (status closed)) (modify ?from (Used no)) (modify ?to (Used yes) (Number ?num)) (assert (state (last yes) (ID (+ ?state_id 1)))))

Но этого недостаточно – в системе теперь необходимы ещё два элемента:

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

(defrule savestate (declare (salience 10)) ;читаем ячейку поля ?p-(puzzle (ID ?id) (Used yes) (Number ?num)) ;читаем последнее состояние ?st-(state (last yes) (numbers $?nums)) ;убеждаемся, что номер, расположенный в ячейке ещё не является частью ;состояния (not (test (member$ ?num ?nums))) = ;вставляем в ?nums – состав текущего состояния ;новый элемент ?num по адресу ?id ;на самом деле здесь можно было обойтись replace$ ;это просто, чтоб познакомиться с функциями (bind ?nums (delete$ ?nums ?id ?id)) (bind ?nums (insert$ ?nums ?id ?num)) ;обновляем состав состояния (modify ?st (numbers ?nums) (status open)) )

Правило эвакуации из тупиковых состояний может выглядеть так:

(defrule reinit (declare (salience -1)) ;если мы не нашли решения ;то есть номера не расставлены в ячейках, так чтобы совпадать с адресом (exists (puzzle (ID ?id&~9) (Used yes) (Number ~?id))) ;читаем ячейки ?p1-(puzzle (ID 1)) ?p2-(puzzle (ID 2)) ?p3-(puzzle (ID 3)) ?p4-(puzzle (ID 4)) ?p5-(puzzle (ID 5)) ?p6-(puzzle (ID 6)) ?p7-(puzzle (ID 7)) ?p8-(puzzle (ID 8)) ?p9-(puzzle (ID 9)) ;читаем последнее состояние ?last_st-(state (ID ?x1) (last yes)) ;читаем предпоследнее состояние ?st0-(state (ID ?x2&:(= ?x2 (- ?x1 2))) (numbers $?nums)) = ;говорим, что предпоследнее состояние стало последним (modify ?st0 (last yes)) (modify ?last_st (last no)) ;модифицируем ячейки в соответствие с предпоследним состоянием (modify ?p1 (Used yes) (Number (nth$ 1 ?nums))) (modify ?p2 (Used yes) (Number (nth$ 2 ?nums))) (modify ?p3 (Used yes) (Number (nth$ 3 ?nums))) (modify ?p4 (Used yes) (Number (nth$ 4 ?nums))) (modify ?p5 (Used yes) (Number (nth$ 5 ?nums))) (modify ?p6 (Used no)) (modify ?p7 (Used yes) (Number (nth$ 6 ?nums))) (modify ?p8 (Used yes) (Number (nth$ 7 ?nums))) (modify ?p9 (Used yes) (Number (nth$ 8 ?nums))) ) Хочется обратить внимание, на выражение (declare (salience n)) присутствующее в двух последних правилах. Salience (-10000 … 10000, по умолчанию 0) – это приоритет правила. Если механизм логического вывода имеет возможность выполнить в заданный момент времени более чем одно правило, то из конкурирующих правил будет выбрано то, приоритет которого – выше. Задавая правилу savestate более высокий приоритет мы добиваемся того, чтобы прежде чем сделать ход система сохранила предыдущее состояние.

Правилу reinit задаётся низший по сравнению с остальными приоритет для того, чтобы оно выполнялось только в том случае, если состояние базы фактов не позволяет выполнить никаких других правил, то есть только в тупиковых состояниях.

Перечисленные правила – работают, можно проверить. Но решение ищется крайне долго и неэффективно. Конечно, можно ещё поработать над способом поиска в глубину, например, реализовать итерационное заглубление, но лучше всего – попробовать ввести какой-либо сравнительный критерий качества состояний.

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

В нашем случае существует три варианта возможных эвристических функций оценки качества состояний.

Для каждого состояния можно оценить:

1) количество фишек, находящихся не на своих местах;

2) сумму расстояний до целевого состояния, для фишек, находящихся не на своих местах;

3) количество прямых перестановок фишек (то есть, тех случаев, когда нужно поменять местами соседние фишки) до достижения целевого состояния: чем больше это число, тем «хуже» состояние, поскольку две соседние фишки могут поменяться местами минимум за три хода – данная эвристика, в отличие от предыдущих учитывает трудности при перестановке фишек.

Можно также использовать сочетание этих эвристик, так как в разных случаях они дают различные результаты.

Для того чтобы реализовать эвристику следует воспользоваться CLIPSфункциями. Функция в CLIPS – поименованная часть исполняемого кода, которая возвращает какое-то значение, или выполняет какое-либо действие.

CLIPS предлагает несколько типов функций. Пользовательские (user defined) и системные (system defined) функции пишутся на языках процедурного программирования. Первые определяются в пользовательском коде на процедурных языках, после чего CLIPS пересобирается и перекомпилируется с вновь написанным кодом. Вторые существуют в коде реализации CLIPS.

Конструкции deffunction и defgeneric позволяют определять функции, используя среду CLIPS. Такие функции не выполняются непосредственно, как в случае пользовательских и системных функций, а интерпретируются средой CLIPS. Функции, определенные с помощью deffunction, не могут быть перегружены. Во время выполнения функции действия выполняются в определенном пользователем порядке. Функция возвращает значение, которое является результатом последнего вычисленного выражения. Если последнее действие функции не возвращает никакого результата, то функция вернет FALSE.

В CLIPS также существуют родовые функции (generic functions). Для их объявления используются ключевые слова defgeneric и defmethod. Такие функции похожи на объявленные с помощью deffunction. Они так же позволяют создавать процедурный код непосредственно в среде CLIPS и вызываются тем же способом. Однако родовые функции обладают более широкими возможностями: они могут быть переопределяемыми, то есть выполнять разные действия в зависимости от количества переданных параметров и их типов.

Родовые функции состоят из нескольких компонентов, называемых методами.

Каждый из методов обрабатывает свои аргументы отличные от других методов той же функции. Всвязи с дополнительной возможностью переопределения при вызове общих функций CLIPS используется несколько иной внутренний механизм: сначала определяется, что была вызвана общая функция, затем по набору аргументов ищется подходящий метод, после чего найденный метод выполняется. Объявление родовой функции состоит из имени функции и нескольких методов (defmethod). В объявление каждого метода включается имя, индекс и комментарий (необязательные), параметры типизированные или нетипизированные, необязательный параметр-массив (для того, чтобы иметь возможность обрабатывать любое число параметров), тело функции – последовательность действий, которая выполняется при вызове. Для параметров также может быть определено ограничение, которому должен соответствовать параметр, чтобы вызывался именно этот метод. В качестве ограничения можно использовать глобальную переменную или вызов функции.

Ограничение считается удовлетворенным, если при его вычислении было получено любое не-False значение. Имя общей функции необходимо для ее идентификации. Если использовать defmethod без defgeneric, то создается имя по умолчанию. Методы уникальным образом определяются по имени и индексу (индекс может быть назначен программистом или формироваться автоматически). Для каждой комбинации параметров определяется новый метод.

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

Работа № 3. Анализ работы ЭС, разработанных на CLIPS

Экспертная система – это компьютерная программа, которая моделирует рассуждения человека-эксперта в определенной предметной области и использует для этого базу знаний, содержащую факты и правила об этой области, и некоторую процедуру логического вывода. Экспертная система обладает рядом свойств, отличающих ее от других прикладных программ [7].

Она моделирует рассуждения человека относительно некоторой предметной области, обладает знаниями, представленными в специальном формате, использует приближенные методы, имеет дело с объектами из реальной предметной области, гарантирует решение (с определенной степенью уверенности), обладает способностью объяснить решение. В список основных задач, которые решаются с помощью ЭС, входят извлечение информации из первичных данных, диагностика неисправностей, структурный анализ сложных объектов, конструирование сложных систем, планирование последовательности операций.

В экспертных системах реализуются следующие функции:

1) приобретение знаний;

2) представление знаний;

3) управление процессом поиска решения;

4) объяснение принятого решения.

Экспертные системы состоят из 3х основных компонентов:

1) база знаний - содержит информацию о конкретной предметной области в виде, удобном для ее использования в решении конкретных задач;

2) механизм вывода - позволяет извлекать из базы знаний нужную информацию;

3) пользовательский интерфейс.

Принято рассматривать механизм вывода и пользовательский интерфейс как один компонент, называемый оболочкой экспертной системы или просто оболочкой.

Оболочка

–  –  –

Следующая отладочная информация иллюстрирует работу этого правила. В результате размножения цели в базе фактов появился факт цели == f-139 (goal is backbone)

Там уже был факт вопроса:

== f-5 (question backbone is "Does your animal have a backbone?") Использование таких фактов правилом ask-question-legalvalues (?variable = backbone; ?text = "Does your animal have a backbone?") приводит к тому, что пользователю будет задан вопрос, позвоночное ли животное, ответ будет сохранен в переменной (variable backbone yes), а ненужные более факты вопроса и цели будут удалены из базы фактов.

FIRE 10 propagate-goal: f-138,f-4 == f-139 (goal is backbone) FIRE 11 ask-question-legalvalues: f-2,f-139,f-5 == f-139 (goal is backbone) Does your animal have a backbone? (yes no) yes == f-140 (variable backbone yes) == f-5 (question backbone is "Does your animal have a backbone?")

3. Правило подобрано: если полученные с помощью вопросов уточнения совпадают с предпосылкой правила “if”, то категория цели сохраняется в переменной (defrule rule-satisfied "" (declare (salience 20)) (variable ?variable ?value) ?f - (rule (if ?variable ? ?value) (then ?goal ? ?goal-value)) = (retract ?f) (assert (variable ?goal ?goal-value))) Следующая отладочная информация иллюстрирует работу этого правила.

После ответа на вопрос, в базе фактов появился факт переменной:

== f-140 (variable backbone yes)

В базе фактов уже присутствовал факт:

f-3 (rule (if backbone is yes) (then superphylum is backbone)) Применение правила rule-satisfied (?variable = backbone; ?value = yes; ?goal = superphylum; ?goal-value = backbone) приводит к сохранению промежуточной цели в новой переменной.

FIRE 13 rule-satisfied: f-140,f-3 == f-3 (rule (if backbone is yes) (then superphylum is backbone)) == f-141 (variable superphylum backbone)

4. Удалить несоответствующее правило: если предпосылка, заданная в правиле не соответствует полученным данным, сохраненным в переменных, то правило удаляется.

(defrule remove-rule-no-match "" (declare (salience 20)) (variable ?variable ?value) ;~ - “не” ?f - (rule (if ?variable ? ~?value $?)) = (retract ?f)) Следующая отладочная информация иллюстрирует работу этого правила.

После ответа на вопрос, в базе фактов появился факт переменной:

== f-140 (variable backbone yes)

Существующий в базе фактов факт:

== f-4 (rule (if backbone is no) (then superphylum is jellyback)) в результате работы правила remove-rule-no-match (?variable = backbone; ?value =yes) будет удален.

FIRE 12 remove-rule-no-match: f-140,f-4 == f-4 (rule (if backbone is no) (then superphylum is jellyback))

5. Изменить имеющееся правило: если предпосылка, заданная в правиле, является комплексной, т.е. состоит из нескольких фактов, то часть правила, которая была «удовлетворена», вырезается.

(defrule modify-rule-match "" (declare (salience 20)) (variable ?variable ?value) ?f - (rule (if ?variable ? ?value and $?rest)) = ;изменить заданный факт (modify ?f (if ?rest))) Следующая отладочная информация иллюстрирует работу этого правила.

После срабатывания правила rule-satisfied в базе фактов появился факт переменной:

== f-141 (variable superphylum backbone)

Существующий в базе фактов факт:

== f-6 (rule (if superphylum is backbone and warm.blooded is yes) (then phylum is warm)) в результате работы правила modify-rule-match (?variable=backbone; ?value=yes) будет изменен так, что в предпосылке останется только та часть, относительно которой еще ничего не известно.

FIRE 17 modify-rule-match: f-141,f-6 == f-6 (rule (if superphylum is backbone and warm.blooded is yes) (then phylum is warm)) == f-143 (rule (if warm.blooded is yes) (then phylum is warm))

6. Цель подобрана: если спектр поиска сужен максимально и имеется подходящий ответ, сохраненный в переменной, то вывести его на экран.

(defrule goal-satified "" (declare (salience 30)) ?f - (goal is ?goal) (variable ?goal ?value) (answer ? ?text ?goal) = (retract ?f) (format t "%s%s%n" ?text ?value)) Следующая отладочная информация иллюстрирует работу этого правила.

Факты == f-1 (goal is type.animal) == f-129 (answer is "I think your animal is a " type.animal) появились в базе фактов при инициализации.

Факт == f-181 (variable type.animal orangutan/gorilla/chimpanzie) был помещен в базу фактов применением правила rule-satisfied к базе фактов, подвергшейся неоднократной обработке всеми перечисленными правилами.

Применение правила goal-satisfied приводит к выполнению задачи системы animal – определению задуманного пользователем животного.

FIRE 125 goal-satified: f-1,f-181,f-129 == f-1 (goal is type.animal) I think your animal is a orangutan/gorilla/chimpanzie Работа № 4. Разработка классификационной экспертной системы на CLIPS.

Добравшиеся до данного этапа уже в достаточной степени владеют CLIPS и представляют себе приблизительные способы структурирования систем на этом языке Цель работы: применив полученные навыки разработать классификационную экспертную систему.

Задачи:

1) разработать базу фактов;

2) разработать базу правил;

3) протестировать и объяснить работу системы при использовании различных стратегий логического вывода;

4) сравнить структуры, использованные для организации ЭС в лабораторных работах 3 и 4, сделать вывод об эффективности систем и прозрачности отражения их структурами заданной предметной области.

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

Использовать именно его для разработки Вашей системы – не обязательно.

Рассмотрим создание системы классификации четырёхугольников.

1. Разработать базу фактов.

Вариант классификации представлен на рисунке.

все стороны равны?

–  –  –

Рисунок 9. Классификация четырёхугольников.

Каждый из элементов классификации – представляет собой экземпляр фрейма «Четырёхугольник», который можно представить следующим фреймом.

(deftemplate tetragon (slot name (type STRING)) ;все ли стороны равны – значение по умолчанию не установлено (slot all-sides-equal (type SYMBOL) (allowed-values yes no unk) (default unk)) ;количество пар параллельных сторон – значение по умолчанию -1, ;что соответствует отсутствию инициализации (slot parallel-sides-pair-count (range -1 2) (default -1)) ;наличие прямого угла (slot right-angle (type SYMBOL) (allowed-values yes no unk) (default unk)))

2. Разработать базу правил.

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

1) стартовое правило, которое инициализирует базу фактов экземпляром фрейма «Четырёхугольник», о котором ничего не известно;

(defrule Start = (assert (tetragon))

2) правила, задающие вопросы и инициализирующие соответствующие слоты фрейма;

(defrule sides-equal ; если о четырехугольник неизвестно равны все стороны или нет ?f-(tetragon (all-sides-equal unk)) = ;задать вопрос (printout t “Are all sides of your tetragon equal?” crlf) ; связать некую локальную переменную со ответом пользователя (bind ?answer(read)) ;отразить ответ пользователя в структуре (modify ?f (all-sides-equal ?answer)))

3) правила выполняющие классификацию.

(defrule rect ;если у четырехугольника две пары параллельных сторон ?f-(tetragon (parallel-sides-pair-count 2) ;и есть прямой угол (right-angle yes)) = (assert ?f (name “Rectangle”))

4) правило, сообщающее пользователю результат классификации (defrule Fin (tetragon (name ?x&:(neq ?x “”))) = (printout t ?x crlf) (halt))

3. Протестировать и объяснить работу системы при использовании различных стратегий логического вывода.

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

Эти правила вступают в конфликт между собой, поскольку на следующем шаге выполнения программы может сработать только одно из них. Для выбора этого правила существуют стратегии разрешения конфликтов. Обычно в программных системах предусматривается выбор из нескольких стратегий, поскольку стратегия разрешения конфликтов во многом определяет производительность системы.

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

Разнообразие означает неприменение правил уже использованных ранее.

Новизна означает уделение большего внимания вновь поступившим данным.

Специфика обозначает, что более «сложные» правила, содержащие большее число предпосылок имеют приоритет перед более простыми и общими (более подробно см. [7, c. 116–117]) В CLIPS существует специальная структура, похожая на стэк и содержащая список правил, для которых на текущем шаге выполнения программы удовлетворяются условия левой части. Эта структура называется agenda (в буквальном переводе, повестка дня последовательность операций) – список заявок. Положение правила в этом списке определяется назначением приоритета правила (salience): вновь активизируемые правила помещаются выше правил с низшим приоритетом, и ниже правил с более высоким приоритетом; или назначением специальной стратегии разрешения конфликтов.

Если невозможно упорядочить правила этими двумя способами, то активизируемое правило произвольно выбирается из списка. В CLIPS реализованы 7 стратегий разрешения конфликтов: depth, breadth, simplicity, complexity, lex, mea, и random. Стратегия по умолчанию - depth. Различные стратегии обуславливают различное поведение системы, опробовать и объяснить которое предлагается самостоятельно.

Варианты.

Лабораторная работа № 1.

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

1. Ученица седьмого класса средней школы Женя Ч. очень любит рисовать.

Больше всего рисунков она сделала цветными карандашами, поскольку краски использует только для Настоящего Искусства»

Фреймы: «средство для рисования», «карандаши», «краски».

2. Второклассник Коля В. точно знает, чем Настоящее Искусство отличается от красивых картинок. Однажды он нашёл на улице сухой платановый лист для гербария и очень удивился, но лист оказался нарисованным.

Фреймы: «гербарий», «лист», «платановый лист»

3. Гербарий Коли до сих пор состоял из 2 листьев тополя, 3 оранжевых осиновых листьев, одного неинтересного берёзового листа, и пары рябиновых. Один из тополиных листьев – огромный, вдоль него можно сделать целый шаг.

Фреймы: «дерево», «тополь», «лист»

4. Коля В. показал платановый лист бабушке. Бабушка авторитетно заявила, что в их городе нет ни одного платана. Ближайший к ним платан растет в Москве.

Фреймы: «платан», «место», «город».

5. Бабушка Коли – известный всему двору эрудит. На 4 из 10 Колиных вопросов она знает неправильные ответы, на 5 из 10 - правильные. Один вопрос про платановый лист остается неразрешённым.

Фреймы: «вопрос», «ответ», «правильный ответ».

6. Женя Ч. рисует платановые листья и разбрасывает их по городу. Она единственный в мире художник, чьи картины оказываются не просто в коллекциях, а в гербариях.

Фреймы: «коллекция», «гербарий», «коллекционер».

7. Системный аналитик Быковский исследует предметную область для новой системы. Он занимается этим уже около шести месяцев, но работы не становится меньше. Заказчик меняет требования ежедневно.

Фреймы: «информационная система», «предметная область», «требование»

8. Каждую ночь системному аналитику Быковскому снятся тысячи снов, в которых он что-то делает с представителями заказчика: менеджерами, инженерами и рядовыми специалистами. Системный аналитик с трудом припоминает подробности снов, но просыпается очень довольным.

Фреймы: «человек», «представитель заказчика», «инженер»

9. На рабочем месте системного аналитика Быковского есть трёхмерный принтер. В этом месяце он напечатал на нём 4 трёхмерные модели предметных областей и 1 собирательный скульптурный портрет представителей заказчика.

Фреймы: «рабочее место», «принтер», «трёхмерный принтер».

10.Аналитик Быковский обедает в небольшом ресторане напротив офиса. Когда он обедал там впервые, то заказал баранью ногу и до сих пор ждет.

Ожидание помогают скоротать прожаренный стейк, какие-нибудь овощи, стакан апельсинового сока, интернет, новости по телевизору, девушка Саша, работа, кино, друзья, пиво по пятницам и т.п.

Фреймы: «еда», «стейк», «ресторан».

11.Системный аналитик Быковский любит смотреть экранные копии разных фильмов. Ему нравятся новые персонажи, введённые режиссерами экранок.

Он мечтает сняться в роли тени, бредущей по залу, если только это будет роль со словами.

Фреймы: «фильм», «актёр», «роль».

12.Системный аналитик Быковский живёт на крайнем севере. Сейчас у него разгар полярного рабочего дня. Вокруг рабочего места аналитика теснятся обогреватели, два «Ветерка» и один безымянный, радиаторного типа.

Фреймы: «рабочее место», «обогреватель», «работник».

13.Системный аналитик Быковский ездит в служебные командировки только на поезде. Самый длинный поезд в его жизни состоял из 38 вагоновресторанов, трех купейных, и паровоза. Эту командировку аналитик вспоминает с теплотой.

Фреймы: «средство передвижения», «поезд», «путешественник»

14.Системный аналитик Быковский виртуозно играет на электроваргане. Это травматичный музыкальный инструмент, поэтому с концертами аналитик выступает не чаще раза в два года.

Фреймы: «музыкант», «музыкальный инструмент», «варган».

15.Спамер N. получает на свой личный почтовый адрес не менее 50 рекламных писем в день. Личные письма опасаются такой огромной толпы, поэтому приходят очень редко.

Фреймы: «почтовое отправление», «личное письмо», «адресат»

16.Спамер N. считает, что оплачивать счета за коммунальные услуги – непрофессионально. В его квартире отключили свет и теперь до заката он пользуется естественным светом, а после – переходит на внутренний.

Фреймы: «квартира», «коммунальная услуга», «свет».

17.Спамер N. - увлечённый фотограф. Он фотографирует посредством любых предметов и на любые предметы. Поэтому бывает, что одни предметы напоминают другие.

Фреймы: «фотограф», «фотография», «предмет».

18.F – небольшой город. Поэтому малочисленные общины растафари города F.

и зороастрийцев города F. делят и помещение для ритуалов, и адептов.

Спамер N. – единственный зороастриец города F.

Фреймы: «человек», «община», «адепт».

19.Персонаж робинзонского рассказа делал зарубки на стенах своей пещеры каждый день, когда он был счастлив. Сейчас этот рассказ забыли и совсем перестали читать. Поэтому теперь зарубки появляются в 5 раз чаще, чем раньше.

Фреймы: «человек», «персонаж», «рассказ».

20.Персонаж робинзонского рассказа – англичанин. Он объявил свой остров колонией Соединённого Королевства и еженедельно отправляет бутылочной почтой служебные записки в метрополию.

Фреймы: «колония», «метрополия», «Соединённое Королевство».

21.Прилив стабильно возвращает единственную бутылку, которую персонаж робинзонского рассказа использует для передачи сообщений. В ней всегда содержится симметричный ответ.

Фреймы: «почта», «бутылочная почта», «бутылка».

22.Пенсионерка Соколова кормит птиц. Она повесила на берёзе у подъезда скворечник с шестью маленькими отверстиями для воробьев и синиц.

Голубей она кормит отдельно.

Фреймы: «птица», «воробей», «птица отряда воробьиных».

23.Пенсионерка Соколова по утрам гуляет с собакой Джеком. Пока пенсионерка гуляет, Джек работает. Джек – уважаемый пёс, который может помочь в самом сложном собачьем деле.

Фреймы: «собака», «хозяйка», «прогулка»

24.Пенсионерка Соколова пьёт кофе с плюшками и смотрит в окно на скворечник. Птицы едят крошки от плюшек всухомятку. Кот пенсионерки Соколовой сидит на подоконнике и размышляет, вкусны ли зимой птицы.

Фреймы: «еда», «плюшки», «птица».

25.Преподаватель Таня придумывает варианты для лабораторной работы №1 и внезапно обнаруживает себя в тупике. Она придумала уже 25 вариантов, а в тупике одновременно с ней находятся 251488 человек по всему миру.

Фреймы: «тупик», «дорога», «ощущение».

Лабораторная работа № 2.

В каждом из вариантов необходимо реализовать полноценный generate-and-test, для чего в структуре системы должны быть представлены списки посещённых и непосещённых узлов. Метод поиска спрашивается у преподавателя после того как вариант выбран. Конфигурация игрового поля, начальное и целевое состояние ищутся в интернете, или, если нет возможности искать – опять же спрашиваются у преподавателя.

1. Пятнашки.

2. Сокобан

3. Ханойская башня.

4. Проход по лабиринту.

5. Волк, коза и капуста.

6. Задача о каннибалах и миссионерах.

7. Головоломка скользящих блоков.

8. Крестики-нолики.

9. Узор из цветных блоков.

10.Головоломка «Девять человек в траншее».

11.Головоломка «Компас»

12.Головоломка «Буквенные блоки».

13.Головоломка «Гараж».

14.Головоломка «Смена дней».

15.Головоломка «Панамский канал»

Лабораторная работа №3, 4.

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

1. Система-определитель музыкальных инструментов.

Система проектируется с точки зрения земного меломана и предназначена для того, чтобы познакомить заинтересованного жителя Внутренней Монголии с инструментами земной музыки. От системы требуется по внешнему виду инструмента (корпус в форме женской фигуры, средних размеров, из дерева, с грифом и 6ю струнами) поименовать его (акустическая гитара).

2. Система классификации киножанров.

Система проектируется с точки зрения заядлого кинозрителя, и предназначена для того, чтобы помочь кинозрителю начинающему приблизиться к ответу на внутренний вопрос «Что это было?» после просмотра нового непостижимого фильма. От системы требуется, задавая вопросы о персонажах, сюжете, картинке, длительности и пр. (стреляют друг друга, преимущественно ковбои, в основном на Диком Западе) определить жанр кино (вестерн, не путать с историческим боевиком).

3. Система классификации средств передвижения.

Система проектируется с точки зрения водителя и предназначена в помощь человеку, задумавшемуся о выборе для себя средства передвижения. От системы требуется, задавая вопросы о расходах, которые готов понести потенциальный водитель; о квалификации имеющейся и требуемой для вождения транспортного средства; целях, с которыми оно приобретается; о требованиях к внешнему виду (например, нужен некий драндулет для проезда на небольшие расстояния в одиночку или вдвоем и провоза небольших грузов, не дороже 10000 руб. за покупку и не слишком дорогой в обслуживании) и пр.

подобрать подходящее средство передвижения (подержанный мотоцикл с коляской).

4. Система классификации предметов мебели.

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

От системы требуется задавая вопросы о форме, величине, предполагаемом способе использования, материале и пр. (прямоугольная, большая, четырехногая, мягкая) указать название предмета (кровать).

5. Система классификации MUD – артефактов.

Система проектируется с точки зрения опытного MUD-игрока (естественно выбрать какую-то одну реальную МПМ) и предназначена для определения найденного начинающим игроком магического предмета по его описанию.

Предполагается, что игрок, не достигший достаточного уровня, не может не только использовать какой-либо артефакт (кроме денег), но и определить, что же ему попалось. Эту информацию игрок может за мзду получить у оракула, в роли которого выступает создаваемая система. Описав системе предмет (оружие, меч, довольно старый, заржавленный, во всяком случае, длинная стертая ручка, гарда слева отломлена, торчит из камня, на «потянуть» не реагирует), игрок узнает его название, назначение, стоимость, уровень, на котором позволительно использовать данный предмет (Экскалибур, если достать его – можно стать королем в Камелоте, бесценен, только для героев и полубогов).

6. Система классификации предметов одежды.

Система проектируется с точки зрения европейца и является компонентом большой системы, предназначенной для обучения жителя внутренней Монголии жизни вовне (на Земле, в Европе, в России, в Коми, в Ухте). Данная система знакомит ученика с предметами одежды. Предполагается, что обитатель Внутренней Монголии добрался до неведомо кому принадлежащего огромного гардероба, и, перебирая предметы одежды, вопрошает систему о наименовании данного предмета и каких-то правилах ношения, если таковые существуют. Предполагается также, что вопрошающий знаком с названиями тканей и составных частей предметов гардероба: фалдами, рукавами и пр.

Рассказав системе в ответ на ее вопросы, как выглядит предмет одежды (костюмная ткань, длинный рукав, фалды до колена, отложной воротник), пользователь может узнать его название (фрак).

7. Система классификации видов обуви.

Система проектируется с точки зрения землянина и является компонентом большой системы, предназначенной для обучения жителя внутренней Монголии жизни вовне (на Земле, в Европе, в России, в Коми, в Ухте). Данная система знакомит ученика с земной обувью. Предполагается, что внутренний монголец, разделавшись с гардеробом, приступил к изучению обувного шкафа.

Он знакомится с его содержимым и спрашивает систему о наименованиях попавшихся туфель и ботинок. Предполагается также, что пользователь знаком с названиями составных частей и характеристик) обуви (каблук, подошва, подъем и пр.) и тех принадлежностей, наличие которых отличает один вид обуви от другого (шнурки, разные застежки). Рассказав системе в ответ на ее вопросы, как выглядит предмет обуви (высотой до щиколотки, светлый, тонкая резиновая ровная подошва, тряпичный, на шнурках), обитатель Внутренней Монголии может узнать его название (скорее всего, кеды).

8. Система классификации табачных изделий.

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

9. Система классификации видов оружия.

Система проектируется с точки зрения любителя 3D-экшенов и предназначена для того, чтобы определять, каким оружием пользуется враг и каких повреждений можно ожидать. Предполагается, что существует некий экшен, допускающий программирование ботов, которые не могут использовать внутренние данные игры, а действуют исходя из видимой картинки, так же как обычные игроки. Вместо анализатора картинки, оставшегося за рамками задачи, система задает вопросы о внешнем виде оружия, наблюденном выстреле и снаряде (маленькая такая овальная штука, падает со звонким стуком, взрывается через паузу) и по ответам пользователя называет орудие, используемое врагом, предварительно определяет скорость поражения и, если возможно, предлагает план спасения (граната это была, убивает довольно медленно от полсекунды до секунды, в следующий раз – отбегай).

10.Система классификации жанров компьютерных игр.

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

(человек идет в 2D, собирает всякие штуки и убивает монстриков, а в каждого уровня конце дерется с главным) дать определение жанра игры и ее подтипа внутри данного жанра (2D-аркада).

11.Система классификации фруктов.

Система проектируется с точки зрения специалиста по растительности некого безвестного места и служит компонентом программного обеспечения для ноутбуков игроков в GeoCashing.

Игра состоит в том, чтобы искать спрятанное:

на специальных сайтах, посвященных игре описывается расположение клада в каком-то географическом районе. Описания в духе «10 шагов на восток от разбитого молнией дуба» и пр. Человек, нашедший клад, должен оставить в этом месте что-то свое, чтобы следующие искатели получили свою радость.

Места могут быть совершенно неизведанные и для того, чтобы снизить риск путешествия создаются системы, обладающие знаниями о месте. От данной системы требуется, задавая вопросы о найденном туристом растении с какимито условно тропическими фруктами (оранжевый снаружи, круглый, красивый, в кожуре, если разрезать, тоже оранжевый, сочный, с мелкими семенами, небольшой), и анализируя ответы, дать название неопределенного плода (апельсин) и указать, съедобен ли он, и каким образом его можно употребить в пищу. В качестве безвестного места в тестовом режиме предлагается выбрать хорошо знакомое.

12.Система классификации наград РФ.

Система проектируется с точки зрения эксперта-фалериста и служит для того, чтобы обучить любопытствующих различать российские знаки отличия.

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

13.Определитель дорожных знаков.

Система проектируется с точки зрения водителя и является подсистемой системы-тренажера для обучения вождению. Один из интерактивных режимов системы позволяет сдавать экзамен в группе вместе со смоделированными одногруппниками. Система является как бы памятью на дорожные знаки для модели обучающегося, соперничающего на экзамене с реальным пользователем. Такая модель как бы описывает системе внешний вид (форму, цвета, рисунок) знака (круглый, белый с красной каемкой, внутри черная и красная машинка), система определяет название знака («черным машинкам нельзя обгонять красные машинки» (С)) и что предписывается делать согласно знаку. Предполагается пока, что знаки в базе фактов системы описаны правильно. Это не позволяет смоделированным пользователям ошибаться. Но в то же время базы фактов набираются случайным способом, поэтому возможны случаи, когда смоделированный пользователь не узнает какого-то знака.

14.Система классификации предметов посуды.

Система проектируется с точки зрения современника и является компонентом большой системы, предназначенной в подарок Янусу Полуэктовичу Невструеву от работников института НИИЧАВО. Одна из ипостасей Януса Полуэктовича живет из будущего в прошлое и, возможно, не знает некоторых очевидных для современника вещей. Предполагается, что посуда в будущем оказалась без надобности, поскольку еду полностью заменили красные и синие таблетки, поэтому данная подсистема знакомит ученика с предметами посуды.

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

15.Система подбора жилья.

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

16.Система подбора вида кредита.

Система проектируется с точки зрения опытного заемщика и служит для того, чтобы предлагать пользователю наиболее подходящий для его цели вид кредита. Задавая вопросы о личных данных заемщика, цели кредитования, возможностях заемщика (девушка, 21, незамужем, жилищный кредит (420 тыс.), есть предварительный взнос (15%), заработок 25 тыс., 2 поручителя с приблизительно равным заработком, 1 с меньшим (15 тыс.), ) система предлагает вид кредита (кредит на приобретение жилья, Сбербанк, 18%) и вкратце его описывает (какой банк, какие условия).

17.Система определитель спортивных игр.

Система проектируется с точки зрения землянина и является компонентом большой системы, предназначенной для обучения жителя внутренней Монголии жизни вовне. Данная её подсистема знакомит ученика с земными спортивными играми. Задавая вопросы о количестве команд, количестве человек в командах, видимой цели игры, поле, воротах, игровом снаряде и пр.

(две команды, по 11 человек, поле стадиона с двумя воротами, игра только ногами, круглый мяч, примерно 30 см. в диаметре) система определяет ее название (футбол) и вкратце описывает правила.

18.Система подбора прически.

Система проектируется с точки зрения специалиста по имиджу (хотя бы собственному) и предназначена, для оказания консультативных услуг клиенткам салона красоты. Любая желающая может подойти к терминалу и получить от системы рекомендации по способу стрижки (прически, окраски) волос.

Терминал системы оснащен видеокамерой и, исходя внешнего вида:

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

19.Определитель фэнтези-персонажей.

Система проектируется как составная часть некой MUD и служит для того, чтобы предоставить контекстную справку начинающему игроку, действующему, по предположению, в совершенно незнакомом мире.

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

20.Система классификации религиозных убеждений.

Система проектируется с точки зрения начинающего религиоведа и служит для того, чтобы классифицировать представителей разнообразных религиозных течений, ведущих уличную агитацию и зачастую не представляющихся, чтобы не оттолкнуть потенциальных прихожан названием своего учреждения, возможно отмеченного в СМИ как секта. Задавая вопросы типа "Верите ли вы, что...", система классифицирует религиозные убеждения респондента.

21.Система-определитель музыкальных стилей.

Система проектируется с точки зрения меломана, и предназначена для того, чтобы ориентировать любопытствующих в музыкальных направлениях, учить различать стили. От системы требуется, задавая вопросы о характере и ритме классифицируемого произведения (успокаивающая, тихая, медитативная), используемых инструментах (любые практически, электронные и акустические), вокале (чаще инструменталы), определить наименование стиля (new-age) и перечислить основных его последователей (поздний Clannad, Peatbog Faeries, Ad Libitum).

22.Система подбора способа провести вечер.

Система проектируется с точки зрения местного жителя, и предназначена для того, чтобы рекомендовать туристу (командировочному, любому новому человеку), способ провести вечер, наиболее соответствующий его выраженным предпочтениям. Уточнив личную информацию (мужчина, 35), задавая вопросы об его финансовых возможностях (баксов на 100) и о его предпочтениях (спокойный одинокий вечер, поесть и, может быть, сыграть под пиво во что-то ненапряжное) система предлагает подходящий способ провести вечер (бильярдный клуб) с указанием его приблизительной стоимости (на сотню получится даже очень приятно).

23.Система-определитель грибов.

Система проектируется с точки зрения знатока грибов и предназначена для того, чтобы помочь начинающему грибнику сохранить жизнь (вариант:

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

24.Система-определитель класса мотоцикла.

Система проектируется с точки зрения мотоциклиста и мотолюбителя и предназначена для того, чтобы научить любопытствующих классифицировать мототехнику по совокупности конструктивных признаков. Задавая вопросы о внешнем виде (увеличенный вылет передней вилки, широкое заднее колесо небольшого диаметра, высокий руль, двухуровневое седло, каплевидный бак), посадке водителя (чуть откинувшись назад, вытянув ноги вперед) и технических характеристиках, которые можно установить без использования специальных инструментов (вес, 250-300 кг), система называет класс мотоцикла (круизер).

25.Система подбора тарифного плана для пользователя мобильного телефона.

Система проектируется с точки зрения опытного пользователя мобильного телефона и предназначена для того, чтобы оказывать консультации новичкам в вопросе выбора мобильного оператора и тарифного плана, предоставляемого различными компаниями в данном географическом регионе. Задавая вопросы о клиенте (частное лицо, но часть расходов оплачивает предприятие), необходимых ему сопутствующих услугах (голосовая почта), целях подключения (личный и рабочий), финансовых возможностях (не более 10 личных долларов в месяц + 15 рабочих), деталях использования (более получаса в день, в основном на телефоны МТС и городские) и пр. система предлагает воспользоваться услугами фирмы, предоставляющей наиболее подходящий способ доступа и тарифный план (МТС, Оптима 150).

Рекомендуемая литература

1. CLIPS Application Abstracts.

2. CLIPS Architecture Manual.

3. CLIPS Reference Manual. Volume I. Basic Programming Guide.

4. CLIPS Reference Manual. Volume II. Advanced Programming Guide.

Joseph C. Giarratano. CLIPS User’s Guide.Version 6.20. March 31st 2002 5.

Буч Г. Объектно-ориентированный анализ и проектирование с примерами 6.

приложений на С++. – СПб.: Бином, 1998. – 560 с.

7. Джексон П. Введение в экспертные системы. - М.: Вильямс, 2001.-624с.

8. Люгер Д. Искусственный интеллект. Стратегии и методы решения сложных проблем. - М.: Вильямс, 2003.-864с.

9. Частиков А. П., Белов Д. Л., Гаврилова Т. А.. Разработка экспертных

Похожие работы:

«ОПЕРАТИВНЫЙ ИЛИ ФИНАНСОВЫЙ ЛИЗИНГ: ЧТО И КОГДА ПРЕДПОЧТИТЕЛЬНЕЕ? © Абаев А.К.1 Северо-Кавказский горно-металлургический институт (ГТУ), г. Владикавказ Статья посвящена особенностям лизинга, в частности двум его разновидностям оперативному и финансовому. Ключевые слова: л...»

«УТВЕРЖДАЮ: Председатель Конкурсной комиссии _ Д.Ю. Галкин ДОКУМЕНТАЦИЯ о проведении открытого запроса предложений (приглашения делать предложения) относительно поставки дизельных самоходных пассажирских тра...»

«МИНИСТЕРСТВО РЕГИОНАЛЬНОГО РАЗВИТИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ СП 35.13330.2011 СВОД ПРАВИЛ МОСТЫ И ТРУБЫ Актуализированная редакция СНиП 2.05.03-84 Издание официальное Москва 2011 СП 35.13330.2011 Предисловие Цели и принц...»

«Шадрикова Вера Андреевна СИНТЕЗ И СВОЙСТВА ЧЕТВЕРТИЧНЫХ СОЛЕЙ ПИРИДИНИЯ И 1,2,3,6-ТЕТРАГИДРОПИРИДИНОВ АДАМАНТАНОВОГО РЯДА Специальность 02.00.03 – Органическая химия ДИССЕРТАЦИЯ на соискание ученой степен...»

«1 Праведников И.С. Уфимский государственный авиационный технический университет ОПРЕДЕЛЕНИЕ НАПРЯЖЕНИЙ В ПЛАСТИЧЕСКИ ДЕФОРМИРУЕМЫХ ДЕТАЛЯХ ВВЕДЕНИЕ Экспериментальные и экспериментально-расчетные методы определения напряженного состояния в пластической области приобретают все большее...»

«УДК 630*372/375 Ю. А. Ширнин, А. Ю. Ширнин МЕТОДИКА ОБОСНОВАНИЯ РЕЖИМОВ РАБОТЫ ТЕХНОЛОГИЧЕСКИХ МОДУЛЕЙ ПРИ КОМБИНИРОВАННОЙ ТРЕЛЕВКЕ ДРЕВЕСИНЫ Описано техническое решение для выполнения комбинированного способа трелевки, представляющее собой энергетический модуль и два сменных...»

«УДК 338 Хаценко Александр Николаевич Khatsenko Alexander Nikolayevich кандидат экономических наук, PhD in Economics, заведующий кафедрой "Менеджмент и бизнес" Head of Management and Business Department, Камышинского технологического института (филиала) Kamyshin Institute of Technology, Во...»

«ООО "АГ ИНЖИНИРИНГ"УСТРОЙСТВО ОХРАНЫ ПЕРИМЕТРОВ "БАГУЛЬНИК-М" ДАТЧИК РЕГИСТРАЦИИ ПРЕОДОЛЕНИЯ ЗАГРАЖДЕНИЙ "БАГУЛЬНИК-М" Индекс: 2КИ, 2ДИ(Т) РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ АНВЯ.426444...»

«ISSN 2227-8486 МОДЕЛИ, СИСТЕМЫ, СЕТИ В ЭКОНОМИКЕ, ТЕХНИКЕ, ПРИРОДЕ И ОБЩЕСТВЕ НАУЧНО-ИНФОРМАЦИОННЫЙ ЖУРНАЛ № 1(9) 2014 МОДЕЛИ, СИСТЕМЫ, СЕТИ В ЭКОНОМИКЕ, ТЕХНИКЕ, ПРИРОДЕ И ОБЩЕСТВЕ НАУЧНО-ИНФОРМАЦИОННЫЙ ЖУРНАЛ Учредитель и издатель журнала: Общество с ограниченной ответственностью "Ц...»

«ТИПОВАЯ ТЕХНОЛОГИЧЕСКАЯ КАРТА (ТТК) КОМПЛЕКСНО-МЕХАНИЗИРОВАННЫЙ ПРОЦЕСС ВЕРТИКАЛЬНОЙ ПЛАНИРОВКИ СТРОИТЕЛЬНОЙ ПЛОЩАДКИ НА ЗАТОРФОВАННОЙ ТЕРРИТОРИИ РАЗРАБОТАНА ОДОБРЕНА ВНИПИИСТРОМСЫРЬЕ Отделом организации и технологии строительного производ...»

«20162017 уч. год СОДЕРЖАНИЕ РАБОЧЕЙ ПРОГРАММЫ Раздел 1. Пояснительная записка. Раздел 2. Требования Федерального государственного стандарта к преподаванию образовательной области. Раздел 3. Критерии и нормы оценки знаний, умений и н...»

«ПРАВИТЕЛЬСТВО МОСКВЫ ПОСТАНОВЛЕНИЕ от 10 сентября 2002 г. N 743-ПП ОБ УТВЕРЖДЕНИИ ПРАВИЛ СОЗДАНИЯ, СОДЕРЖАНИЯ И ОХРАНЫ ЗЕЛЕНЫХ НАСАЖДЕНИЙ ГОРОДА МОСКВЫ (в ред. постановлений Правительства Москвы от 08.07.2003 N 527-ПП, от 24.02.2004 N 103-ПП, от 21.09.2004 N 644-ПП, от 28.12.2004 N 928-ПП, от 31.05.2005 N 37...»

«УДК 519.622.2 Методы и алгоритмы решения дифференциально-алгебраических уравнений для моделирования систем и объектов во временной области Часть 1 Д.М. Жук, В.Б. Маничев, А.О. Ильницкий МГТУ имени Н.Э.Баумана, manichev@bmstu.ru Аннотация — В первой части данной ст...»

«Приложение №4 к Договору строительного (генерального) подряда № _ 2016г. Требования, предъявляемые к составлению сметной документации и актов выполненных работ. Для определения сметной стоимости строительства отдельно каждого из пусковых комплексов составляется сметная доку...»

«Министерство образования и науки Российской Федерации Томский государственный архитектурно-строительный университет В Е СТ Н И К ТОМСКОГО ГОСУДАРСТВЕННОГО АРХИТЕКТУРНО-СТРОИТЕЛЬНОГО УН ИВЕ РС И ТЕТА № 3 (56) 2016 НАУЧНО-ТЕХНИЧЕСКИЙ ЖУРНАЛ Издается c апреля 1999 г. РЕДАКЦИОННАЯ КОЛЛЕГИЯ Ляхович Леонид Семенович, докт. те...»

«Российская империя в Первой мировой войне Общие работы 1. Большая война России : социальный порядок, публичная коммуникация и насилие на рубеже царской и советской эпох. – М. : НЛО, 2014. – 206, [2] с. Цель данного сборника статей — включить в общеевропейский контекст механизмы усвоен...»

«РАЗДЕЛ 2. ПСИХОЛОГИЯ СПОРТА. Тема 13 ПСИХОЛОГИЧЕСКАЯ ХАРАКТЕРИСТИКА ПРОЦЕССОВ ФОРМИРОВАНИЯ ДВИГАТЕЛЬНЫХ НАВЫКОВ Значительное место в любом виде спорта занимает процесс выработки двигательных навыков, что составляет основу технической подготовки спортсменов. Двигательные навыки это...»

«СТАРОДУБЦЕВ Вячеслав Алексеевич ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ КОМПЛЕКСОВ МУЛЬТИМЕДИЙНЫХ ДИДАКТИЧЕСКИХ СРЕДСТВ В ПЕДАГОГИЧЕСКОМ ПРОЦЕССЕ ВУЗА 13.00.08 – теория и методика профессионального образования Автореферат диссертации на соискание ученой степени доктора педагогических наук Барнаул – 2004 Работа выпол...»

«Автоматика и телемеханика, № 8, 2011 Линейные системы c 2011 г. И.А. ДЖУНУСОВ, канд. физ.-мат. наук (Санкт-Петербургский государственный университет), А.Л. ФРАДКОВ, д-р техн. наук (Институт проблем машиноведения РАН, Санкт-Петербург) СИНХРОНИЗАЦИЯ В СЕ...»

«1 УДК 620.193.43 В.В. Малышев (1,3), профессор, д.т.н. Д.Б. Шахнин (1), ст. научн. сотрудник, к.х.н. А.И. Габ (2), к.х.н., доцент Д.-М.Я. Брускова (3), ст. преподаватель, к.х.н. А.Ф. Никулина (3), доцент, к.х.н. ВЫСОКОТЕМПЕРАТУРНЫЙ СИНТЕЗ ДИБОРИДА АЛЮМИНИ...»








 
2017 www.lib.knigi-x.ru - «Бесплатная электронная библиотека - электронные материалы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.