ISSN 0236-235X (P)
ISSN 2311-2735 (E)
1

16 Марта 2024

Архитектура подсистемы нечеткого вывода для оптимизатора баз знаний


Сорокин С.В. (sergey@tversu.ru) - Тверской государственный университет, Тверь, Россия, Нефедов Н.Ю. (nefnukem@gmail.com) - Международный университет природы, общества и человека «Дубна» (аспирант ), Дубна, Россия, Решетников А.Г. (reshetnikovag@pochta.ru) - Международный университет природы, общества и человека «Дубна» (аспирант), Дубна, Россия, Ульянов С.В. (ulyanovsv46_46@mail.ru) - Государственный университет «Дубна» – Институт системного анализа и управления, Объединенный институт ядерных исследований – лаборатория информационных технологий (профессор), Дубна, Россия, доктор физико-математических наук
Ключевые слова: интеллектуальные системы управления., программная архитектура, нечеткие множества, нечеткий вывод
Keywords: intelligent control systems, software architecture, fuzzy sets, fuzzy conclusion


     

На основе теории лингвистической аппроксимации и нечеткого логического вывода (Л. Заде и др.) были разработаны принципы моделирования и проектирования нечетких систем автоматического управления (САУ) [1].

Создание интеллектуальных систем управления (ИСУ) является сложным процессом и требует наличия специализированного инструментария, который должен включать в себя средства для формирования и анализа БЗ, в том числе позволяющие автоматически формировать их структуру и параметры. При этом система должна поддерживать основные модели нечеткого вывода, иметь удобный пользовательский интерфейс и поддерживать интеграцию с другим программным обеспечением.

В данной статье рассматривается реализация подсистемы нечеткого вывода, входящая в оптимизатор БЗ SCOptimizer [2].

Модели нечеткого вывода

Рассмотрим основные модели нечеткого вывода, которые могут быть реализованы в ИСУ.

Правило нечеткого вывода в модели Мамдани имеет вид

где l – номер правила; x1, …, xn – входной вектор;  – i-e терм-множество k-й входной переменной, kÎ{1, …, n}, iÎ{1, …, mk};  – i-e терм-множество выходной переменной;  – индекс, показывающий, какое из терм-множеств k-й переменной используется в правиле l.

Результат нечеткого вывода в модели Мамдани определяется следующим образом:

,

где  – модальное значение нечеткого множества ; P – используемая t-норма; M – число правил.

В модели Сугено правила имеют вид

где f l – некоторая функция входного вектора.

Результат нечеткого вывода в этой модели определяется по формуле

.

Как правило, при использовании модели Сугено в качестве функций f рассматривают полиномы. Так, в модели Сугено 0-го порядка эта функция имеет вид f(x1, …, xn)=a0, а в модели Сугено 1-го поряка f(x1, …, xn).

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

1.     Вид предпосылки правила не зависит от модели нечеткого вывода и определяется только индексами выбранных для данного правила терм-множеств. Множество всех правил образуется декартовым произведением терм-множеств всех переменных, и число правил .

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

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

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

Требования к системе нечеткого вывода в рамках оптимизатора БЗ

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

Однако в рамках оптимизатора БЗ следует обеспечить и функционирование других алгоритмов, которым необходимо иметь доступ к промежуточным результатам вычислений нечеткого вывода. Такими алгоритмами являются, в частности, алгоритм выбора наиболее значимых правил (LBRW), алгоритм сокращения обучающего сигнала и различные алгоритмы анализа качества БЗ.

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

Система нечеткого вывода в SCOptimizer

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

Класс InferenceTarget объявляет интерфейс объектов, заинтересованных в получении списка активных правил. Правила передаются этому объекту по одному через функцию ActivateRule.

Подпись:  Рис. 1. Фрагмент диаграммы классов SCOptimizerКласс InferenceEngine является базовым классом для систем нечеткого вывода. Он содержит ряд общих для разных моделей нечеткого вывода функций и наборов данных. В нем объявляются и виртуальные функции, переопределяемые в классах-наследниках, представляющих различные конкретные модели нечеткого вывода: Mamdani­InferenceEngine, Sugeno0InferenceEngine и Suge­no1InferenceEngine. Так, например, функция Use­OutputMF() позволяет определить, используются ли данной моделью терм-множества для выходных переменных.

InferenceEngine включает также массивы input и output лингвистических переменных, представленных классом LinguisticVar. Лингвистическая переменная отвечает за нормализацию и денормализацию сигналов, а также за вычисление уровня соответствия входного сигнала распределениям терм-множеств, который сохраняется в массиве fitness[] и в дальнейшем используется для быстрого вычисления уровня активации правил вывода.

Терм-множества представлены классом FMbF, отвечающим за хранение параметров распределений и вычисление уровня принадлежности для заданного входного значения.

Еще одна иерархия классов связана с БЗ. Хранение данных правил и их извлечение по указанному индексу (соответствующему предпосылке правила) обеспечиваются классами, унаследованными от RuleBase. CompleteRuleBase предоставляет полную базу, хранящую все возможные правила. LBRWRuleBase дает возможность использовать частичные базы, хранящие наиболее суще- ственные правила. Подклассы LBRWRuleBase (по­казан один класс LBRWAutoBase) определяют различные версии алгоритмов отбора правил, переопределяя функцию Create().

Подпись:  Рис. 2. Схема работы алгоритма нечеткого выводаТак как формат и объем данных правой части правил существенно различаются для разных моделей нечеткого вывода, непосредственное выделение памяти осуществляется с помощью фабричной функции [3] Allocate­Rules(), объявленной в классе InferenceEngine и определенной в его наследниках.

Работа алгоритма нечеткого вывода показана на рисунке 2. Процесс начинается с вызова функции Infer() класса InferenceEngine, которой передается вектор входных значений, и состоит из трех стадий. Первая стадия включает подготовку модели нечеткого вывода к началу вычислений и обеспечивается вызовом операции Prepare­Infer(), определенной в дочерних классах.

На второй стадии выполняется функция DoInfer. В первую очередь она вычисляет лингвистическое представление входного сигнала, используя функцию CalcFitness входных переменных. Затем вызывается функция ActivateRules(), объявленная в классе RuleBase, которая перечисляет все активные правила. Эта функция может переопределяться в классах-наследниках RuleBase для реализации более эффективных вариантов перебора правил в зависимости от используемых структур хранения.

Подпись:  Рис. 3. Схема работы системы нечеткого вывода c алгоритмом LBRWТак как в качестве цели для перечисления правил передается указатель на саму систему нечеткого вывода, информация об активных правилах передается конкретной модели нечеткого вывода, которая реализует функцию ActivateRule() и накапливает результаты вычислений в своих внутренних переменных. Доступ к правой части правила осуществляется с помощью вызова функции GetRule() БЗ.

На третьей стадии управление возвращается в функцию Infer(), которая вызывает операцию FinalizeInfer(), реализованную в конкретной модели нечеткого вывода, проводит необходимые итоговые вычисления и возвращает результат.

Подпись:  Рис. 4. Динамическая система «движущаяся каретка – перевернутый маятник»При использовании других алгоритмов взаимодействие компонентов происходит иным способом. Например, на рисунке 3 показана работа системы при исполнении алгоритма отбора наиболее значимых правил LBRW.

Алгоритм определен в функции Create() класса LBRWRuleBase или в его наследниках. Во время работы алгоритма просматривается весь набор обучающих данных и для каждой строки вызывается функция DoInfer. Однако целью перечисления правил в данном случае является не потомок InferenceEngine, а база правил LBRWRuleBase. Поэтому информация об активных правилах передается базе правил. В дальнейшем эта информация используется функцией Create() для отбора правил, удовлетворяющих тем или иным критериям.

Применение оптимизатора БЗ для создания ИСУ неустойчивого динамического объекта

Подпись:   Рис. 5. Графики динамики движения маятника и интегральной ошибки управленияВ качестве примера применения оптимизатора БЗ рассмотрим задачу управления неустойчивой динамической системой «движущаяся каретка – перевернутый маятник» (рис. 4).

Динамическое поведение этой системы при воздействии силы управления u описывается системой дифференциальных уравнений второго порядка:

(1)

где z и q – обобщенные координаты; g – ускорение свободного падения 9,8 м/сек.2; mc – масса тележки; m – масса перевернутого маятника (называемого «шест»); l – половина длины маятника; k и a1 – коэффициенты трения в z и q соответственно; a2 – сила упругости тележки; x – внешний стохастический шум.

Без управления маятник невозможно удержать в вертикальном положении [4]. Цель управления – сбалансировать положение маятника в условиях существенных ограничений на скорость и положение тележки, а также в условиях ограниченной силы управления. В этом случае для стабилизации необходимо выполнение условия q=0. Рассмотрим модель динамической системы c начальными условиями: [q0 ]=[10 0,1] (grad); [z0 ]=[0 0] и параметрами: mc=1,0 кг; m=0,1 кг; l=0,5 м; коэффициент трения в q k=0,4; коэффициент трения в z a2=0,1; сила упругости a1=5,0.

Сравним базу, спроектированную в оптимизаторе БЗ, с базой, спроектированной в ANFIS (встроенный инструментарий МатЛаб), и ПИД-ре­гулятором (рис. 5).

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

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

–      общая схема работы алгоритма определяется базовым классом моделей нечеткого вывода InferenceEngine;

–      функция поиска и перечисления активных правил делегирована классам, отвечающим за хранение БЗ;

–      вычисления, необходимые для проведения нечеткого вывода, реализованы в конкретных классах-реализациях моделей нечеткого вывода.

Возможность конфигурирования алгоритма нечеткого вывода классом-приемником списка активированных правил позволяет использовать реализацию нечеткого вывода в рамках других алгоритмов, выполняющих различные задачи в процессе автоматизированного построения ИСУ. Реализованная в рамках SCOptimizer архитектура системы нечеткого вывода дала возможность решить ряд инженерных задач, возникших при разработке программного комплекса. Высокая эффективность проектных решений позволила создать систему проектирования ИСУ, превосходящую аналогичный инструментарий МатЛаб [1], что подтверждается результатами тестирования.

Литература

1.     Ульянов С.В., Литвинцева Л.В., Добрынин В.Н., Мишин А.А. Интеллектуальное робастное управление: Технологии мягких вычислений. М.: ВНИИгеосистем, 2011. 408 с.

2.     Сорокин С.В., Литвинцева Л.В., Ульянов С.В. Технология интеллектуальных мягких вычислений в проектировании робастных нечетких систем управления: оптимизатор баз знаний // Нечеткие системы и мягкие вычисления. Тверь: ТвГУ, 2008. Т. 3. № 1.

3.     Гамма Э., Хелм Р., Джонсон Р., Влиссидес Д. Приемы объектно-ориентированного проектирования. Паттерны проектирования. СПб: Питер, 2008. 366 с.

4.     Ульянов С.В., Мишин А.А., Миногин А.А. [и др.]. Информационная технология проектирования робастных баз знаний нечетких регуляторов. Ч. III: Квантовый нечеткий вывод и квантовая информация // Электрон. журн. Системный анализ в науке и образовании. 2010. № 3. URL: http://www.sanse.ru/ (дата обращения: 21.12.2012).



http://swsys.ru/index.php?id=3374&lang=.&page=article


Perhaps, you might be interested in the following articles of similar topics: