Экспертная система "Выбор спортивного инвентаря"

Рассмотрение экспертных систем: классификация, назначение, общие принципы построения и функционирования. Среда разработки данных систем: BorlandC++ Builder 6.0 и AMZI! Prolog. Описание процесса разработки экспертной системы "Выбор спортивного инвентаря".

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.08.2012
Размер файла 426,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

СОДЕРЖАНИЕ

  • ВВЕДЕНИЕ
  • 1. ЭКСПЕРТНЫЕ СИСТЕМЫ
    • 1.1 Назначение экспертных систем
    • 1.2 Особенности экспертных систем
    • 1.3 Классификация экспертных систем
  • 2. СРЕДЫ РАЗРАБОТКИ
    • 2.1 Язык логического программирования Пролог
    • 2.2 Общие сведения о BorlandC++ Builder
  • 3. РАЗРАБОТКА ЭКСПЕРТНОЙ СИСТЕМЫ «Выбор спортивного инвентаря»
    • 3.1 Выбор метода реализации экспертной системы
    • 3.2 Построение экспертной системы: описание логической части программы
    • 3.3 Интерфейс экспертной системы: Windows - приложение
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
  • ПРИЛОЖЕНИЕ

ВВЕДЕНИЕ

экспертная система borland builder prolog

Целью данной курсовой работы является разработка экспертной системы «Выбор спортивного инвентаря».

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

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

В первой главе данной курсовой работы рассматриваются экспертные системы, а именно:

· их назначение и общие принципы построения;

· механизмы действия и принципы функционирования;

· классификация экспертных систем.

Во второй главе курсовой работы рассматриваются среды разработки, в которых создаются экспертные системы: BorlandC++ Builder 6.0 и AMZI! Prolog, основные их функции, синтаксис, а так же преимущества и недостатки.

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

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

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

Курсовая работа содержит:

1. 29 страниц;

2. 3 главы;

3. 7 рисунков;

4. 1 таблица;

5. 1 приложение;

6. 5 литературных источников.

1. ЭКСПЕРТНЫЕ СИСТЕМЫ

Экспемртная системма (ЭС, expert system) -- компьютерная программа, способная частично заменить специалиста-эксперта в разрешении проблемной ситуации. Современные ЭС начали разрабатываться исследователями искусственного интеллекта в 1970-х годах, а в 1980-х получили коммерческое подкрепление. Предтечи экспертных систем были предложены в 1832 году С. Н. Корсаковым, создавшим механические устройства, так называемые «интеллектуальные машины», позволявшие находить решения по заданным условиям, например, определять наиболее подходящие лекарства по наблюдаемым у пациента симптомам заболевания[5].

1.1 Назначение экспертных систем

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

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

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

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

· технология экспертных систем существенно расширяет круг практически значимых задач, решаемых на компьютерах, решение которых приносит значительный экономический эффект;

· технология ЭС является важнейшим средством в решении глобальных проблем традиционного программирования: длительность и, следовательно, высокая стоимость разработки сложных приложений;

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

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

1.2 Особенности экспертных систем

Особенности экспертных систем:

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

* символьные рассуждения - знания, на которых основана экспертная система, представляют в символьном виде понятия реального мира, рассуждения также происходят в виде преобразовании символьных наборов;

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

* самосознание - экспертная система должна включать в себя механизм объяснения того, каким образом она приходит к решению задачи.

Экспертные системы создаются для решения разного рода проблем, но они имеют схожую структуру (рис. 1.1.); основные типы их деятельности можно сгруппировать в категории, приведенные в табл. 1.1.

Рис. 1.1. Схема обобщенной экспертной системы

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

Таблица 1.1.

Типичные категории способов применения экспертных систем

Категория

Решаемая проблема

Интерпретация

Описание ситуации по информации, поступающей от датчиков

Прогноз

Определение вероятных последствий заданных ситуаций

Диагностика

Выявление причин неправильного функционирования системы по наблюдениям

Проектирование

Построение конфигурации объектов при заданных ограничениях

Планирование

Определение последовательности действий

Наблюдение

Сравнение результатов наблюдений с ожидаемыми результатами

Отладка

Составление рецептов исправления неправильного функционирования системы

Ремонт

Выполнение последовательности предписанных исправлений

Обучение

Диагностика и исправление поведения обучаемого

Управление

Управление поведением системы как целого

1.3 Классификация экспертных систем

Классификация ЭС по решаемой задаче:

· Интерпретация данных

· Диагностирование

· Мониторинг

· Проектирование

· Прогнозирование

· Сводное Планирование

· Обучение

· Управление

· Ремонт

· Отладка

Классификация ЭС по связи с реальным временем:

· Статические ЭС - это ЭС, решающие задачи в условиях не изменяющихся во времени исходных данных и знаний.

· Квазидинамические ЭС

· Динамические ЭС - это ЭС, решающие задачи в условиях изменяющихся во времени исходных данных и знаний.

2. СРЕДЫ РАЗРАБОТКИ

Интегрированная среда разработки, ИСР (англ. IDE, Integrated development environment или integrated debugging environment) -- система программных средств, используемая программистами для разработки программного обеспечения (ПО).

Обычно среда разработки включает в себя:

· текстовый редактор

· компилятор и/или интерпретатор

· средства автоматизации сборки

· отладчик.

2.1 Язык логического программирования Пролог

Пролог (фр. Program mationen Logique) -- язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.

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

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

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

Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщёнными сведениями[1].

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

2.2 Общие сведения о BorlandC++ Builder

C++ Builder-- программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке C++.

C++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL, CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие компоненты. Цикл разработки аналогичен Delphi. Большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации, но обратное утверждение не верно.

C++ Builder содержит инструменты, которые при помощи drag-and-drop действительно делают разработку визуальной, упрощает программирование благодаря встроенному WYSIWYG -- редактору интерфейса и пр.

Формы являются основой приложений C++ Builder. Создание пользовательского интерфейса приложения заключается в добавлении в окно формы элементов объектов C++ Builder, называемых компонентами.

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

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

3. РАЗРАБОТКА ЭКСПЕРТНОЙ СИСТЕМЫ «Выбор спортивного инвентаря»

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

3.1 Выбор метода реализации экспертной системы

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

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

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

Для экспертной системы лучшим решением является использование некоторого логического языка. Если сравнить код, реализующий одну и ту же экспертную систему (механизм вывода), то у процедурного языка он будет гораздо более объемным и более сложным. А наличие таких механизмов в языке как сопоставление образцов (унификации), древовидное представление структур, автоматический возврат делают его просто незаменимым языком для программирования экспертных систем. Общепринятое представление экспертной системы в виде базы знаний и механиз-ма вывода не полностью пригодно для экспертных систем, написанных на Прологе. Многие функции механизма вывода обеспечиваются самим Прологом. Базы знаний, образованные средствами Пролога, являются выполняемыми. Однако Пролог не обеспечивает некоторых важных свойств экспертных систем, обычно встроенных в механизм вывода. Примеры таких свойств порождение объяснений и рассуждения в условиях неопределенности. Исходя из этого, средой для реализации основной части экспертной системы был выбран язык Пролог, в качестве одного из лучших представителей языков логического программирования. Для построения оболочки используется BorlandC++Builder 6и стандартный компонент LSEngine.

3.2 Построение экспертной системы: описание логической части программы

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

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

Кроме ответа на вопрос «Почему» программа имеет возможность отвечать на вопрос «Как», после вывода сделанного экспертной системой пользователь может проследить весь процесс вывода.

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

3.3 Интерфейс экспертной системы:Windows - приложение

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

Рис. 3.2. Главная форма экспертной системы.

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

Рис.3.3. Загрузили базу знаний.

Рисунок 3.4. иллюстрирует опрос пользователя в поисках верного решения.

Рис.3.4. Опрос базы.

На рисунке 3.5. отображен результат ответа на вопрос «Почему?», что позволяет пользователю системы узнать ход дальнейших рассуждений системы.

Рис. 3.5. Иллюстрация работы кнопки «Почему».

Рисунок 3.6. иллюстрирует конечный результат опроса - выбор спортивного инвентаря.

Рис.3.6. Конечный результат опроса.

Рисунок 3.7. показывает возможность просмотра хода принятия решений экспертной системой.

Рис.3.7. Ход принятия решений.

ЗАКЛЮЧЕНИЕ

В ходе выполнения данного курсового проекта были достигнуты все поставленные цели и задачи.

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

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

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

В процессе выполнения данной курсовой работы были изучены среды разработки AMZI! Prolog и BorlandC++ Builder, а так же общие принципы их взаимодействия. Так же был изучен язык рекурсивно-логического программирования Prolog, и углублены знания языка объектно-ориентированного программирования C++. Были освоены принципы построения баз знаний.

ПРИЛОЖЕНИЕ

:- op(790, fx, 'если').

:- op(780, xfx, 'то').

:- op(775, xfy, 'или').

:- op(770, xfy, 'и').

:- op(765, fx, 'не').

gethow :- !, clause('главнаяцель'(X),MainGoal),'как'(MainGoal),fail.

'решить' :-abolish('ответ'/2),'назначениеэкспертнойсистемы'(G),clause('главнаяцель'(X),MainGoal),'решить'(MainGoal),resultwrite(X),!.

'известно'('не' A) :- 'ответ'(A,_).

'известно'(A) :- 'ответ'(A,_).

'предложение'(A,B) :- 'если' B 'то' A.

'предложение'(A,'истина') :- 'ответ'(A,'истина').

'предложение'('не' A,'истина') :- 'ответ'(A,'ложь').

'предложение'(A,B) :- clause(A,B).

'решить'(Goal) :- 'решить'(Goal,[]).

'решить'('истина',_).

'решить'(A 'и' B,Rules) :- !,'решить'(A,Rules),'решить'(B,Rules).

'решить'(A 'или' B,Rules) :- !,('решить'(A,Rules);'решить'(B,Rules)).

'решить'(A,Rules) :-'предложение'(A,B),'решить'(B,['правило'(A,B)|Rules]).

'решить'(A,Rules) :-'можноспросить'(A),not 'известно'(A),'спросить'(A,Answer),'ответить'(Answer,A,Rules).

'можно спросить'('не' A) :- !,'вопрос'(A).

'можно спросить'(A) :- 'вопрос'(A).

'спросить'('не' A,Answer) :- !, opros(A,Ans),string_term(Ans,Answer).

'спросить'(A,Answer) :- opros(A,Ans),string_term(Ans,Answer).

'ответить'(y,'не' A,Rules) :- !,assert('ответ'(A,'истина')),fail.

'ответить'(y,A,Rules) :- !,assert('ответ'(A,'истина')).

'ответить'(n,'не' A,Rules) :- !,assert('ответ'(A,'ложь')).

'ответить'(n,A,Rules) :- !,assert('ответ'(A,'ложь')),fail.

'ответить'(why,A,[Rule|Rules]) :- !,'вывестиправило'(Rule),'спросить'(A,Answer),'ответить'(Answer,A,Rules).

'ответить'(why,A,[]) :- !,donerule,'спросить'(A,Answer),'ответить'(Answer,A,[]).

'ответить'(hl,A,[]) :- !,halt.

'ответить'(_,A,Rules) :-write($ответьтеy,nили why$),nl,'спросить'(A,Answer),'ответить'(Answer,A,Rules).

'вывести правило'('правило'(A,B)) :-showrule(A,B).

'доказать'('истина','истина').

'доказать'(A 'и' B,(ProofA,ProofB)):-'доказать'(A,ProofA),'доказать'(B,ProofB).

'доказать'(A 'или' B,(ProofA,ProofB)):-('доказать'(A,ProofA);'доказать'(B,ProofB)).

'доказать'(A,(A:-Proof):-'предложение'(A,B),'доказать'(B,Proof).

'как'(Goal) :- 'доказать'(Goal,Proof),'интерпретировать'(Proof).

'интерпретировать'((Proof1,Proof2)) :- 'интерпретировать'(Proof1),'интерпретировать'(Proof2).

'интерпретировать'(Proof) :-'факт'(Proof,Fact),showfact(Fact,1).

'интерпретировать'(Proof) :-'правило'(Proof,Head,Body,Proof1),showfact(Head,2),'вывести правило1'('правило'(Head,Body)),'интерпретировать'(Proof1).

'вывести правило1'('правило'(A,B)) :-showrule1(A,B).

'факт'((Fact:-true),Fact).

'правило'((Goal:-Proof),Goal,Body,Proof) :-Proof \= true, 'извлечьтело'(Proof,Body).

'извлечьтело'((Proof1,Proof2),(Body1,Body2)) :-!,'извлечьтело'(Proof1,Body1),'извлечьтело'(Proof2,Body2).

'извлечьтело'((Goal:-Proof),Goal).

ФайлDB.pro

'главная цель'(X) :- 'ссылка'-X.

'назначение экспертной системы'($Экспертная система составление меню в ресторане$).

'вопрос'('Нужен спортивный инвентарь?').

'вопрос'('Для тренажерного зала?').

'вопрос'('Нужна одежда?').

'вопрос'('Полный комплект?').

'вопрос'('Для велоспорта?').

'вопрос'('Спортивная обувь?').

'вопрос'('Нужна штанга?').

'вопрос'('Нужен мяч?').

'вопрос'('Блины нужны?').

'вопрос'('Нужны гири?').

'вопрос'('Для футбола?').

'вопрос'('Нужны лыжи?').

'если' 'Нужен спортивный инвентарь?' 'то' 'ссылка1'-'А1'.

'если' 'не' 'Нужен спортивный инвентарь?' 'то' 'ссылка1'-'А2'.

'если' 'ссылка1'-'А1' 'и' 'Для тренажерного зала?' 'то' 'ссылка2'-'А3'.

'если' 'ссылка1'-'А1' 'и' 'не' 'Для тренажерного зала?' 'то' 'ссылка2'-'А4'.

'если' 'ссылка1'-'А2' 'и' 'Нужна одежда?' 'то' 'ссылка2'-'А5'.

'если' 'ссылка1'-'А2' 'и' 'не' 'Нужна одежда?' 'то' 'ссылка2'-'А6'.

'если' 'ссылка2'-'А3' 'и' 'Полный комплект?' 'то' 'ссылка3'-'А7'.

'если' 'ссылка2'-'А3' 'и' 'не' 'Полный комплект?' 'то' 'ссылка3'-'А8'.

'если' 'ссылка2'-'А4' 'и' 'Для велоспорта?' 'то' 'ссылка3'-'А9'.

'если' 'ссылка2'-'А4' 'и' 'не' 'Для велоспорта?' 'то' 'ссылка3'-'А10'.

'если' 'ссылка2'-'А5' 'то' 'ссылка'-'Спортивный костюм Adidas'.

'если' 'ссылка2'-'А6' 'и' 'Спортивная обувь?' 'то' 'ссылка3'-'А11'.

'если' 'ссылка2'-'А6' 'и' 'не' 'Спортивная обувь?' 'то' 'ссылка3'-'А12'.

'если' 'ссылка3'-'А7' 'то' 'ссылка'-'Комплект для тренажерного зала'.

'если' 'ссылка3'-'А8' 'и' 'Нужна штанга?' 'то' 'ссылка4'-'А13'.

'если' 'ссылка3'-'А8' 'и' 'не' 'Нужна штанга?' 'то' 'ссылка4'-'А14'.

'если' 'ссылка3'-'А9' 'то' 'ссылка'-'Велосипед'.

'если' 'ссылка3'-'А10' 'и' 'Нужен мяч?' 'то' 'ссылка4'-'А15'.

'если' 'ссылка3'-'А10' 'и' 'не' 'Нужен мяч?' 'то' 'ссылка4'-'А16'.

'если' 'ссылка3'-'А11' 'то' 'ссылка'-'Кроссовки Adidas'.

'если' 'ссылка3'-'А12' 'то' 'ссылка'-'Не можем помочь'.

'если' 'ссылка4'-'А13' 'и' 'Блины нужны?' 'то' 'ссылка5'-'А17'.

'если' 'ссылка4'-'А13' 'и' 'не' 'Блины нужны?' 'то' 'ссылка5'-'А18'.

'если' 'ссылка4'-'А14' 'и' 'Нужны гири?' 'то' 'ссылка5'-'А19'.

'если' 'ссылка4'-'А14' 'и' 'не' 'Нужны гири?' 'то' 'ссылка5'-'А20'.

'если' 'ссылка4'-'А15' 'и' 'Для футбола?' 'то' 'ссылка5'-'А21'.

'если' 'ссылка4'-'А15' 'и' 'не' 'Для футбола?' 'то' 'ссылка5'-'А22'.

'если' 'ссылка4'-'А16' 'и' 'Нужны лыжи?' 'то' 'ссылка5'-'А23'.

'если' 'ссылка4'-'А16' 'и' 'не' 'Нужны лыжи?' 'то' 'ссылка5'-'А24'.

'если' 'ссылка5'-'А17' 'то' 'ссылка'-'Штанга + блины'.

'если' 'ссылка5'-'А18' 'то' 'ссылка'-'Штанга без блинов'.

'если' 'ссылка5'-'А19' 'то' 'ссылка'-'Комплект гирь'.

'если' 'ссылка5'-'А20' 'то' 'ссылка'-'Эспандер'.

'если' 'ссылка5'-'А21' 'то' 'ссылка'-'Футбольный мяч'.

'если' 'ссылка5'-'А22' 'то' 'ссылка'-'Волейбольный мяч'.

'если' 'ссылка5'-'А23' 'то' 'ссылка'-'Пара лыж'.

'если' 'ссылка5'-'А24' 'то' 'ссылка'-'Бейсболка'.

ФайлUnit1.cpp

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "Amzi"

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

TTFi __stdcallP_Resultwrite(TEngIDEngID) {

ShowMessage(Form1->LSEngine1->GetPStrParm(1));

returnlstrue;

}

//---------------------------------------------------------------------------

TTFi __stdcallP_Showrule(TEngIDEngID) {

//отвечает на вопрос почему

AnsiStringS;

TTerm t;

S = "Если ";

Form1->LSEngine1->GetParm(2, dTERM, &t);

S = S + " " + Form1->LSEngine1->TermToPStr(t);

Form1->LSEngine1->GetParm(1, dTERM, &t);

S = S + " То " + Form1->LSEngine1->TermToPStr(t);

ShowMessage(S);

returnlstrue;

}

//---------------------------------------------------------------------------

TTFi __stdcallP_Showfacts(TEngIDEngID) {

AnsiString S, S1;

TTerm t;

Form1->LSEngine1->GetParm(1, dTERM, &t);

S = Form1->LSEngine1->TermToPStrQ(t);

if (Form1->LSEngine1->GetIntParm(2) == 1) {

S = " содержится в базезнаний";

} else {

S1 = " доказывается:";

}

S = S + S1;

Form1->Solution->Lines->Add("");

Form1->Solution->Lines->Add(S);

returnlstrue;

}

//---------------------------------------------------------------------------

TTFi __stdcall P_Showrule1(TEngIDEngID) {

AnsiString S;

TTerm t;

Form1->LSEngine1->GetParm(2, dTERM, &t);

S = " Если " + Form1->LSEngine1->TermToPStr(t);

Form1->Solution->Lines->Add("");

Form1->Solution->Lines->Add(S);

Form1->LSEngine1->GetParm(1, dTERM, &t);

S = " То " + Form1->LSEngine1->TermToPStr(t);

Form1->Solution->Lines->Add(S);

returnlstrue;

}

//---------------------------------------------------------------------------

TTFi __stdcallP_Opros(TEngIDEngID) {

//опроспользователя

AnsiString S;

inti;

Form2->Edit2->Text = Form1->LSEngine1->GetPStrParm(1);

Form2->Show();

Form1->LastModalRes = mresNone;

Form1->CloseApp = false;

while (Form1->LastModalRes == mresNone&& !Form1->CloseApp) {

Application->ProcessMessages();

if (Form1->CloseApp) {

S = "hl";

} else {

switch (Form1->LastModalRes) {

casemresYes:

S = "y";

break;

casemresNo:

S = "n";

break;

casemresWhy:

S = "why";

break;

}

}

}

if (Form1->LSEngine1->UnifyPStrParm(2, S)) {

returnlstrue;

} else {

returnlsfalse;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::LoadBaseClick(TObject *Sender)

{

//Загрузитьбазузнаний

AnsiString S;

TTerm t;

if(OpenDialog1->Execute())

{

S="reconsult('"+OpenDialog1->FileName.SubString(OpenDialog1->FileName.LastDelimiter("\\")+1,OpenDialog1->FileName.Length())+"')";

try {

LSEngine1->ExecPStr(t, S);

} catch(...) {

}

Caption = titleForm + OpenDialog1->FileName;

BaseOfKnowledges->Items->LoadFromFile(OpenDialog1->FileName);

S="'назначение экспертной системы'(G)";

LSEngine1->ExecPStr(t, S);

isLoadBase = true;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::AskBaseClick(TObject *Sender)

{

//опроситьбазузнаний

if(!isLoadBase) {ShowMessage("Загрузитебазузнаний"); return;}

AnsiString S="'решить'";

TTerm t;

if(LSEngine1->ExecPStr(t, S))

{

Solution->Clear();

} else {ShowMessage("Ошибка: "+S);}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SolutionStepClick(TObject *Sender)

{

//ходрешений

if(!isLoadBase) {ShowMessage("Загрузитебазузнаний"); return;}

TTerm t;

LSEngine1->ExecPStr(t, "gethow");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction&Action)

{

BaseOfKnowledges->Items->SaveToFile("DB.pro");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

LSEngine1->InitLS("XS7");

LSEngine1->AddPred("opros", 2, P_Opros);

LSEngine1->AddPred("resultwrite", 1, P_Resultwrite);

LSEngine1->AddPred("showrule", 2, P_Showrule);

LSEngine1->AddPred("showfact", 2, P_Showfacts);

LSEngine1->AddPred("showrule1", 2, P_Showrule1);

LSEngine1->LoadXPL("XS7");

}

//---------------------------------------------------------------------------

ФайлUnit2.cpp

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)

{

Form1->LastModalRes=mresYes;

Form2->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm2::Button2Click(TObject *Sender)

{

Form1->LastModalRes=mresNo;

Form2->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm2::Button3Click(TObject *Sender)

{

Form1->LastModalRes=mresWhy;

}

//---------------------------------------------------------------------------

Размещено на www.allbest.ru


Подобные документы

  • Структура экспертных систем, их классификация и характеристики. Выбор среды разработки программирования. Этапы создания экспертных систем. Алгоритм формирования базы знаний с прямой цепочкой рассуждений. Особенности интерфейса модулей "Expert" и "Klient".

    курсовая работа [1,1 M], добавлен 18.08.2009

  • Этапы разработки экспертных систем. Требования к организации-разработчику. Правильный выбор подходящей проблемы, работа с экспертом. Разработка прототипной системы. Развитие прототипа до промышленной экспертной системы. Особенности оценки системы.

    презентация [169,1 K], добавлен 14.08.2013

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

    курсовая работа [264,8 K], добавлен 22.12.2008

  • Разработка программы "База данных спортивного инвентаря". Описание алгоритма работы модулей и блоков. Структурная схема представления проекта. Процесс поиска нужной информации. Автоматическая сортировка данных. Добавление и редактирование записей.

    курсовая работа [3,0 M], добавлен 15.08.2013

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

    реферат [32,2 K], добавлен 04.10.2009

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

    курсовая работа [78,0 K], добавлен 03.06.2009

  • Понятие экспертных систем, их классификация, виды и структура. Построение продукционной модели экспертной системы прогнозирования результатов сессии на основании анализа успеваемости, ее реализация в языке логического программирования Visual Prolog.

    дипломная работа [1,6 M], добавлен 25.01.2011

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

    курсовая работа [5,2 M], добавлен 24.11.2014

  • Понятия, классификация и структура экспертных систем. Базы знаний и модели представления знаний. Механизмы логического вывода. Инструментальные средства проектирования и разработки экспертных систем. Предметная область ЭС "Выбор мобильного телефона".

    курсовая работа [2,2 M], добавлен 05.11.2014

  • Механизм автоматического рассуждения. Основные требования к экспертным системам. Наделение системы способностями эксперта. Типовая структура и классификация интерфейсов пользователей экспертных систем. Основные термины в области разработки систем.

    презентация [252,6 K], добавлен 14.08.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.