- •Инструментальные средства конструирования экспертных систем
- •Введение
- •Система 1stClass
- •Общие характеристики системы 1stClass
- •Режим приобретения знаний
- •Режим консультации
- •Пример использования системы
- •Разработка эс
- •«Каталог» на основе 1stClass
- •Примеры консультаций
- •Системаexsys
- •Общие характеристики системы
- •Режим конструирования прикладной экспертной системы
- •Начальные установки
- •Ввод правил
- •Ввод формул
- •Изменение ранее выбранных установок
- •Работа с внешними программами
- •Примеры работы
- •Постановка прикладной задачи
- •Использование математических выражений
- •Редактирование правил
- •Использование внешних программ
- •Пример использования системы
- •Система guru
- •Общие характеристики системы
- •Функциональные возможности
- •Построение экспертной системы
- •Тестирование экспертной системы
- •Запуск системы и работа в режиме меню
- •Запуск системы
- •Некоторые сведения о работе в режиме меню
- •Использование режима меню
- •Описание команд меню Expert Systems
- •Режим редактирования набора правил (guru Rule Set Manager)
- •Режим редактирования правил
- •Часть if – посылка правила. Может быть любым выражением.
- •Режим редактирования переменных
- •Описание команд меню Information Manager
- •Примеры использования системы
- •Язык искусственного интеллекта clips
- •Краткая история clips
- •Факты, правила и функции clips
- •Правила и функции
- •Работа в среде clips под Windows
- •Instance Window
- •Постановка задачи
- •Листинг программы
- •Контрольные вопросы
- •Библиографический список
- •Приложение 1 Листинг 1. Эс для оценки надежности поставщика (в среде guru)
- •Листинг 2. Пример работы эс для оценки надежности поставщика
- •Пример объяснений
- •Листинг 3. Подсистема прогнозирования цен Текст программы
- •Пример консультации
- •Приложение 2 Команды clips
- •Описание clips в бнф
- •Оглавление
Примеры использования системы
В приложении 1 приводятся примеры программ и результаты работы несложных ЭС (учебных прототипов), созданных в среде GURU для оценки надежности поставщика (листинги 1, 2) и прогнозирования цен (листинг 3).
Язык искусственного интеллекта clips
Краткая история clips
Название языка CLIPS – аббревиатура от C Language Integrated System. Язык был разработан в Центре космических исследований NASA (NASA's Johnson Space Center) в середине 1980-х годов и во многом сходен с языками, созданными на базе LISP и OPS5 [3, 8]. Использование С в качестве языка реализации объясняется тем, что компилятор LISP не поддерживается частью распространенных платформ, а также сложностью интеграции LISP-кода в приложения, которые используют отличный от LISP язык программирования. Хотя в то время на рынке уже появились программные средства для задач искусственного интеллекта, разработанные на языке С, специалисты из NASA решили создать такой продукт самостоятельно. Разработанная ими система в настоящее время находится в открытом доступе (ее можно «скачать» по сети INTERNET), и отметим, что по своим возможностям она не уступает многим гораздо более дорогим коммерческим продуктам.
Первая версия представляла собой, по сути, интерпретатор порождающих правил. Процедурный язык и объектно-ориентированное расширение CLIPS – Object-Oriented Language (COOL) были включены в этот программный продукт только в 1990-х годах. Существующая в настоящее время версия может эксплуатироваться на платформах UNIX, DOS, Windows и Macintosh.
Факты, правила и функции clips
CLIPS включает в себя язык представления порождающих правил и язык описания процедур.
Основными компонентами языка описания правил являются база фактов (fact base) и база правил (rule base). База фактов представляет исходное описание задачи. База правил содержит операторы, которые преобразуют состояния проблемы, приводя его к решению – целевому состоянию.
Машина логического вывода CLIPS сопоставляет факты из базы фактов и правила из базы правил и выясняет, какие из правил можно активизировать. Это выполняется циклически, причем каждый цикл (так называемый продукционный цикл или цикл распознавания действия) состоит из трех основных фаз:
сопоставление фактов и правил;
выбор правила, подлежащего активизации;
выполнение действий, предписанных активным («зажженным») правилом.
После запуска CLIPS перед пользователем появляется окно с приглашением CLIPS>, извещающее, что пользователь работает с интерпретатором CLIPS. Подробный список команд приведен в приложении 2.
Факты
Факты – одна из основных форм высокого уровня для представления информации в системе CLIPS. Каждый факт представляет часть информации, которая была помещена в текущую базу фактов. Факты – фундаментальная единица данных, используемых правилами.
Факты могут быть добавлены или удалены из базы фактов, изменены или продублированы через явное взаимодействие пользователя или во время выполнения программы CLIPS.
Факт может быть определен или индексом факта или адресом факта. Всякий раз, когда факт добавлен (или изменен) ему дают уникальный целочисленный индекс, называемый индексом факта. Индексы факта начинаются с нуля и увеличиваются на единицу для каждого нового или измененного (замененного) факта.
Для добавления факта в режиме интерпретации используется команда assert. Например:
CLIPS> (assert (today is Sunday))
<Fact-0>
CLIPS> (assert (weather is warm))
<Fact-1>
Для просмотра фактов, имеющихся в базе фактов, используется команда facts. Например:
CLIPS> (facts)
f-0 (today is Sunday)
f-1 (weather is warm)
Для удаления фактов используется команда retract. Например:
CLIPS> (retract 1)
CLIPS> (facts)
f-0 (today is Sunday)
С помощью команд assert и retract выполняется программное изменение базы фактов.
Команда clear очищает всю базу фактов.
В тексте программы факты можно включать в базу не по одиночке, а целым массивом. Для этого в CLIPS имеется команда deffacts.
Например:
(deffacts today
(today is Sunday)
(weather is warm))
Выражение deffacts имеет формат, аналогичный выражениям в языке LISP. Выражение начинается с команды deffacts, затем приводится имя списка фактов (today в нашем примере), а за ним следуют элементы списка, причем их количество не ограничивается.
Для удаления массива фактов используется команда undeffacts формата (undeffacts today).
Для загрузки фактов из файла необходимо сделать следующее:
подготовить файл, в котором формируются факты с помощью команды deffacts;
загрузить этот файл с помощью команды CLIPS load;
выполнить команду reset, которая и осуществит окончательную загрузку фактов.
CLIPS> (reset)
Команда reset сначала очищает базу фактов, а затем добавляет факты из указанных ранее командами deffacts массивов. Она также добавляет в базу единственный системно-определенный факт:
f-0 (initial-fact)
Это делается по умолчанию, поскольку иногда имеет смысл включить в программу правило start rule, которое может быть сопоставлено с этим фактом и позволит выполнить какие-либо нестандартные инициализирующие операции. Однако включать такое правило в программу или нет, решает программист.
Использование шаблонов
Для определения фактов можно использовать не только списочные структуры, но и шаблоны, которые напоминают простые записи.
Пример шаблона:
(deftemplate student
«a student record»
(slot name (type STRING))
(slot age (type NUMBER) (default 18))
Каждое определение шаблона состоит из произвольного имени шаблона, необязательного комментария и некоторого количества определений слотов. Слот включает поле данных, например name, и тип данных, например STRING. Можно указать и значение по умолчанию, как в приведенном выше примере.
Если в программу включено приведенное выше определение шаблона, то выражение
(deffacts students
(student (name fred))
(student (name freda) (age 19))
приведет к тому, что в базу фактов после выполнения команды reset будет добавлена следующая информация:
(student (name fred) (age 18))
(student (name freda) (age 19))