- •1. Идентификация проблемы 6
- •1. Идентификация проблемы
- •1.1 Описание предметной области
- •2 Концептуальная модель предметной области
- •2.1. Объектная модель
- •2.2. Функциональная модель
- •2.3 Поведенческая модель
- •3 Формализация базы знаний
- •4 Реализация системы
- •5 Тестирование системы
- •Список использованных источников
4 Реализация системы
В качестве внутреннего языка для данной работы был выбран Visual C#, который используется в среде программирования Visual Studio 2015. Этот язык использует принципы объектно-ориентированного и визуального программирования.
В данном проекте база знаний сохраняется в один файл с расширением *.XML.
Алгоритм формирования базы знаний
В данном курсовом проекте число условий в одном правиле не ограничено. Пусть есть N правил подобной структуры. Число правил задает эксперт при создании базы знаний[5].
Чтобы в алгоритме вывода можно было оперировать фактами, значениями фактов, учитывать их связь в определенном правиле и делать выводы, соответствующие данному набору фактов, база знаний экспертной системы представляется в виде определенных структур: массив вопросов <Questions>, массив переменных <Objects>, список целей <Targets> и набор правил <Rules>.
Пусть i-тое правило имеет следующую структуру:
<Rule id="i">
<Condition name="Уровень доходов населения" value1="снижается" />
<Condition name="Производительность труда" value2="снижается" />
<Consequence name="Уровень инфляции" value3="умеренный" />
<Reason text="пояснение первое" />
</Rule>
Здесь Rule id – номер правила, Condition name - это факты i-того правила, value1,2 – значение факта.
Consequence name - название вывода i-того правила, value3 – содержание или значение вывода.
Reason text - пояснение объясняющее правило.
Листинг базы знаний можно посмотреть в приложении А.
Алгоритм формирования вывода
В данном курсовом проекте для формирования вывода был применен алгоритм с прямой цепочкой рассуждений с возможностью выбора поиска в ширину и в глубину.
Машина логического вывода (интерпретатор правил) выполняет две функции: во-первых, просмотр правил из базы знаний, во-вторых, применения правил.
Этот механизм управляет процессом консультации, сохраняя для пользователя информацию о полученных заключениях, и запрашивает у него информацию.
Механизм вывода представляет собой программу и включает в себя два компонента: первый реализует собственно вывод, другой управляет этим процессом.
Действие компонента вывода основано на применении правила, называемого modus ponens: «если известно, что истинно утверждение А и существует правило вида «ЕСЛИ А, ТО В», тогда утверждение В также истинно».
Правила срабатывают, когда находятся истинные факты, удовлетворяющие их левой части: если истинна посылка, то должно быть истинно и заключение.
Управляющий компонент определяет порядок применения правил и выполняет четыре функции:
сопоставление - образец правила сопоставляется с имеющимися фактами;
выбор - если в конкретной ситуации может быть применено сразу несколько правил, то из них выбирается одно;
срабатывание - если образец правила при сопоставлении совпал с какими-либо фактами из рабочей памяти, то правило срабатывает;
действие - рабочая память подвергается изменению путём добавления в неё заключения сработавшего правила
Интерпретатор продукций работает циклически. В каждом цикле он просматривает все правила, чтобы выявить те посылки, которые совпадают с известными и истинными на данный момент фактами. После выбора правило срабатывает, его заключение заносится в рабочую память, а затем цикл повторяется сначала.
В одном цикле может сработать только одно правило. Если несколько правил успешно сопоставлены с фактами, то такая ситуация называется конфликтной. Интерпретатор выполняет разрешение конфликтов путём выбора по определённому критерию единственного правила, в зависимости от выбора стратегии разрешения конфликтов. Цикл работы интерпретатора схематически представлен на рисунке 1.
При «поиске в глубину» происходит активация последнего правила, добавленного в конфликтное множество. Именно эта стратегия наиболее часто применяется в экспертных системах продукционного типа, т.к. она соответствует процессу рассуждений эксперта при решениии той или иной задачи. Поведение системы для пользователя выглядит довольно логичным: он видит, что система стремится свести каждую цель к подцели[6].
Если активизировать на каждом шаге работы машины вывода первое правило конфликтного множества, то такая стратегия будет соответствовать «поиску в ширину». В этом случае все альтернативные цепочки рассуждений, имеющиеся на графе решений, продолжаются паралельно, и ни одна не обгоняет другую.
Листинг кода программы с коментариями представлен в приложении В.
На рисунке 3 показан цикл работы интерпретатора машины логического вывода.
Рисунок 3 – Цикл работы интерпретатора машины логического вывода