Journal influence
Bookmark
Next issue
Abstract:
Аннотация:
Author: () - | |
Page views: 18957 |
Print version Full issue in PDF (2.00Mb) |
При проектировании экспертных систем программист неизбежно сталкивается со сложными задачами представления данных и моделирования человеческих рассуждений, решение которых связано с областью искусственного интеллекта. Для моделирования сложных рассуждений о явлениях реального мира, когда описание системы представляет собой большую совокупность переменных различной природы, возникает необходимость использования иерархических баз знаний. Это связано с тем, что эксперту сложно уловить взаимосвязи объектов, если их количество превышает 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 группы: справочники, таблицы исходных данных и расчетные таблицы, содержащие значения полученных аналитических показателей. В результате работы формируется отчет, представляющий собой экспертное заключение, которое может быть использовано и как самостоятельное, и как вспомогательный инструмент в работе эксперта. Разработанный программный продукт позволяет моделировать рассуждения человека-эксперта о предметной области с большой степенью приближенности рассуждений к формальной логике. Это делает его пригодным для построения экспертных систем. Удобный и наглядный интерфейс дает возможность работать с программой широкому кругу пользователей. |
Permanent link: http://swsys.ru/index.php?page=article&id=48&lang=en |
Print version Full issue in PDF (2.00Mb) |
The article was published in issue no. № 4, 2007 |
Back to the list of articles