Аннотация
В статье рассматривается историческая справка и общая информация о развитии нечеткой логики. Рассмотрены различные методы и подходы нечеткой логики. Описана реализация достаточного функционала для разработки нечетких регуляторов автоматизированных систем управления в трех средах программирования ПЛК: Uity Pro, CoDeSys, Owen Logic, на языках ST и FBD (CFC).
Олейников В. С. - Старший преподаватель высшей школы киберфизических систем и управления,
Коновалов К.Д. , Тен Е.- студенты
Долгое время в области моделирования, прогнозирования и принятия решений использовалась аксиоматическая теория множеств, где для исследования системы использовалась «точная» информация. С выходом статьи профессора Калифорнийского университета Лотфи Заде «Fuzzy Sets» в 1965 г. оказалось, что теория четких множеств (аксиоматическая теория) является лишь частным случаем в теории нечетких множеств, где используется неточная информация. Во многих ситуациях информация бывает размыта и невозможно с помощью измерительных приборов исследовать систему. В таких случаях теория нечетких множеств позволяет использовать информацию любого вида в моделировании и управлении. Одним из примеров «расплывчатой» информации может служить приблизительная оценка температуры в помещении, человек, в отличие от термометра, оперирует такими критериями как «холодно», «прохладно», «тепло» и «жарко». Визуально данные оценки можно представить с помощью информационных гранул, которые ввел Лотфи Заде. Точной является та информация, которая менее гранулирована и наоборот, более гранулированная - неточна. Гранула бесконечно малой величины в пределе дает точку (рис. 1.1), а информация, представленная в виде гранул ненулевой ширины, является нечеткой информацией.
Важным понятием в нечетких множествах является лингвистическая переменная – это такая переменная, значениями которой являются слова естественного языка, например температура, влажность воздуха, прибыль. Значение лингвистической переменной же, представляет собой переменную, которая выражена словами – низкая температура, высокая влажность воздуха, низкая прибыль. Из этих двух понятий исходит определение лингвистического терм-множества переменной – множество всех лингвистических значений для определения некоторой лингвистической переменной:
Используя функции, которые будут характеризовать степень принадлежности точного значения температуры к определенному критерию, можно установить соответствие точного измерения с размытой оценкой, данной человеком. Функция принадлежности ставит определенное число из интервала в соответствие каждому значению х заданной переменной и имеет формат записи
здесь х – имя элемента данного множества, А - звание множества, Х – процедура оценки того, в какой степени данный нам элемент принадлежит множеству. Помимо задания формулой, функция принадлежности может быть представлена в виде графика (рис. 1.3), интеграла, таблицы и вектора степени принадлежности.
Теперь рассмотрим конкретные этапы процесса нечеткого вывода. Первым этапом такого процесса является фаззификация входных параметров. Фаззификация – это процесс перехода от числовых значений к нечетким, то есть вычисление значений функций принадлежности термов соответствующей ей лингвистической переменной. Функции принадлежности выбираются либо заранее исходя из неких экспертных знаний, либо в процессе работы для улучшения качества регулирования. Наиболее простыми в реализации являются так называемые треугольные и трапециевидные функции принадлежности, хотя в общем случае функция принадлежности может быть любой, отвечающей условиям выбранного алгоритма нечеткого вывода (например, при использовании алгоритма Мамдани все функции принадлежности должны иметь конечные носители, в противном случае алгоритм может работать некорректно).
Следующий этап – формирование нечетких выводов. Данный этап включает в себя вычисление значений выходных нечетких переменных с помощью значений входных нечетких переменных на основании базы правил. В общем случае его часто подразделяют на несколько небольших этапов (агрегирование подусловий, активизация подзаключений, акумуляция заключений), но для упрощения их можно рассматривать как единое целое. В случае алгоритма Мамдани простейшее правило выглядит следующим образом:
ЕСЛИ x есть A, ТО y есть B (1),
где х и у – нечеткие переменные, а А и В – некоторые их термы. В этом случае степень выполнения исходного условия (х есть А) определяется с помощью значения соответствующей функции принадлежности. В данном случае правила могут быть более общими, поскольку нечеткая арифметика позволяет использовать операции, подобные логическим операциям из алгебры логики (стоит, однако, отметить, что операции из нечеткой арифметики не эквиваленты аналогичным операциям и алгебры логики, кроме того, для большинства операций существует несколько вариантов вычисления результата логической операции. Например, при вычислении результата логического И может использоваться как оператор MIN (x1, x2, …), так и оператор PROD (x1, x2, …)). База правил в общем случае – это таблица, в которой каждой комбинации (Ai, Bj, Ck …) сопоставляется комбинация (Ym, Zn, …), где Ai, Bj, Ck – функции принадлежности отдельных термов входных переменных, а Ym, Zn – функции принадлежности отдельных термов выходных переменных. В реальности данная таблица не всегда охватывает все возможные сочетания термов входных переменных. Некоторые из них могут опускаться, например, в случае, если такая комбинация невозможна ввиду особенностей технологического процесса (например, если невозможна ситуация, когда температура очень высокая, а давление очень низкое).
Последний этап алгоритма нечеткого вывода – дефаззификация. На данном этапе нечеткие значения выходных переменных преобразуются в конкретные числовые значения. Способов выполнения дефаззификации существует большое количество, рассмотрим только несколько из них.
Метода среднего максимума. Суть метода: находятся участки, для которых значение функции принадлежности выходной переменной максимально, затем рассчитывается среднее значение между ними. Достоинства: скорость работы, простота реализации. Недостатки: очень низкая чувствительность, поскольку для расчета итогового значения используются только те термы, степень активизации которых максимальна, информации о степени активизации остальных термов теряется.
Метода центра тяжести. Суть метода: считаем, что результирующее нечеткое множество представляет собой однородную фигуру. Рассчитываем значение центра тяжести этой фигуры, и в качестве выходного значения принимаем значение соответствующей ему координаты. Достоинства: в расчете учитываются все активизированные термы. Недостатки: высокая ресурсозатратность, поскольку для вычисления центра тяжести необходимо производить интегрирование; снижение интервала возможных значений выходной переменной (получить «крайние» значения физически невозможно); плохая чувствительность в некоторых случаях (например, в случае, если функция принадлежности B1 будет иметь значительно более узкий носитель, чем функция принадлежности B2, то влияние степени активации B1 на итоговое значение будет значительно ниже, чем B2.
Метод центра сумм. Суть метода: данный метод похож на метод центра тяжести, однако результирующая функция принадлежности выходной переменной вычисляется не с помощью оператора MAX, а как неограниченная сумма функций принадлежностей всех полученных на предыдущем этапе заключений. Затем для полученной фигуры используется метод центра масс. Достоинства: снижение ресурсозатратности по сравнению с методом центра тяжести; участие в выводе всех правил, даже если некоторые из них активизируют одни и те же термы выходной переменной. Недостатки: совпадают с недостатками метода центра тяжести.
Для внедрения в технологический процесс функционал нечеткой логики был реализован в трех средах программирования ПЛК: Uity Pro, CoDeSys, Owen Logic. Функционал реализован на языках ST и FBD (CFC). Для реализации фаззификации лингвистической переменной была выбрана треугольная форма термов. Список переменных для обработки одного терма указан на рисунке 1.4.
Код подобного обработчика на языке ST для сред программирования Uity Pro и CoDeSys выглядит следующим образом:
if ((signal<Point1)or(signal>Point3))then
affil:=0.0;
else
if signal<Point2 then
affil:=(int_to_real(signal-Point1))/(int_to_real(Point2-Point1));
else
affil:=1.0-((int_to_real(signal-Point2))/(int_to_real(Point3-Point2)));
end_if;
end_if;
Код обработчика треугольных термов на языке FBD для среды Owen Logic представлен на рисунке 1.5.
Для реализации дефаззификации был выбран метод синглтонов. Список переменных для дефаззификации указан на рисунке 1.6 и определяется формулой (1).
Код подобного обработчика на языке ST для сред программирования Uity Pro и CoDeSys выглядит следующим образом:
defuzzy_signal:=
((affil1*int_to_real(term1)+affil2*int_to_real(term2)+affil3*int_to_real(term3))/(affil1+affil2+affil3));
Код обработчика дефаззификации на языке FBD для среды Owen Logic представлен на рисунке 1.5.
Список литературы
1. Пегат А. Нечеткое моделирование и управление / А. Пегат — 3-е изд. — М. : БИНОМ. Лаборатория знаний, 2015 — 801 с.
2. Тарасян В.С. Fuzzy Logic Toolbox for Matlab : учеб. пособие / В.С. Тарасян.— Екатеринбург : Изд-во УрГУПС, 2013.— 112 с.
3. Григорьева, Г.А. Основы нечеткой логики: учебно-методическое пособие к практическим занятиям и лабораторным работам / Д.Р. Григорьева, Г.А. Гареева, Р.Р. Басыров - Набережные Челны: Изд-во НЧИ КФУ, 2018. - 42 с.
4. Спицын В.Г. Разработка экспертных систем на основе нечетких правил вывода: методические указания к лабораторным работам. /Спицын В.Г. – Томск: Изд-во ТПУ, 2011. – 33 с.