Хабрахабр

[Из песочницы] Простой регулятор на базе нечеткой логики. Создание и настройка

Нечеткая логика для управления

«Нечеткие регуляторы в системах автоматического моделирования». Текст подготовлен на основе материалов книги Гостева В.В. Между тем, сами по себе принципы создания и использования нечеткой логики достаточно просты и наглядны. Как все серьезные публикации по теме, данная книга перегружена математическими выкладками и тяжела для неподготовленного читателя. Данный текст – попытка перевести пример из книги с математического языка на инженерный.
Показана возможную последовательность проектирования регулятора на базе нечеткой логики, путем последовательного усложнения логических правил и подбором параметров методами оптимизации.

Постановка задачи

Методом математического моделирования определим процессы в системе и дадим сравнительную оценку качества системы при использовании синтезированных регуляторов.
Приняв за выходную координату ракеты угол атаки: , а за входную координату угол поворота руля определим передаточную функцию ракеты в виде:
, где:
– коэффициент преобразования ракеты,
– постоянная времени,
– коэффициент демпфирования. Рассмотрим синтез цифрового ПИД-регулятора и нечеткого регулятора для системы управления ракетой по углу атаки.

При исследовании системы управления предположим, что зависимости параметров ракеты от времени полета определяются так:

Для упрощения расчетов, рулевой механизм опишем передаточной функцией интегрирующего звена В этом случае вход системы — заданный угол атаки, выход системы — отработанный ракетой угол атаки, m(t) – управляющий сигнал на выходе регулятора, а объект управления описывается общей передаточной функцией:

(В объект управления включены аналоговые рулевой механизм и ракета).

Закон изменения входного воздействия задан полиномом:

Необходимо разработать регулятор, обеспечивающий отработку входного воздействия с помощью ПИД-регулятора и регулятора на базе нечеткой логики.

Осуществить подбор коэффициентов регуляторов.

Произвести сравнение переходного процесса с ПИД-регулятором и c регулятором на базе нечеткой логики.

Динамическая модель объекта

Создадим динамическую модель в среде структурного моделирования.
Сама схема модели представлена на рисунке 1.

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

Схема динамической модели ракеты.
Рисунок 1.

Настройка регулятора

Блок ПИД представляет из себя субмодель (рис. 2), в котором используется стандартный блок «Дискретный ПИД-регулятор». Частота дискретизации выбрана равной 0.001 сек.

ПИД регулятор с схемой настройки.
Рисунок 2.

Параметры регулятора задаются в виде имен глобальных сигналов проекта Kp, Ki, Kd. Это позволяет изменять параметры во время моделирования, и настраивать регулятор.

Для настройки регулятора использовался блок «Оптимизация», критерием оптимизации является минимум среднего квадратичного отклонения.

Результат оптимизации – вектор из трех коэффициентов, который направляется в блок «Запись в список сигналов», где вычисленные значения передаются в сигналы и, соответственно, меняются значения коэффициентов ПИД. Блок оптимизации осуществляет оптимизацию по всему переходному процессу. Для настройки регулятора мы задаём следующие параметры оптимизации:

001
Максимальное среднеквадратичное отклонение после оптимизации 0. Исходные значения всех коэффициентов 1.
Диапазон для подбора задан от -50 до +50
Точность подбора 0. 01

В рассматриваемом случае блок оптимизации рассчитал следующие оптимальные значения коэффициентов:

891995; Kd = 11. Kp = -1,7498597; Ki = 17. 606602.

008738090 При таких коэффициентах среднеквадратичное отклонение в заданном переходном процессе составило 0.


Рисунок 3. Переходной процесс.


Рисунок 4. Управление.

Регулятор на базе нечеткой логики

Основное преимущества регулятора на базе нечеткой логики – это простота и наглядность формирования правил управления объектом.

Для примера, в книге «Нечеткие регуляторы в системах автоматического моделирования», правила нечеткого регулирования для управления ракеты по углу атаки описаны в виде математического выражения:
где, — ошибка системы, скорость изменяя (первая производная) ошибки, ускорение (вторая производная) ошибки;
m – управляющие воздействие на объект;
-лингвистические оценки ошибки, скорости изменения ошибки (первой производной) ошибки и второй производной ошибки, рассматриваемые как нечеткие множества, определенные на универсальном множестве ;
— лингвистические оценки управляющего воздействия на объект, выбираемые из терм-множеств переменной m

Читатель может спросить: это как же, вашу мать, извиняюсь, понимать?

За заумными математическими оборотами спрятана великая тайна правил нечеткого регулирования. Иногда у меня закрадываются сомнения в том, что авторы-математики сами понимают то, что они написали. Вот она:

много – уменьшай
норма – не трогай
мало – увеличивай

Если перевести с птичьего языка математики на русский, то выражение

означает буквально следующее:

Если больше нормы и отклонение растет и скорость роста увеличивается, то уменьшаем.
Если норма, и не изменяется и скорость постоянна, то не изменяем.
Если меньше нормы и падает и скорость падения увеличивается, то увеличиваем.

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

Немного теории

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

Например: «Мало» = -1; «Норма» = 0; «Много» = 1. Чтобы получить термы, мы должны задать числовое значения параметра для каждого терма. Функции растут по мере приближения к заданной величине, и уменьшаются по мере удаления. Для фазификации будем использовать треугольные функции. Треугольные функции принадлежности. Два варианта треугольных функций приведены на рисунке 5:

Рисунок 5.

Величины будут находится в диапазоне от 0 до 1. Зная величину отклонения (х1), мы можем найти значения функции принадлежности для термов больше (красная линия), норма (зеленая линия), меньше (синяя линия).

Если рассматривать с точки зрения абстрактной математики, то функции на правом графике более «красивые». Обратите внимание, что на левом графике крайние функции, не совсем «треугольные». В самом деле: Но, если вспомнить «главную тайну правил нечеткого вывода», то левый график более правильный.

А если у нас значение -2? Рассмотрим правило «Мало – добавляй», если у нас значение -1, то «мало» = 1 (красная линия) верно для обоих графиков. На левом графике при -2 так и есть: «мало = 1», но на правом графике у нас «мало» = 0, что очевидно не верно. По логике мы тоже должны «добавлять». То же самое справедливо для правила «Много – уменьшай».

Фазификация «честными» треугольными функциями может приводить к тому что при выходе величины за диапазон определения функций мы получаем 0, для всех термов, что, в свою очередь, может приводит к отсутствию воздействия на объект.

Для расчета воздействия нужно выполнить обратное преобразование – у нас есть значения функций принадлежности уменьшать, не изменять, увеличивать в диапазоне (0... Обратная задача — дефазификация. 1) (треугольные функции) и диапазон воздействий, которые мы можем оказать, и мы должны из трех термов получить одно число — конкретное воздействие.

На рисунке 6 приведено состояние регулятора, где значения термов уменьшать 0. Получить можно воздействие можно различными способами, например, по центру массы фигуры. 6 и увеличивать 0. 3 не изменять 0. 30 результирующие воздействие = 4. 8 при диапазоне регулирующего воздействия -30.. 1.

Дефазификация управляющего воздействия
Рисунок 6.

На рисунке 7 приведен вариант, где при тех же значениях термов и диапазону регулирования, мы получаем другой вариант ответа 8. Другой вариант дефазификации – по центру масс точек. 82:

Дефазификация методом центра массы точек.
Рисунок 7.

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

Треугольные функции принадлежности с одним основанием.
Рисунок 8.

3, не изменять 0. В этом случае результат фазификации при таких же значениях термов уменьшать 0. 8 при диапазоне регулирующего воздействия -30, 30 результирующие воздействие = 5. 6 и увеличивать -0. 27.

Дефазификация методом расчета площади.
Рисунок 9.

Модель ракеты оставляем такую же как и для ПИД-регулятора (см. Вооружившись тайными знаниями о нечеткой логике, создадим модель регулятора. 1), а вот в субмодели регулятора соберем схему, изображенную на рисунке 10. рис.

Схема регулятора на базе нечеткой логики.
Рисунок 10.

После входа стоит блок «Экстраполятор», который обеспечивает преобразование непрерывного сигнала в дискретный с заданным периодом дискретизации (0. На вход в регулятор подается рассогласование между заданным углом атаки и реальным (измеренным). 001 с – такой же, как у дискретного ПИД-регулятора).

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

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

На схеме названия переменных подписаны в порядке их распоряжения в векторах.
Отклонение в нашем случае – это разность заданного и измеренного, если отрицательное значение – значит угол атаки больше заданного, мы должны уменьшать. Блоки «Демультиплексор» разводят вектора в лингвистические переменные для формирования правил. И соответственно наоборот, если отклонение положительно, то измеренный угол меньше заданного, мы должны увеличивать.

(Больше – уменьшай, меньше – увеличивай, норма – не трогай).

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

  • Если больше нормы и отклонение растет и скорость роста увеличивается => уменьшаем.
  • Если норма и не изменяется и постоянна => не изменяем.
  • Если меньше нормы и падает и скорость падения увеличивается => увеличиваем.

Все лингвистические переменные в правилах у нас связаны через логические блоки «и» и подключены к выходам. Как видно из рисунка 10, схема логическая нечеткого вывода практически не отличается от обычной логической схемы, только используются блоки нечеткой логики.
Аналогично настройке ПИД-регулятора, мы используем блок оптимизации.

Остается вопрос с параметрами блоков.

Синтез регулятора на базе нечеткой логики

В жизни ничего не дается даром и поэтому, простота правил регулирования, компенсируется количеством параметров, описывающих функции принадлежности. В самом деле, если для ПИД-регулятора нужно подобрать три коэффициента, то в случае нечеткой логики, только для одной треугольной функции нужно 3 числа для вершин. Если для каждой входной переменной нам нужно 3 функции принадлежности + 3 для выходной, получается, что нам нужно задать 3 x 3 x 3 + 3 x 3 = 36 параметров!

Для первого приближения и первичной настройки можно все упростить. Но не все так печально.

Сделав некоторые допущения для первоначальной настройки регулятора:

  • Задаем симметричность функций, относительно нуля, тогда вместо двух чисел для максимума и минимума можно задать одно – Мах, и, соответственно диапазонно будет определен как [-Мах… Мах].
  • Задаем, равномерное распределение функций, тогда можно рассчитать положение всех вершин треугольников исходя из заданного диапазона.
  • Для трех функций координаты вершин определятся как –Max, 0, Max.
  • Задаем, что основание треугольника всех функций принадлежности одинаковы.

Таким образом, вместо 36 независимых параметров мы должны задать только 4, максимальное отклонение от 0 для трех входных переменных и одного выхода, а именно:

uMax – амплитуда управляющего воздействия (-uMax… uMax);
deltaMax – максимальное отклонение (-deltaMax… deltaMax);
divMax – максимальная производная отклонения (-divMax… divMax);
div2Max – максимальная вторая производная отклонения (-div2Max… div2Max)

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

«Нечеткие регуляторы в системах автоматического моделирования», для случая фазификации тремя функциями принадлежности предлагаются следующие параметры: Настройки регулятора, предложенные в книге Гостева В.В.

01 – максимальное отклонение;
divMax = 0. uMax = 30 – амплитуда управляющего воздействия;
deltaMax = 0. 07 – максимальная производная отклонения;
div2Max = 1 – максимальная вторая производная отклонения.

Сравнение переходных процессов

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


Рисунок 11.а Переходной процесс. ПИД регулятор


Рисунок 11.б Переходной процесс. Нечеткая логика

Явные отличия можно посмотреть на графиках полученного отклонения и управляющего воздействия:


Рисунок 12.а. Управление. ПИД регулятор


Рисунок 12.б. Управление. Нечеткая логика

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

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


Рисунок 13.а. Ступенчатое воздействие. ПИД регулятор.


Рисунок 13.б. Ступенчатое воздействие. Нечеткая логика.

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

Настройка регулятора на базе нечеткой логики методом оптимизации

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

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

Метод оптимизации с настройками по умолчанию рассчитал следующие значения диапазонов параметров оптимизации:

377 – амплитуда управляющего воздействия;
deltaMax = 1. uMax = 19. 01 – максимальная производная отклонения;
div2Max = 2. 095 – максимальное отклонение;
divMax = 0. 497 – максимальная вторая производная отклонения.

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

Переходная функция и управляющие воздействия представлены на рисунке 14.а


Рисунок 14.а. Нечеткая логика. Настройка по отклонению.


Рисунок 14.б. Нечеткая логика. Настройка по отклонению и количеству срабатываний.

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

Схема для оптимизации по 2 критериям.
Рисунок 15.

Расчет методом оптимизации по двум критериям дает следующие значения параметров:

714 – амплитуда управляющего воздействия;
deltaMax = 1. uMax = 19. 01 – максимальная производная отклонения;
div2Max = 1. 0496 – максимальное отклонение;
divMax = 0. 7931 – максимальная вторая производная отклонения.

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

Создание собственного регулятора на базе нечеткой логики

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

А на входе те же самые.
Изменим логику работы регулятора, для начала максимально упростив алгоритм управления. Попробуем сделать регулятор, у которого на выходе не 3 терма, а, например, 5: уменьшать быстро, уменьшать, не изменять, увеличивать, увеличивать быстро.

Запишем правила:

1) Если больше и растет => уменьшать быстро.
2) Если больше =>уменьшать.
3) Если норма => не изменять.
4) Если меньше => увеличивать.
5) Если меньше и уменьшается => увеличивать быстро.

Принимаем, что они распложены равномерно между -uMax и +uMax. В этом случае у нас для выходной переменной 5 термов (5 треугольных функций).

рис. Принимаем, что треугольные функции составлены таким образом, что когда функции принадлежности терма принимает максимальное значения, соседние функции принимают нулевые значения (см. 5).

В качестве параметров для вывода будут использоваться только отклонение и скорость изменения отклонения.

7). Для ускорения расчетов используем фазификацию вывода методом центра тяжести точек (см.рис.

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

Упрощенный регулятор на базе нечеткой логики.
Рисунок 15.

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

Наилучший результат показан на рисунке 16.

Переходной процесс для упрощенного регулятора.
Рисунок 16.

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

1) Если меньше и уменьшается => увеличивать быстро.
2) Если норма и увеличивается => уменьшать.
3) Если норма => не изменять.
4) Если норма и уменьшается => увеличивать.
5) Если больше и растет => уменьшать быстро.

Управление по скорости изменения отклонения.
Рисунок 17.

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


Рисунок 18.а. Переходной процесс.


Рисунок 18.б. Управление

Управление по скорости изменения отклонения значительно улучшило переходной процесс. Однако, если внимательно посмотреть на набор логических правил, то мы видим что отклонение не участвует в управлении. Если дать ступенчатое воздействие, контроллер управления не будет формировать управляющее воздействие. На рисунках 19 приведен пример переходного процесса при ступенчатом управляющем воздействии, видно, что регулятор не выдает управляющего воздействия, хотя отклонении равно 1.


Рисунок 19.а. Переходной процесс. Ступенька


Рисунок 19.б. Управление. Ступенька

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

1) Если меньше и уменьшается => увеличивать быстро.
2) Если (норма и увеличивается) или больше => уменьшать.
3) Если норма => не изменять.
4) Если (норма и уменьшается) или меньше => увеличивать.
5) Если больше и растет => уменьшать быстро.

Схема регулятора по данным правилам представлена на рисунке 20.

Регулятор с управлением по отклонению и скорости изменения.
Рисунок 20.

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


Рисунок 21.а. Переходной процесс. Ступенька


Рисунок 21.б. Управление. Ступенька

В заключение, давайте еще раз «улучшим» наш регулятор.

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

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

1) Если меньше и уменьшается => увеличивать быстро.
2) Если (норма и постоянна и разгоняется) или больше => уменьшать.
3) Если норма => не изменять.
4) Если (норма и постоянна и замедляется) или меньше => увеличивать.
5) Если больше и растет => уменьшать быстро.

Для экономии места на схеме логические выражения «и», записанные в правилах в скобках, вычисляются в субмодели, обозначенной «&». Схема данного регулятора приведена на рисунке 22.

Регулятор нечеткой логики с контролем второй производной.
Рисунок 22.

После подбора параметров методом оптимизации по отклонению и количеству включений, получены следующие параметры:

4983 – амплитуда управляющего воздействия;
deltaMax = 0. uMax = 27. 0966 – максимальная производная отклонения;
div2Max = 1. 0433– максимальное отклонение;
divMax = 0. 0828 – максимальная вторая производная отклонения.

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


Рисунок 23.а. Переходной процесс.


Рисунок 23.б. Управление.

Выводы

Регулятор на базе нечеткой логики может обеспечить более высокое качество переходного процесса для управления ракетой, чем ПИД-регулятор.

Настройку регулятора на базе нечеткой логики можно осуществлять средствами оптимизации.

Но требует настройки большего количества параметров. Регулятора на базе нечёткой логики обеспечивает большую гибкость в настройке и лучшее качество переходного процесса.

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть