Министерство
образования и науки Республики Казахстан
Карагандинский
Государственный Технический Университет
Кафедра ____САПР______
ПОЯСНИТЕЛЬНАЯ
ЗАПИСКА
к
курсовой работе
По
дисциплине: «Интеллектуальные системы»
Тема: «Разработка
оболочки экспертной системы»
Руководитель
(подпись) (дата)
Студент
(подпись) (дата)
2009
Содержание
Введение
1 Постановка задачи
2 Теоретическая часть
2.1 Основные понятия
2.2 Структура экспертной системы
2.3 Классификация экспертных систем
2.4 Характеристики экспертных систем
2.5 Этапы создания экспертных систем
3 Практическая часть
3.1 Выбор среды разработки
программирования
3.2 Алгоритм работы экспертной
системы
3.2.1 Алгоритм формирования базы
знаний
3.2.2 Алгоритм вывода
3.3 Структура разработанной
экспертной системы
3.3.1 Проект «Expert»
3.3.2 Проект «Klient»
3.4 Методическое обеспечение
3.4.1 Руководство эксперта
3.4.2 Руководство пользователя
Заключение
Список использованной литературы
Введение
Искусственный интеллект
(ИИ) - совокупность научных дисциплин, изучающих методы решения задач
интеллектуального (творческого) характера с использованием ЭВМ.
Искусственный интеллект
как научное направление, связанное с попытками формализовать мышление человека,
имеет длительную предысторию. Первые шаги кибернетики были направлены на изучение
и осмысление в новых понятиях процессов, протекающих в сложных, прежде всего
живых, системах, включая и мыслящие. Позднее это направление работ оформилось в
самостоятельную область, разрабатывающую проблему искусственного интеллекта.
Анализ употребления
термина “интеллектуальные системы” (ИС) показывает, что под ним, в общем
случае, понимается предельный по сложности класс систем, ориентированных на
приобретение, обработку и использование некоторой дополнительной информации,
понимаемой как “знание”. Ясно, что такие системы предназначены для работы в
условиях неопределенности (невозможности точного математического описания)
информации о свойствах и характеристиках системно-сложных объектов и среды их
функционирования.
В общем случае знание —
проверенный практикой результат познания действительности, верное ее отражение
в мышлении человека, обладание опытом и пониманием, которые являются
правильными и в субъективном, и в объективном отношении, на основании которых
можно построить суждения и выводы, кажущиеся достаточно надежными для того,
чтобы рассматриваться как знание. Поэтому в контексте информационных технологий
термин знания - это информация, присутствующая при реализации интеллектуальных
функций. Обычно это отклонения, тенденции, шаблоны и зависимости, обнаруженные
в информации. Другими словами, интеллектуальные системы являются в то же время
системами обработки знаний.
В задачи курсового
проекта входит:
получение знаний в
области интеллектуальных систем;
выработка способности
системного рассмотрения проблем и задач;
развитие навыков
программирования, полученных на предыдущих курсах;
разработать экспертную
систему, согласно поставленной задаче.
Целью выполнения данного
курсового проекта является приобретение практических навыков в разработке
экспертных систем.
1.
Постановка задачи
По заданию к курсовому
проекту необходимо разработать оболочку экспертной системы по заданному
алгоритму работы. Для разработки использовать любую визуальную среду
программирования.
В интерфейсе программы
для эксперта предусмотреть следующие возможности:
- добавление новых
правил;
- удаление правил;
- редактирование
существующих правил;
- сохранение базы знаний;
- открытие ранее
сохраненных баз знаний;
- просмотр руководства по
использованию данной экспертной системы.
В интерфейсе программы
для пользователя предусмотреть следующие возможности:
- открытие существующей
базы знаний;
- выбор одного из
предложенных ответов на вопрос;
- вывод рекомендаций;
- вывод пояснений к
рекомендациям.
2. Теоретическая часть
2.1 Основные
понятия
Экспертные системы (ЭС) -
особые компьютерные программы, моделирующие действия эксперта-человека при
решении задач в какой-либо предметной области на основе накопленных знаний,
составляющих базу знаний (БЗ).
В основе функционирования
ЭС лежит использование знаний, а манипулирование ими осуществляется на базе
эвристических правил, сформулированных экспертами. ЭС выдают советы, проводят
анализ, выполняют классификацию, дают консультации и ставят диагноз. Они
ориентированы на решение задач, обычно требующих проведения экспертизы
человеком-специалистом. В отличие от машинных программ, использующий
процедурный анализ, ЭС решают задачи в узкой предметной области (конкретной
области экспертизы) на основе дедуктивных рассуждений. Главное достоинство экспертных
систем - возможность накапливать знания, сохранять их длительное время,
обновлять и тем самым обеспечивать относительную независимость конкретной
организации от наличия в ней квалифицированных специалистов.
Экспертная система
отличается от прочих прикладных программ наличием следующих признаков:
1. Моделирует не столько
физическую (или иную) природу определенной проблемной области, сколько механизм
мышления человека применительно к решению задач в этой проблемной области. Это
существенно отличает экспертные системы от систем математического моделирования
или компьютерной анимации. Нельзя, конечно, сказать, что программа полностью
воспроизводит психологическую модель специалиста в этой предметной области
(эксперта), но важно, что основное внимание все-таки уделяется воспроизведению
компьютерными средствами методики решения проблем, которая применяется
экспертом, т.е. выполнению некоторой части задач так же (или даже лучше), как
это делает эксперт.
2. Система, помимо
выполнения вычислительных операций, формирует определенные соображения и
выводы, основываясь на тех знаниях, которыми она располагает. Знания в системе
представлены, как правило, на некотором специальном языке и хранятся отдельно
от собственно программного кода, который и формирует выводы и соображения. Этот
компонент программы принято называть базой знаний.
3. При решении задач
основными являются эвристические и приближенные методы, которые, в отличие от
алгоритмических, не всегда гарантируют успех. Эвристика, по существу, является
правилом влияния, которое в машинном виде представляет некоторое знание,
приобретенное человеком по мере накопления практического опыта решения
аналогичных проблем. Такие методы являются приблизительными в том смысле, что,
во-первых, они не требуют исчерпывающей исходной информации, и, во-вторых,
существует определенная степень уверенности (или неуверенности) в том, что
предлагаемое решение является верным.
Экспертные системы имеют
дело с предметами реального мира, операции с которыми обычно требуют наличия
значительного опыта, накопленного человеком. Множество программ из области
искусственного интеллекта являются сугубо исследовательскими, и основное
внимание в них уделяется абстрактным математическим проблемам или упрощенным
вариантам реальных проблем (иногда их называют "игрушечными"
проблемами), а целью выполнения такой программы является "повышение уровня
интуиции" или отработка методики. Экспертные системы имеют ярко выраженную
практическую направленность в научной или коммерческой области.
Одной из основных характеристик
экспертной системы является ее производительность, т.е. скорость получения
результата и его достоверность (надежность). Исследовательские программы
искусственного интеллекта могут и не быть очень быстрыми, можно примириться и с
существованием в них отказов в отдельных ситуациях, поскольку, в конце концов,
— это инструмент исследования, а не программный продукт. А вот экспертная
система должна за приемлемое время найти решение, которое было бы не хуже, чем
то, которое может предложить специалист в этой предметной области.
Экспертная система должна
обладать способностью объяснить, почему предложено именно такое решение, и
доказать его обоснованность.
2.2
Структура экспертной системы
На рисунке 2.1 изображена
обобщенная структура экспертной системы.
Рисунок 2.1 – Типовая
структура экспертной системы
Следует учесть, что
реальные ЭС могут иметь более сложную структуру, однако блоки, изображенные на
рисунке, непременно присутствуют в любой действительно экспертной системе,
поскольку представляют собой стандарт структуры современной ЭС.
Экспертные системы имеют
две категории пользователей и два отдельных "входа", соответствующих
различным целям взаимодействия пользователей с ЭС:
- обычный пользователь,
которому требуется консультация ЭС - диалоговый сеанс работы с ней, в процессе
которой она решает некоторую экспертную задачу.
- экспертная группа
инженерии знаний, состоящая из экспертов в предметной области и инженеров
знаний. В функции этой группы входит заполнение базы знаний, осуществляемое с
помощью специализированной диалоговой компоненты ЭС - подсистемы приобретения
знаний, которая позволяет частично автоматизировать этот процесс.
База знаний предназначена
для хранения экспертных знаний о предметной области, используемых при решении
задач экспертной системой.
База данных предназначена
для временного хранения фактов или гипотез, являющихся промежуточными решениями
или результатом общения системы с внешней средой, в качестве которой обычно
выступает человек, ведущий диалог с экспертной системой.
Механизм логического
вывода – механизм рассуждений, оперирующий знаниями и данными с целью получения
новых данных из знаний и других данных, имеющихся в базе данных. Для этого
обычно используется программно реализованный механизм дедуктивного логического
вывода (какая-либо его разновидность).
Интерфейс пользователя
служит для ведения диалога с пользователем, в ходе которого ЭС запрашивает у
пользователя необходимые факты для процесса рассуждения, а также, дающая
возможность пользователю в какой-то степени контролировать и корректировать ход
рассуждений экспертной системы.
Подсистема объяснений
необходима для того, чтобы дать возможность пользователю контролировать ход
рассуждений и, может быть, учиться у экспертной системы.
Подсистема приобретения
знаний служит для корректировки и пополнения базы знаний. В простейшем случае
это – интеллектуальный редактор базы знаний, в более сложных экспертных
системах – средства для извлечения знаний из баз данных, неструктурированного
текста, графической информации и т.д.
2.3
Классификация экспертных систем
Для классификации ЭС
используют следующие признаки:
способ формирования
решения;
способ учета временного
признака;
вид используемых данных;
число используемых
источников решения знаний.
По способу формирования
решения ЭС можно разделить на анализирующие и синтезирующие. В системах первого
типа осуществляется выбор решения из множества известных решений на основе
анализа знаний, в системах второго типа решение синтезируется из отдельных
фрагментов знаний.
В зависимости от способа
учета временного признака ЭС делят на статические и динамические. Статические
ЭС предназначены для решения задач с неизменяемыми в процессе решения данными и
знаниями, а динамические ЭС допускают такие изменения.
По видам используемых
данных и знаний различают ЭС с детерминированными и неопределенными знаниями.
Под неопределенностью знаний и данных понимаются их неполнота, ненадежность,
нечеткость.
ЭС могут создаваться с
использованием одного или нескольких источников знаний.
Экспертные системы
делятся на различные виды в зависимости от решаемых задач. Задачи, которые
решают экспертные системы:
Интерпретация – описание
ситуации по информации, поступающей от датчиков и других источников.
Наблюдение – сравнение
результатов интерпретации с ожидаемыми результатами.
Мониторинг – наблюдение в
определенные промежутки времени.
Прогноз – это определение
вероятных последствий заданных ситуацией, системы прогнозирования основываются
на имитационном моделировании, которое отражает связи в реальный мир.
Диагностика – выявление
причин неправильного функционирования системы по результатам наблюдения.
Ремонт – выполнение
последовательности предписанных исправлений.
Планирование – построение
последовательности действий для достижения желаемого результата.
Проектирование –
построение конфигурации объектов с учетом ограничений.
Отладка – составление
рецептов исправления неправильного функционирования системы, настройка
отладочной системы.
Управление – адаптивное
руководство поведения системы в целом (наблюдает, чтобы отследить на протяжении
времени, классифицирует, диагностирует это отклонение, находит рецепт его
устранения и осуществляет его применение).
Обучение –
диагностирование, отладка, ремонт поведения обучаемого.
2.4
Характеристики экспертных систем
Экспертные системы можно
характеризовать следующими особенностями:
• область применения,
• класс решаемых задач,
• метод (методы)
представления знаний,
• метод (методы) решения
задач (поиска решений),
• структуризация данных
(фактов) предметной области,
•
структуризация/неструктуризация знаний о решении задач,
• четкость/нечеткость
данных,
• четкость/нечеткость
знаний,
•
монотонность/немонотонность процесса решения задач,
• метод (методы)
приобретения (пополнения) знаний,
• вид пользовательского
интерфейса,
• динамическая или
статическая предметная область,
• интеграция с другими
программными системами (СУБД, системами моделирования, графическими пакетами и
т.д.).
2.5 Этапы
создания экспертных систем
1 этап – Идентификация.
1. Определение участников
и их ролей в процессе создания и эксплуатации экспертной системы.
В процессе создания
экспертной системы могут участвовать следующие специалисты: инженеры по
знаниям, эксперты, программисты, руководитель проекта, заказчики (конечные
пользователи). При реализации сравнительно простых экспертных систем
программистов может не быть. Роль инженера по знаниям – выуживание
профессиональных знаний из экспертов и проектирование базы знаний экспертной
системы и ее архитектуры. Программист необходим при разработке
специализированного для данной экспертной системы программного обеспечения,
когда подходящего стандартного (например, оболочки для создания экспертных
систем) не существует или его возможностей не достаточно и требуются
дополнительные модули.
В процессе эксплуатации
могут принимать участие конечные пользователи, эксперты, администратор.
2. Идентификация проблемы
На этом этапе
разработчики должны ответить на ряд вопросов, определяющих особенности решаемых
экспертами, а, следовательно, будущей экспертной системой, задач. Эти
особенности определят и особенности архитектуры экспертной системы, формируемой
на последующих этапах. К этим вопросам относятся следующие:
− какой класс задач
должна решать ЭС;
− как эти задачи могут
быть охарактеризованы или определены;
− какие можно
выделить подзадачи;
− какие исходные
данные должны использоваться для решения;
− какие понятия и
взаимосвязи между ними используются при решении задачи экспертами;
− какой вид имеет
решение и какие концепции используются в нем;
− какие аспекты
опыта эксперта существенны для решения задачи;
− какова природа и
объем знаний, необходимых для решения задачи;
− какие препятствия
встречаются при решении задач;
− как эти помехи
могут влиять на решение задачи.
Определение необходимых
ресурсов – временных, людских, материальных.
3. Определение целей
В качестве целей,
преследуемых при создании экспертных систем, мо-
гут быть: повышение
скорости принятия решения, повышение качества решений, тиражирование опыта экспертов
и т.п.
2 этап –
Концептуализация.
На этом этапе
разработчики должны ответить на следующие вопросы:
− какие типы данных
нужно использовать;
− что из данных
задано, а что должно быть выведено;
− имеют ли
подзадачи наименования;
− имеют ли
стратегии наименования;
− имеются ли ясные
частичные гипотезы, которые широко используются.
3 этап – Формализация.
4 этап – Реализация
прототипной версии.
5 этап – Тестирование.
6 этап – Перепроектирование
прототипной версии.
3.
Практическая часть
3.1 Выбор
среды разработки программирования
В качестве внутреннего
языка для данной работы был выбран ObjectPascal, который используется в среде
программирования Delphi. Этот язык использует принципы
объектно-ориентированного и визуального программирования.
Язык ObjectPascal является одним из высокоразвитых языков
объектно-ориентированного программирования. И среди других, например, таких как
Visual Basic или Visual C++, отличается
простотой программного кода, достаточным количеством литературы по этому языку.
Объектно-ориентированное
программирование (ООП) — это методика разработки программ, в основе которой
лежит понятие объект. Объект — это некоторая структура, соответствующая объекту
реального мира, его поведению. Задача, решаемая с использованием методики ООП,
описывается в терминах объектов и операций над ними, а программа при таком
подходе представляет собой набор объектов и связей между ними.
По сравнению с
традиционными способами программирования ООП обладает рядом преимуществ.
Главное из них заключается в том, что эта концепция в наибольшей степени
соответствует внутренней логике функционирования операционной системы (ОС)
Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к
реагированию на события, происходящие в ОС. К другим преимуществам ООП можно
отнести большую надежность кода и возможность повторного использования
отработанных объектов.
Delphi - это комбинация нескольких
важнейших технологий:
Высокопроизводительный
компилятор в машинный код
Объектно-ориентированная
модель компонент
Визуальное (а,
следовательно, и скоростное) построение приложений из программных прототипов
Масштабируемые средства
для построения баз данных
Программирование в Delphi
строится на тесном взаимодействии двух процессов:
• процесса
конструирования визуального проявления программы (т.е. ее Windows-окна),
• процесса написания
кода, придающего элементам этого окна и программе в целом необходимую
функциональность.
Основные преимущества
среды программирования Delphi:
– Простота языка
позволяет быстро его освоить и создавать сложные программы;
– Развитые средства
представления структур данных обеспечивают удобство работы, как с числовой, так
и с символьной и битовой информацией;
–
Объектно-ориентированное программирование (ООП) в визуальной среде.
В процессе построения
приложения разработчик выбирает из палитры компонент готовые компоненты как
художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты
своей работы - после подключения к источнику данных их можно видеть
отображенными на форме, можно перемещаться по данным, представлять их в том или
ином виде. В этом смысле проектирование в Delphi мало чем отличается от
проектирования в интерпретирующей среде, однако после выполнения компиляции мы
получаем код, который исполняется в 10-20 раз быстрее, чем то же самое,
сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь,
в Delphi компиляция производится непосредственно в родной машинный код, в то
время как существуют компиляторы, превращающие программу в так называемый
p-код, который затем интерпретируется виртуальной p-машиной. Это не может не
сказаться на фактическом быстродействии готового приложения.
Основной упор этой модели
в Delphi делается на максимальном реиспользовании кода. Это позволяет
разработчикам строить приложения весьма быстро из заранее подготовленных
объектов, а также дает им возможность создавать свои собственные объекты для
среды Delphi. Никаких ограничений по типам объектов, которые могут создавать
разработчики, не существует.
3.2
Алгоритм работы экспертной системы
3.2.1
Алгоритм формирования базы знаний
В данном курсовом проекте
для формирования базы был применен алгоритм с прямой цепочкой рассуждений
Пусть iое правило имеет следующую структуру
Если Фi1 = ЗФi1
и Ф i2 = ЗФi2
и Фi3 = ЗФi3
то Вi = ЗВ i.
Здесь i – номер правила, Фi1,2,3 - это факты iго правила, ЗФi1,2,3 – значение факта Фi j,
Вi - название вывода iго правила, ЗВi – содержание или значение вывода Вi..
В данном курсовом проекте
число условий в одном правиле не ограничено. Пусть есть N правил подобной структуры. Число
правил задает эксперт при создании базы знаний.
Чтобы в алгоритме вывода
можно было оперировать фактами, значениями фактов, учитывать их связь в
определенном правиле и делать выводы, соответствующие данному набору фактов,
база данных экспертной системы представляется в виде определенных структур:
массив переменных
условия (МПУ), массив переменных вывода (МПВ), списки переменных условия
(СПУ) и вывода (СПВ), очередь переменных вывода (ОПВ).
Вначале формируем
массив переменных условия МПУ и массив переменных вывода МПВ путем
переписывания туда содержимого из соответствующих полей формы. Далее, после
ввода всех правил строим СПВ и СПУ.
В таблицах 2.1,
2.2 приведена структура МПУ, МПВ, СПУ, СПВ.
Таблица 2.1 –
Структура массивов условий и выводов
МПУ(n*3, 3)
МПВ(n,3)
Ф11 ЗФ11
1
Ф12 ЗФ12
2
Ф13 ЗФ13
3
3
????????
????????
Ф31 ЗФ31
0
Ф32 ЗФ32
4
Ф33 ЗФ33
1
……………..
Фn1 ЗФn1 *
Фn2 ЗФn2 *
Фn3 ЗФn3 *
В1 ЗВ1
1
В2 ЗВ2
2
В3 ЗВ3
1
……….
Вn ЗВn *
Таблица 2.1 –
Структура списков условий и выводов
СПУ(ку)
СПВ(кв)
Ф11
Ф12
Ф13
Ф32
……………..
Фn1
Фn2
Фn3
В1
В2
……….
Вn
Вначале на основе
анализа МПВ формируем список переменных вывода СПВ. Анализ заключается в
следующем алгоритме:
1. Первую
переменную вывода В1
помещаем без обработки как СПВ (1) и
устанавливаем текущее количество выводов кв=1 и в третий столбец МПВ
записываем: МПВ(1,3)=1, т.е. по содержимому этого столбца обеспечиваем связь МПВ
и СПВ.
2. От i =2 до N: (для всех МПВ( i, 1) проверяем была ли эта переменная уже записана в состав СПВ):
От р=1 до кв: если МПВ(i, 1) = СПВ (р), то МПВ( i, 3) =р; иначе кв=кв+1; СПВ(кв)= МПВ(
i, 1); МПВ(i, 3)=кв.
Далее аналогично
анализируем МПУ для формирования списка переменных условия СПУ.
1. ку=1; СПУ(1)=МПУ(1);
2. От i =1 до N*М: (для всех МПУ( i, 1):
От р=1 до кв: если МПУ(i, 1) = СПВ (р), то МПУ(i, 3)=0; i= i + 1 и перейти к
п.2. (т.е. проверяем была ли эта переменная уже записана в состав СПВ как
переменная вывода и в этом случае в третий столбец МПУ записываем 0 и эту
переменную в перечень переменных условия не включаем).
От у=1 до ку: если МПУ(i, 1) = СПУ (у), то МПУ(i, 3) =у; иначе ку=ку+1; СПУ(ку)= МПУ(
i, 1); МПУ(у, 3)=ку.
Теперь формируем ТПУ
(таблица переменных условия) и ТПВ (таблица переменных вывода). Структура
таблиц приведена в таблицах 2.3, 2.4.
Для i=1,ку
ТПУ.условие (i)=СПУ(i), j=1
для кк=1, n*3
если МПУ(1,3)=i, то ТПУ.значение (i, j )=МПУ(кк,2); j= j +1.
Для определения
ТПУ.вопрос формируем форму и в ней запрашиваем у эксперта о том, какой вопрос
следует задавать пользователю для выяснения переменной условия ТПУ.условие(i).
Таблица 2.3 – Структура
таблицы переменных условия
ТПУ.условие
ТПУ.значение
ТПУ.вопрос
Ф11
ЗФ11
ЗФ33
Ф12
ЗФ12
Ф13
ЗФ13
ЗФ21
Ф32
ЗФ32
……………..
Фn1
ЗФn1
Фn2
ЗФn2
Фn3
ЗФn3
Аналогично формируем ТПВ.
В поле ТПВ рекомендация помещаем для каждого значения вывода соответствующую
текстовую интерпретацию, для чего запрашиваем ее у эксперта. В качестве
значений вывода можно использовать ссылки на любые объекты, поясняющие текущий
вывод.
Последним действием
формирования БЗ будет процедура сохранения МПУ, МПВ, СПУ, СПВ, ТПУ и ТПВ в виде
файла. В данном проекте база знаний сохраняется в один файл с расширением *.bzn.
Таблица 2.4 – Структура
таблицы переменных вывода
ТПВ.вывод
ТПВ.значение
ТПВ.рекомендация
В1
ЗВ 1
ЗВ 3
В2
ЗВ 2
3.2.2
Алгоритм вывода
Работа процедуры вывода
начинается с загрузки содержимого файлов МПУ, МПВ, СПУ, СПВ, ТПУ и ТПВ в переменные соответствующего
типа. Для СПВ и СПУ добавляем второй столбец, куда будет запоминаться
получаемые в процессе вывода переменные вывода и условия. Для СПВ добавляем еще
один, третий столбец, куда будет записываться номер по порядку полученных
выводов. Кроме этого вводим следующие дополнительные переменные:
нап – номер
анализируемого правила;
нпу – номер переменной
условия в СПУ
ну – номер
рассматриваемого условия в анализируемом правиле;
пу – индекс первого
условия текущего правила;
кпу – число условий в
анализируемом правиле;
кпв - число полученных
выводов;
ЗУ(м) – массив значений
условий из правила ;
ЗУТ – значение проверки
текущего условия в правиле;
ЗУП(м) – массив значений
условий введенных пользователем;
ОПВ() – очередь
переменных вывода, где будут запоминаться переменные вывода «сработанных»
правил для организации цепочки рассуждения. Вывод заключается в поиске в базе
знаний правил, которые зависят от текущей «рабочей» переменной вывода. Если
находим совпадение «рабочей» переменной и переменной вывода, то активизируется
процедура проверки правила. Если правило сработало, т.е. введенные
пользователем ответы и хранящиеся в БЗ значения совпали, полученная переменная
вывода запоминается в очереди переменных вывода для того, чтобы стать следующей
«рабочей» переменной вывода. После того, как поиск правил с текущей «рабочей»
переменной вывода завершается, она удаляется из очереди. Вывод завершается
после того, как очередь переменных вывода опустеет.
Алгоритм вывода можно
представить в следующей последовательности:
1. В ОПВ() помещается начальная
переменная вывода и количество переменных вывода в очереди устанавливаем как
кпв=1.
2. Пока не пуста ОПВ()
выполняем п. 3,4.
3. От п=1 до M*N /организуем просмотр всех правил на
совпадение с «рабочей» переменной вывода/
{если МПУ(п,1) = ОПВ(1)
то нап=округление до
большего целого (п/м); ну=1;пу= (нап-1)*м; /определяем номер правила, в котором
присутствует«рабочая»
переменная вывода/
кпу=0
от у=1 до м /проверяем текущее правило/
пока МПУ(пу+у,1)<> «»; ЗУ(у)= МПУ(пу+у,2);
кпу=кпу+1;
нпу=МПУ(пу+у,3) /считываем
номер текущей переменной условия из СПУ /
если СПУ (нпу,2) = «», то
вывести пользователю вопрос ТПУ.вопрос (нпу) с вариантами ответов из ТПУ.значение(нпу);
записать в СПУ(нпу,2)
выбранный пользователем ответ;
ЗУП(у) = СПУ(нпу,2);
Проверяем правило:
ЗП= Истина; от у=1 до кпу; если ЗУ(у) = ЗУП(у),
то ЗУТ=Истина; ЗП=ЗП and
ЗУТ;
если ЗП=Истина, то СПВ([МПВ(нап,3),2]
= МПВ(нап,2); СПВ([МПВ(нап,3),3] = кпв; кпв=кпв+1; ОПВ(кпв)= МПВ(нап,1);}
Если достигнут
конец МПУ, удаляем из ОПВ() ОПВ(1) и устанавливаем ОПВ(1) следующую по порядку
в очереди переменную.
Выводим на экран
последнюю выведенную СПВ. Если пользователь запрашивает объяснения полученного
вывода, выводим все сработанные СПУ в обратном порядке.
3.3
Структура разработанной экспертной системы
3.3.1
Проект «Expert»
Проект «Expert» служит для создания базы знаний и
для редактирования уже существующей. Модуль «Unit1» проекта служит
показательной формой при загрузке экспертной системы в режиме приобретения
знаний. В этом режиме эксперт, используя компонент приобретения знаний,
наполняет систему знаниями, которые позволяют ЭС в режиме решения самостоятельно
(без эксперта) решать задачи из проблемной области. Эксперт описывает
проблемную область в виде совокупности данных и правил. В этом модуле эксперт
непосредственно создает саму базу знаний, формирует правила. При этом имеется
возможность редактирования правил, удаления правил, сохранения базы знаний,
загрузки ранее сохраненной базы знаний. Модуль «Unit1» и модуль «Unit 2» необходимы для введения экспертом вопросов к переменным условия и
рекомендаций к переменным вывода соответственно.
Модуль «Unit4»
предназначен для вывода справки об авторе.
В программе используются
процедуры и функции, которые написаны для удобства работы и понимания
программы.
procedure dobav_uslClick(Sender: TObject) - Добавление условия в правило;
procedure
FormCreate(Sender: TObject) – Начальные установки при открытии формы;
procedure udal_uslClick(Sender: TObject) - Удаление условия в правиле;
procedure newClick(Sender: TObject)
- Формирование новой базы зныний;
procedure
Button4Click(Sender: TObject) - Добавление нового правила;
procedure
Button3Click(Sender: TObject) - Перемещение по правилам назад;
procedure
Button2Click(Sender: TObject) - Перемещение по правилам вперед;
procedure
Button6Click(Sender: TObject) - Удаление правила;
procedure SpiskiShow(Sender: TObject)
- Просмотр списков переменных условия и вывода;
procedure tpv1Show(Sender: TObject) - Просмотр таблицы переменных условия;
procedure tpu1Show(Sender: TObject) - Просмотр таблицы переменных вывода;
procedure
pravShow(Sender: TObject) - Переход к просмотру правил;
procedure
pvEnter(Sender: TObject) - Редактирование переменных вывода;
procedure
zn_pvEnter(Sender: TObject) - Редактирование значений переменных вывода;
procedure
saveClick(Sender: TObject) - Сохранение базы знаний;
procedure
SaveToFile(Name:string) - Сохранения базы знаний в файл;
procedure
exit1Click(Sender: TObject) - Выход из программы;
procedure
openClick(Sender: TObject) - Открытие базы знаний;
procedure
sg1GetEditText(Sender: TObject; ACol, ARow: Integer;
var Value: String)
- Проверка на наличие изменений в правиле;
procedure
sg1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String)
- Проверка на наличие изменений в правиле;
procedure
FormCloseQuery(Sender: TObject; var CanClose: Boolean) - Закрытие формы;
procedure
N13Click(Sender: TObject) - Вывод информации об авторе;
procedure
N14Click(Sender: TObject) - Вывод справки;
procedure sg1KeyPress(Sender: TObject; var Key: Char) - Проверка на наличие изменений в
правиле.
Ниже приведены глобальные
переменные, используемые в программе.
strok: string; // строка для отслеживания введенных изменений
path:string; // строка для имени файла базы знаний
tF: TextFile; // текстовый файл для загрузки базы
знаний
tek_pr:integer;//Номер
текущего правила
Kol_pr:integer;//Кол-во
правил
mp:array of
prav;//Массив правил
tpu: array of uslov; // таблица переменных условия
tpv: array of vyvod; // таблица переменных вывода
pr1,pravilo:prav;
// текущее правило
dob_pr1,save_pr,izm,otkryt,saved,obn_pr,dob_pr:boolean;
SPU:array of spu1; SPV:array of spu1; // списки переменных условия и вывода
nomer_pu,nomer_pv, nomer_zn_pv:integer; // индексы переменных условия и вывода.
3.3.2
Проект «Klient»
Проект «Klient» служит для работы экспертной
системы в режиме консультации. В этом режиме общение с ЭС осуществляет конечный
пользователь, которого интересует результат и (или) способ его получения. В
этом модуле пользователь отвечает на вопросы, предлагаемые ему экспертной
системой. После получения ответов на все вопросы, экспертная система выдает
соответствующий результат и рекомендацию.
При этом есть возможность
посмотреть, почему был получен данный вывод. В программе используются процедуры
и функции, которые написаны для удобства работы и понимания программы.
procedure N2Click(Sender: TObject) - Загрузить существующую базу знаний;
procedure
Button1Click(Sender: TObject) - Начало
работы системы;
procedure
Button2Click(Sender: TObject) - Принятие ответа пользователя;
procedure
FormCreate(Sender: TObject);
procedure
Button3Click(Sender: TObject) - Вывод пояснения к выводу системы;
procedure
N5Click(Sender: TObject) - Начала опроса сначала;
procedure
N3Click(Sender: TObject) - Выход из системы.
Ниже приведены глобальные
переменные, используемые в программе.
path:string; // имя файла для открытия базы
tF: TextFile; // текстовый файл для открытия базы
mp:array of
prav;//массив правил
tpu: array of uslov; // таблица переменных условий
tpv: array of vyvod; // таблица переменных вывода
SPU:array of spu1; // список переменных условий
SPV:array of spv1; // список переменных вывода
nomer_pu,nomer_pv, nomer_zn_pv:integer; //индексы переменных условия и вывода
n_a_p, // номер
анализируемого правила
n_p_u, // номер
переменной условия в СПУ
n_u, //номер рассматриваемого условия в анализируемом правиле;
n_p_v, // номер
переменной вывода в СПВ
p_u, // индекс первого условия текущего правила
kpu, // число условий в анализируемом
правиле;
kpv:integer; // число полученных выводов
z_u:array of string; // массив значений условий из правила
z_p:boolean; //
значение проверки текущего условия в правиле z_u_p:array of string; //массив значений условий введенных пользователем;
Opv:array of string; //
очередь переменных вывода
3.4
Методическое обеспечение
Данная
программа имеет два модуля «Expert» и «Klient», которые используют в работе одну и ту же базу
знаний.
Интерфейс
модуля «Expert»
предназначен для эксперта в определенной области знаний. С помощью данного
модуля эксперт может создавать базы знаний, вносить изменения, добавлять
правила.
Интерфейс
модуля «Klient» предназначен
для конечного пользователя. Пользователь отвечает на вопросы, предлагаемые ему
экспертной системой. После получения ответов на все вопросы, экспертная система
выдает соответствующий результат и рекомендацию, т.е. экспертная система будет
работать в режиме консультации.
3.4.1
Руководство для эксперта
Для запуска программы
необходимо открыть исполняемый файл «Expert.exe». При этом появится окно для
создания новой базы знаний (Рисунок 3.1).
Рисунок 3.1 – Окно для
создания новой базы знаний
Если необходимо
отредактировать уже существующую базу знаний необходимо выбрать команду меню
«Файл - Открыть базу» и выбрать в окне выбора файла (рисунок 3.2) нужную базу -
файл с расширением *.bzn.
При открытии существующей базы можно приступать к редактированию правил
(рисунок 3.3).
Рисунок 3.2 – Открытие
существующей базы знаний
Рисунок 3.3 – Окно для
ввода и редактирования правил
Чтобы добавить новое
правило необходимо нажать кнопку «Добавить правило» или выбрать команду меню
«Правка - Добавить правило». Для удаления правила можно нажать кнопку «Удалить
правило» или выбрать команду меню «Правка - Удалить правило».
Для добавления переменных
условия в правило необходимо нажать кнопку «Добавить условие» или выбрать
команду меню «Правка - Добавить условие». Для удаления переменной условия можно
нажать кнопку «Удалить условие» или выбрать команду меню «Правка - Удалить
условие».
Если какие-то переменные
условия не сохранены, эксперту сразу будет предложено ввести вопрос для данной
переменной условия (рисунок 3.4).
Рисунок 3.4 – Окно для
ввода вопроса к переменной условия
Если переменной вывода
нет в ТПВ, то эксперту будет предложено ввести рекомендацию для определенного
значения переменной вывода (рисунок 3.5).
Рисунок 3.5 – Окно для
ввода рекомендации к переменной вывода
Окно данной программы
представлено из нескольких вкладок: «Правила», «ТПУ», «ТПВ», «Списки» (рисунок
3.1).
Первая вкладка
предназначена непосредственно для ввода и редактирования правил.
Вкладка «ТПУ»
предназначена для просмотра таблицы переменных условия (рисунок 3.6). Если к
какой-то переменной условия еще не было введено вопроса, то в таблице
переменных условия эта переменная не отмечается «галочкой». Чтобы ввести
вопрос, необходимо ввести его в поле «Вопрос к ПУ».
Рисунок 3.6 – Вкладка
«ТПУ»
Вкладка «ТПВ»
предназначена для просмотра таблицы переменных вывода (рисунок 3.7). Если к
какой-то переменной вывода еще не введена рекомендация, то необходимо ввести ее
в поле «Рекомендация».
Рисунок 3.7 – Вкладка
«ТПВ»
Вкладка «Списки»
предназначена для просмотра списков переменных условия и вывода (рисунок 3.8).
Рисунок 3.8 – Вкладка
«Списки»
Если эксперт создаст
правило, которое уже было, то будет выведено соответствующее сообщение об
ошибке. Также сообщения об ошибке выводятся при недозаполнении правил.
Чтобы сохранить базу
необходимо выбрать команду меню «Файл - сохранить» или «Сохранить как…». Для
создания ново базы необходимо выбрать команду меню «Файл - Новая база».
В меню также имеется
вкладка «Справка», где можно посмотреть информацию об авторе (рисунок 3.9) и
руководство эксперта (рисунок 3.10).
Рисунок 3.9 – Информация
об авторе
Рисунок 3.10 –
Руководство эксперта
3.4.2
Руководство пользователя
Для запуска программы
необходимо открыть исполняемый файл «Klient.exe». При этом появится окно,
приведенное на рисунке 3.11. Для начала работы экспертной системы в режиме
консультации необходимо загрузить необходимую вам базу знаний. Для этого нужно
выбрать команду меню «Файл - Загрузить базу».
Рисунок 3.11 – Окно
программы «Клиент»
Для начала работы
необходимо нажать кнопку «Начать работу» (рисунок 3.12).
Рисунок 3.12 – Начало
работы экспертной системы
Пользователю будет
представлен вопрос и несколько вариантов ответа на него. Необходимо выбрать
нужный вариант ответа на вопрос и нажать кнопку «Принять» либо выбрать команду
меню «Действия - Следующий вопрос». Если необходимо начать опрос заново,
необходимо нажать кнопку «Начать работу» либо выбрать команду меню «Действия -
Начать заново».
После ответа на все
представленные вопросы, экспертная система выдает конечный результат в виде
рекомендации (рисунок 3.13).
Рисунок 3.13 –
Рекомендация экспертной системы
Если пользователю
необходимы разъяснения данного результата, необходимо нажать кнопку «Почему».
При этом появятся все сработанные рекомендации и выводы (рисунок 3.14).
Рисунок 3.14 – Пояснение
рекомендаций
Заключение
Разработанная в ходе
выполнения курсового проекта оболочка для экспертной системы является
актуальной на сегодняшний день, так как предоставляет большие возможности в
различных предметных областях. Созданная в данной
оболочке экспертная система может помочь при принятии решений в сложных
ситуациях, например при диагностике заболеваний, проектировании микросхем,
управлении сложными объектами (энергосистемами, атомными электростанциями и т.
п.), идентификации неисправностей в электронных схемах, при решении задач
оптимального размещения финансовых средств и т.д.
В ходе данного работы
были разработаны два независимых модуля (модуль «Эксперт» и модуль «Клиент»),
которые используют одну базу знаний. В интерфейсе программы для эксперта были
предусмотрены следующие возможности:
- добавление новых
правил;
- удаление правил;
- редактирование
существующих правил;
- сохранение базы знаний;
- открытие ранее
сохраненных баз знаний;
- просмотр руководства по
использованию данной экспертной системы.
В интерфейсе программы
для пользователя были предусмотрены следующие возможности:
- открытие существующей
базы знаний;
- выбор одного из
предложенных ответов на вопрос;
- вывод рекомендаций;
- вывод пояснений к
рекомендациям.
Таким образом,
разработанная оболочка экспертной системы выполняет все задачи, поставленные в
начале работы.
Список
используемой литературы
1.
А.Я.
Архангельский. Программирование в Delphi 7.
2.
Гаврилова Т.А.,
Хорошевский В.Ф. Базы знаний интеллектуальных систем – СПб.: Питер, 2001. – 384
с.: ил.
3.
Попов Э.В. Экспертные системы: Решение
неформализованных задач в диалоге с ЭВМ. – М.: Наука. Гл. ред. физ.-мат. лит.,
1987. – 288 с. – (Пробл. искусственного интеллекта).
4.
Элти
Дж., Кумбс М. Экспертные системы:
концепции и примеры / Пер. с англ. и предисл. Б.И.Шитикова. – М.: Финансы и статистика, 1987. – 191 с.: ил.
5.
Хейес-Рот
Ф., Уотерман Д., Ленат Д. Построение экспертных систем. Пер. с англ. – М.: Мир, 1987.-447с.
6.
Зартенова Л.Г.
Методические указания по курсу «Экспертные системы и искусственный интеллект» –
КарГТУ, кафедра САПР.