Экспертная система visual prolog

Экспертная система visual prolog

Сетевые заметки системного администратора

Цель работы:
Создание программной экспертной системы в среде Visual Prolog.

Работа приведена в качестве примера.
Не высылайте ее в таком виде, вам ее не зачтут!

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

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

Формальное описание предметной области:
Правило 1.
ЕСЛИ блюдо должно подаваться горячим/теплым
И это блюдо жидкое,
ТО это первое блюдо.
Правило 2.
ЕСЛИ блюдо должно подаваться горячим/теплым
И это блюдо быстрого приготовления,
ТО это блюдо – фастфуд.
Правило 3.
ЕСЛИ блюдо должно подаваться горячим/теплым,
ТО это второе блюдо (“горячее”).
Правило 4.
ЕСЛИ блюдо легкое,
ТО это блюдо – салат.
Правило 5.
ЕСЛИ блюдо сладкое,
ТО это блюдо – десерт.
Правило 6.
ЕСЛИ блюдо – первое
И из мяса
И с тестом
И с картофелем
И с яйцом
И кисловатое,
ТО это суп щавелевый с галушками.
Правило 7.
ЕСЛИ блюдо – первое
И из мяса
И с картофелем
И с солеными огурцами
И кисловатое,
ТО это рассольник.
Правило 8.
ЕСЛИ блюдо – первое
И из мяса
И с картофелем
И с капустой,
ТО это борщ.
Правило 9.
ЕСЛИ блюдо – первое
И из курицы
И с картофелем
И с лапшой,
ТО это куриный суп.
Правило 10.
ЕСЛИ блюдо – первое
И из мясного фарша
И с картофелем
И с лапшой,
ТО это суп с фрикадельками.
Правило 11.
ЕСЛИ блюдо – первое
И из молока
И с лапшой,
ТО это молочный суп.
Правило 12.
ЕСЛИ блюдо – первое
И из рыбы
И с картофелем,
ТО это уха.
Правило 13.
ЕСЛИ блюдо – второе
И из мясного фарша
И с картофелем
И традиционное,
ТО это пюре с котлетой.
Правило 14.
ЕСЛИ блюдо – второе
И из мясного фарша
И с рисом
И с капустой,
ТО это голубцы.
Правило 15.
ЕСЛИ блюдо – второе
И из мяса
И с рисом,
ТО это плов.
Правило 16.
ЕСЛИ блюдо – второе
И из мясного фарша
И из теста
И на пару,
ТО это манты.
Правило 17.
ЕСЛИ блюдо – второе
И из мясного фарша
И из теста,
ТО это пельмени.
Правило 18.
ЕСЛИ блюдо – второе
И из мяса
И с картофелем
И с сыром
И с майонезом,
ТО это мясо по-французски.
Правило 19.
ЕСЛИ блюдо – второе
И из рыбы
И с начинкой,
ТО это рыба фаршированная.
Правило 20.
ЕСЛИ блюдо – фастфуд
И из теста
И с помидорами
И с колбасой
И с сыром
И с оливками,
ТО это пицца.
Правило 21.
ЕСЛИ блюдо – фастфуд
И из теста
И с колбасой
И с сыром
И с майонезом,
ТО это бутерброд.
Правило 22.
ЕСЛИ блюдо – салат
И из мяса
И с картофелем
И с солеными огурцами
И с яйцом
И с майонезом
И традиционное,
ТО это зимний.
Правило 23.
ЕСЛИ блюдо – салат
И с помидорами
И со свежими огурцами
И с сыром
И с оливками
И с майонезом,
ТО это греческий.
Правило 24.
ЕСЛИ блюдо – салат
И из мяса
И с морковью
И кисловатое,
ТО это хе.
Правило 25.
ЕСЛИ блюдо – салат
И с картофелем
И с яйцом
И с сыром
И с майонезом
И с гранатами,
ТО это красная шапочка.
Правило 26.
ЕСЛИ блюдо – салат
И с помидорами
И со свежими огурцами
И с майонезом,
ТО это летний.
Правило 27.
ЕСЛИ блюдо – салат
И из курицы
И с картофелем
И с солеными огурцами
И с яйцом
И с майонезом
И с сыром,
ТО это нежность.
Правило 28.
ЕСЛИ блюдо – десерт
И из теста
И из молока
И с начинкой,
ТО это блин сладкий.
Правило 29.
ЕСЛИ блюдо – десерт
И из теста
И из молока,
ТО это блин.
Правило 30.
ЕСЛИ блюдо – десерт
И с начинкой
И с шоколадом,
ТО это шоколадные конфеты.
Правило 31.
ЕСЛИ блюдо – десерт
И с начинкой
И из теста,
ТО это торт.
Правило 32.
ЕСЛИ блюдо – десерт
И с начинкой
И из молока
И очень холодное,
ТО это мороженое.
Правило 33.
ЕСЛИ блюдо – десерт
И с шоколадом
И из молока
И очень холодное,
ТО это мороженое.
Правило 34.
ЕСЛИ блюдо – десерт
И из молока
И очень холодное,
ТО это мороженое.
Правило 35.
ЕСЛИ блюдо – десерт
И из молока,
ТО это молочный коктейль.

Читайте также:  Hyundai hynix ddr4 dimm 8gb pc4 19200

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

15.1. Экспертная система

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

  • по наличию крыльев или рогов;
  • по форме крыльев, если они имеются;
  • по форме и количеству рогов, в случае их наличия;
  • по форме головы;
  • по форме туловища.

Программа вычисляет животное следующим образом. Она перебирает животных из базы данных (об этом пользователю не сообщается) и проверяет в диалоге с пользователем, имеются ли у них в наличии необходимые признаки. Если выяснилось, что признак имеется, то впоследствии повторно вопрос о нем не задается. Полученные сведения могут быть противоречивыми. В этом случае программа сообщает, что для ответа ей недостает сведений. Если оказалось, что все признаки некоторого животного имеются в наличии, и что признаки, которыми он не обладает, действительно отсутствуют, то делается заключение, что животное распознано. Пользователю задаются вопросы, на которые он отвечает "да", "нет" или "?". Например, "Верно ли что, форма крыльев — орлиные?". Если пользователь вводит знак вопроса "?", то программа объясняет, почему задается такой вопрос, например: "Идет проверка гипотезы, что чудовище — грифон . Известно, что чудовище — крылатое".

Все сведения о животных хранятся в двух видах фактов — rule/4 и cond/3 . Отношение rule описывает виды животных, в нем указывается список номеров необходимых признаков. Отношение cond описывает сами признаки. Идея реализации экспертной системы взята из примера GENI системы Visual Prolog 5.2. Ниже приводится более простой вариант экспертной системы.

Читайте также:  Виртуальная машина андроид для windows 10

В директории Exe проекта следует создать файл monsters.txt и поместить в него приведенные ниже факты.

Реализация экспертной системы приведена в листинге 15.2.

Лабораторная работа №5 Разработка экспертной системы средствами Visual Prolog

Разработка экспертной системы средствами Visual Prolog

1.Цель работы: Изучение принципов построения и организации экспертных систем, базирующихся на логике и правилах.

2. Краткие теоретические сведения

Разработка " w /> систем (ЭС) является наиболее плодотворной быстро развивающейся областью применения Пролога" w />. Очень важно понимать, как работают экспертные системы, так как они могут использоваться, фактически, в любой области знаний.

Экспертная система" w /> – это компьютерная программа, которая в некоторой области проявляет степень познаний равнозначную сте­пени познания человека-эксперта. Обычно эта область строго ог­раничена. Однако, количество приложений огромно. Сюда входят понимание речи, анализ изображений, прогноз погоды, оценка бу­дущего урожая, медицинская диагностика, разработка интегральных схем, финансирование, управление воздушным движением, управле­ние боем и т. д.

Чтобы проводить экспертизу, компьютерная программа должна быть способна решать задачи посредством логического вывода и получать при этом достаточно надежные результаты. Программа должна иметь доступ к системе фактов, называемой базой знаний. Программа также должна во время консультации выводить заключения из информации, имеющейся в базе знаний. Некоторые экспертные" w /> системы могут также использовать новую информацию, добавляемую во время консультации. Экспертную" w /> систему, таким образом, можно представлять состоящей из трех частей:

1. База знаний (БЗ).

2. Механизм вывода (МВ).

3. Система пользовательского интерфейса (СПИ).

База знаний – центральная часть экспертной системы" w /> системы. Она содержит правила, описывающие отношения или явления, методы и знания для решения задач из области применения системы. Можно представлять базу знаний состоящей из фактических знаний и зна­ний, которые используются для вывода других знаний. Утверждение « Кеннеди был 35-м президентом Соединенных Штатов» – пример фактического знания. «Если у вас болит голова, то примите две таблетки цитрамона» ­­– пример знания для вывода. Сама база знаний обычно располагается на диске или другом носителе.

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

Когда экспертной " w /> системе задается вопрос, механизм вывода выбирает способ применения правил базы знаний для решения зада­чи, поставленной в вопросе. Фактически, механизм вывода запус­кает экспертную" w /> систему в работу, определяя какие правила нужно вызвать и организуя к ним доступ в базу знаний. Механизм вывода выполняет правила, определяет, когда найдено приемлемое решение и передает результаты программе интерфейса с пользователем. Когда вопрос должен быть предварительно обработан, то доступ к базе знаний осуществляется через интерфейс с пользователем.

Ин­терфейс – это часть экспертной " w /> системы, которая взаимодействует с пользователем. Как правило, пользователи мало знают об организации базы знаний, поэтому интерфейс может помочь им работать с экспертной " w /> системой даже, если они не знают, как она организована. Интер­фейс может также объяснить пользователю, каким образом экспертная" w /> система выводит результат.

В настоящем издании мы ограничимся лишь организацией БЗ и управлением стратегией вывода. Для чего рассмотрим два примера реализации ЭС средствами Пролога: ЭС, построенную на правилах, и ЭС, построенную на логике.

Во всех экспертных" w /> системах существует зависимость между входным потоком данных и данными в базе знаний. Во время кон­сультации входные данные сопоставляются с данными в базе зна­ний. Результатом сопоставления является отрицательный или ут­вердительный ответ.

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

Читайте также:  Изображение на экране монитора растянуто по горизонтали

Экспертная" w /> система, базирующаяся на прави­лах (на Прологе) содержит множество правил. Предикаты в левой части правил определяют один из возможных вариантов решения задачи, предикаты в правой части всегда специфицируются другими правилами, помимо тех случаев, когда предикат просто проверяет, находится ли определенная информация в базе данных. Информация, помещаемая в базу данных, извлекается из ответов пользователя на задаваемые вопросы. Все ответы сохраняются, так как они могут понадобиться позднее.

Экспертная " w /> система также содержит интерпретатор в механизме выво­да. Работу этого интерпретатора можно описать последовательностью трех шагов: интерпретатор сопоставляет образец правила с элементами данных в базе знаний; если можно вызвать более одного правила, то интерпретатор использует механизм разрешения конфликта для выбора правила; интерпретатор применяет выбранное правило, чтобы най­ти ответ на вопрос. Этот процесс интерпретации является цикличес­ким и называется циклом «распознавание-действие».

Рассмотрим в качестве примера экспертной" w /> системы на правилах систему для идентификации пород собак. Она помогает потен­циальному хозяину выбрать породу собаки в соответствии с опре­деленными критериями.

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

Рассмотрим две породы собак, информация о кото­рых содержится в базе знаний. Гончая имеет короткую шерсть, высоту в холке меньше 57 см длинные уши и хороший характер. Датский дог имеет короткую шерсть, низко посаженный хвост, длинные уши, хоро­ший характер и вес более 45 кг.

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

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

dog_is(«Гончая»):– it_is(«короткоерстная собака»),

positive(«ее»,»высота в холке не более 57 см»),

positive(«у нее»,»длинные уши»),

positive(«у нее»,»дружелюбный характер»), !.

dog_is(«Great Dane»):– it_is(«длинношерстная собака»),

positive(«у нее»,»низко посаженный хвост»),

positive(«у нее»,»длинные уши»),

positive(«у нее»,»дружелюбный характер»),

positive(«ее»,»вес более 45 кг»), !.

Заметим, что в правилах длина шерсти может быть представлена с помощью предиката positive в виде:

positive(«у нее»,»короткая шерсть»).

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

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

ЛИСТИНГ

/* Программа: эксперт по породам собак */

/* Это продукционная система, базирующаяся на правилах*/

Ссылка на основную публикацию
Adblock detector