На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

2
Ожидается:
16 Июня 2024

Построение экспертных систем на базе иерархического нечеткого вывода

Статья опубликована в выпуске журнала № 4 за 2007 год.
Аннотация:
Abstract:
Автор: Ястребова Н.Н. () -
Количество просмотров: 17360
Версия для печати
Выпуск в формате PDF (2.00Мб)

Размер шрифта:       Шрифт:

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

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

На рисунке 1 приведен пример иерархической нечеткой базы знаний, моделирующей зависимость y=f(x1,x2,x3,x4,x5,x6) с использованием трех баз знаний. Эти базы знаний описывают зависимости: y1=f1(x1,x2), y2=f2(x4,x5,x6) и y=f3(y1,x3,y2).

Пусть для лингвистической оценки переменных используется по пять термов. Тогда максимальное количество правил для задания зависимости y=f(x1,x2,x3,x4,x5,x6) с помощью одной базы знаний будет равным 56=15625. Для иерархической базы знаний (рис.1), описывающую ту же зависимость, максимальное количество правил будет равным 52+53+53=275. Причем это «короткие» правила с двумя-тремя входными переменными.

Существует два способа создания иерархических систем нечеткого вывода.

1. Выполнение нечеткого вывода для промежуточных переменных с последующей передачей четких значений этих переменных в нечеткие системы следующего уровня иерархии. Недостаток этого способа состоит в том, что над промежуточными переменными (y1, y2 на рис. 1) последовательно выполняются операции дефаззификации и фаззификации. Следовательно, для промежуточ­ных переменных надо задавать функции принадлежности. Кроме того, необходимо обеспечить эквивалентность нечетких множеств до и после операций дефаззификации и фаззификации.

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

Очевидно, что второй метод дает преимущества:избавляет пользователя от необходимости задания функций принадлежности для промежуточных переменных (как известно, эта процедура

- является одним из самых узких мест теории нечетких множеств);

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

Рассмотрим алгоритм выполнения иерархического нечеткого вывода (рис.2).

1. Вектор входных переменных, используемых на всех шагах нечеткого вывода (x=).

2. Преобразование входных переменных в нечеткую форму – процедура фаззификации.

3. Цикл i:=1 to N do (где N – число шагов нечеткого вывода).

 

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

3.2. if i=N then goto 4 (дефаззификация результата) else полученное нечеткое множество yi передать на вход процедуры нечеткого логического вывода следующего уровня (i:=i+1).

4. Дефаззификация.

Рассмотрим математическую модель, лежащую в основе нечеткого вывода.

В основу разработанного программного продукта легла схема нечеткого логического вывода по Сугено. Нечеткий вывод по алгоритму Сугено выполняется по нечеткой базе знаний:(1)

 

где – некоторые числа.

База знаний Сугено (1) аналогична базе знаний Мамдани:

(2)

где , за исключением заключений правил dj, которые задаются не нечеткими термами, а линейной функцией от входов:

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

,

где – операция из s-нормы (t-нормы), то есть из множества реализаций логической операций ИЛИ (И). В нечетком логическом выводе Сугено наиболее часто используются следующие реализации треугольных норм: вероятностное ИЛИ как s-норма и произведение как t-норма.

В результате получаем такое нечеткое множество , соответствующее входному вектору :

.

В отличие от результата вывода по Мамдани (2), приведенное выше нечеткое множество является обычным нечетким множеством первого порядка, заданным на множестве четких чисел. Это позволяет избежать при его использовании в системах иерархического нечеткого вывода накопления нечеткости. Результирующее значение выхода y определяется как суперпозиция линейных зависимостей, выполняемых в данной точке n-мерного факторного пространства. Для этого дефаззифицируют нечеткое множество , находя взвешенное среднее или взвешенную сумму .

 

Разработанное приложение было разделено на пакеты в четком соответствии с выполняемыми ими задачами. Для декомпозиции была использована парадигма MVC (module-view-control). Ее смысл состоит в том, чтобы отделять данные от их представления и от управляющей части.

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

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

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

UML-диаграмма приложения представлена на рисунке 3.

 

Рис. 3. Взаимосвязь модулей программы

Для нормального функционирования экспертная система должна:

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

- уметь построить формальную модель этой задачи, чтобы применить формальные методы решения;

- составить программу решения задачи;

- запустить программу и получить результат;

- интерпретировать результат, то есть представить его в форме, доступной пользователю;

- объяснить (при необходимости), каким образом был получен этот результат.

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

Организация проекта на базе объектно-ориентированного программирования позволила легко перейти от одношагового (стандартного) нечеткого вывода к многошаговому (иерархическому) путем изменения поведения соответствующих классов в зависимости от шага вывода. Все задачи экспертной системы (class FuzzyTask) в программе разбиты на слои (class FuzzyLayer). Каждый шаг нечеткого вывода представлен экземпляром класса FuzzyTask, задающего набор входных переменных и правил нечеткого вывода. Также в зависимости от шага итерации необходимо знать, нужны ли процедуры фаззификации и дефаззификации переменных на данном шаге. Это проблема представления данных, которая была решена следующим образом: вместо бинарных файлов для хранения информации о нечетком выводе используется формат XML, позволяющий хранить иерархическую систему в виде древовидной структуры.

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

Задачей (Task) называется атомарная расчетная единица нечеткого логического вывода, представляющая собой схему нечеткого логического вывода по Сугено.

Переменная – входная или выходная лингвистическая переменная нечеткого вывода.

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

/** Calculates fuzzy output for one

input vector. */

public Double[] calculateSingle­

Output(Double[] input)

throws FuzzyException {

int startFrom=0;

// run throw all layers

for(FuzzyLayer layer : m_layers ) {

for(Integer num : layer.tasks) {

// set inputs from input vector

startFrom += m_tasks[num]

assignInputs(input, startFrom);

m_tasks[num].evaluate();

}

}

m_tasks[m_taskCount-1].defuzzyfication();

return m_tasks[m_task-

Count-1].getOutput();

}

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

Создание новых иерархических систем нечеткого вывода в интерактивном режиме и редактирование уже существующих систем, которые могут быть загружены из XML-файлов – основная задача графического модуля JFuzzyTool.

Этот пакет реализует следующие возможности: сериализацию многошагового нечеткого вывода; графическое представление иерархии объектов; редактирование всех компонентов системы, в том числе функций принадлежности переменных, правил логического вывода.

JFuzzyDB, как уже было отмечено выше, – модуль для работы с исходными данными, используемый для расчетов в экспертной системе эколого-экономического анализа предприятия, построенной на многошаговом нечетком выводе (см.: Иванова Н.Н. Применение иерархического нечеткого вывода в экспертной системе эколого-экономического анализа. // Сб. стат. IV Междунар. науч.-технич. конф.: Пенза, 2006; Иванова Н.Н., Ярушкина Н.Г. Исследование многошагового нечеткого вывода на примере построения экспертной системы оценки экологической безопасности производственной деятельности. // Тр. 10 национ. конф. с междунар. участ. КИИ-2006. – М.: Физматлит, 2006. Т. 2). Это база данных, содержащая необходимые сведения для работы экспертной системы. Она состоит из 14 таблиц, которые можно подразделить на 3 группы: справочники, таблицы исходных данных и расчетные таблицы, содержащие значения полученных аналитических показателей.

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

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


Постоянный адрес статьи:
http://swsys.ru/index.php?page=article&id=48
Версия для печати
Выпуск в формате PDF (2.00Мб)
Статья опубликована в выпуске журнала № 4 за 2007 год.

Назад, к списку статей