Итак, вам нужно ускорить модель объекта управления в несколько раз. Вы попробовали рекуррентные сетки, а потом решили вспомнить Ляпунова и Понтрягина и сделать это без data science. Поехали!
![](https://habrastorage.org/getpro/habr/upload_files/404/ff0/f39/404ff0f39b5786633bb39b66c13a6bb9.jpg)
Введение
В этом блоге мы уже выпустили серию статей про суррогатные модели, которыми можно заменять сложные технические системы. Была статья и про расчет системы управления приводом элерона самолета через рекуррентную нейросеть на ячейках GRU.
Сеть GRU продемонстрировала неплохие результаты по части ускорения выполнения исходной модели, но очень сильно ошибалась на промежутках с сильной осцилляцией и вообще при высокой динамике выходной величины. Вторая проблема, как всегда с нейросетями, была в экстраполяции: модель была очень чувствительна к предыстории (показаниям, которые предшествовали началу моделирования), а чем больше берешь предысторию, тем меньше данных остается в датасете.
Вот и мы поставили себе следующую цель: повысить качество моделирования выходной величины, заменив объект управления на алгоритм динамического регрессора.
Основные этапы работы
Рассмотрим систему управления приводом элерона самолета. Модель представлена рисунке 1 в виде функциональных блоков MATLAB/SIMULINK.
![Рисунок 1 – Система управления приводом элерона самолета Рисунок 1 – Система управления приводом элерона самолета](https://habrastorage.org/getpro/habr/upload_files/e9b/ec7/fbd/e9bec7fbd76838026b08af21ecbb0cd0.png)
Слева находится блок управления, мы его не трогаем. Справа находится привод, который получает из внешнего мира реакцию на свои перемещения (момент сопротивления среды M) и, конечно, сигнал управления.
В этой работе мы заменим блок справа на DR (Dynamic Regressor) при помощи алгоритма идентификации параметров динамического объекта, который исходные авторы метода [1] упоминают в контексте адаптивных систем и бессенсорного управления.
В этих методах звено считается объектом с динамическими характеристиками, которые постоянно нужно пересчитывать. При этом это не простой фильтр входных данных типа сглаживания, а модель, которая должна научиться изменять свои характеристики самостоятельно, в зависимости от входных данных.
![Рисунок 2 – Замена функционального блока системы на модель с динамической линейной регрессией Рисунок 2 – Замена функционального блока системы на модель с динамической линейной регрессией](https://habrastorage.org/getpro/habr/upload_files/b92/de1/e5a/b92de1e5a2d8db23405054ff5840f60d.png)
Итак, наш DR создан, чтобы заменить объект, заданный в виде дифференциальных уравнений с начальными условиями (форма Коши):
где – вектор состояния системы;
– вектор управления.
Замена на Dynamic Regressor:
где – оценка выходной переменной (перемещение звена);
– вектор неизвестных параметров;
– вектор входных сигналов или регрессор модели.
Вектор включает в себя управляющие сигналы с контроллера
постоянные
, которые отвечают за режим работы привода и внешний суммарный момент сил
.
В задаче у нас известен сигнал управления «Reference», который управляемый объект должен отрабатывать, минимизируя отклонение между своим выходом и эталоном (считаем, что объект управления сделан правильно и имеет только отрицательную обратную связь).
где – референсный сигнал;
– выходная переменная объекта управления с ДУ.
В последнем уравнении выходной сигнал с объекта управления (который описывается дифференциальными уравнениями) заменяем на модель с динамическим регрессором
.
Тогда ошибку можно переписать в следующем виде:
Осталось только определить вектор неизвестных постоянных. Никакой магии, DR для этого использует градиентный метод оценивания параметров, в качестве функционала ошибки – квадратичный критерий. Вычислим оценки неизвестных параметров:
В каждый момент времени формируется новый вектор оценок параметров линейной регрессии
и происходит адаптация под характер эталонного сигнала
.
Условия, при которых динамический регрессор выдает адекватную оценку параметров модели, важно учитывать при построении моделей. Для модели вида:
где
Вектор оценок сходится к своим истинным значениям или ошибка
параметров сходится к нулю асимптотически, если выполняется условие незатухающего возбуждения, которое накладывается на регрессор
:
где существуют такие положительные числа и
, для которых выполняется данное неравенство.
Теперь, к делу!
Моделирование показало практически одинаковые результаты по скорости вычисления искомой величины в сравнении с сетью GRU. Зато максимальная относительная ошибка составила 7% для всего времени моделирования! Как и ожидается, выход DR-модели в целом четко следует заданным входным командам:
![Рисунок 3 – Расчет величины перемещения звена привода элерона Рисунок 3 – Расчет величины перемещения звена привода элерона](https://habrastorage.org/getpro/habr/upload_files/ec3/35b/e15/ec335be1526f6027e14aaf531a14b960.png)
Если приблизиться, обратная связь по DR-модели очень плотно следует за сигналом управления – хорошо, тут ничего не нарушается.
![Рисунок 4 – Начальный момент времени моделирования Рисунок 4 – Начальный момент времени моделирования](https://habrastorage.org/getpro/habr/upload_files/92c/0a6/6d3/92c0a66d36009f63253048ebf970e82d.png)
И напоследок сравним результаты на участках с сильной динамикой:
![Рисунок 5 – Участок с сильной осцилляцией Рисунок 5 – Участок с сильной осцилляцией](https://habrastorage.org/getpro/habr/upload_files/4e1/be7/620/4e1be7620dce4fe8349c016bb3635ace.png)
Как на участке с колебаниями, так и на участке с резким скачком, DR-модель отрабатывает нормально.
![Рисунок 6 – Заключительный участок времени моделирования Рисунок 6 – Заключительный участок времени моделирования](https://habrastorage.org/getpro/habr/upload_files/eec/94b/3b2/eec94b3b29d6ac8386f98b5169d57d24.png)
К слову, нейронная сеть тут допустила большую ошибку на заключительном этапе расчета, что ярко проиллюстрировано на рисунках 6 и 7.
![Рисунок 7 – Заключительный участок времени моделирования с сетью GRU Рисунок 7 – Заключительный участок времени моделирования с сетью GRU](https://habrastorage.org/getpro/habr/upload_files/0d3/5c7/ab6/0d35c7ab60be088b5f1873dce34b712c.png)
Заключение
Система управления с динамическим регрессором показала гораздо лучшие результаты по моделированию величины перемещения звена привода элерона самолета, чем GRU-нейросеть.
Это доказывает, что инвестиции в изучение моделируемой системы позволяют выбрать такой метод, который будет работать гораздо лучше нейросетей.
Максимальная относительная ошибка составила 7%. Процесс расчета ускорен в 5 раз (7.34 сек вместо 36.6 сек). Преимущество разработанной методики заключается в онлайн-обучении или адаптации к новым оценкам параметров линейной модели в процессе моделирования.
Ссылки на полезные источники
[1] Цзянь Ван, С. В. Арановский, А. А. Бобцов, А. А. Пыркин, С. А. Колюбин, Метод обеспечения условий незатухающего возбуждения, Автомат. и телемех., 2018, выпуск 2, 71–79 http://www.mathnet.ru/links/b9167b4d3a6ac1a59d05094184dc829b/at15017.pdf
[2] Туан Ле Ван, Бобцов А.А., Пыркин А.А. Новый алгоритм идентификации нестационарных параметров для линейной регрессионной модели // Научно-технический вестник информационных технологий, механики и оптики. 2017. №5. URL: https://cyberleninka.ru/article/n/novyy-algoritm-identifikatsii-nestatsionarnyh-parametrov-dlya-lineynoy-regressionnoy-modeli (дата обращения: 15.08.2022).
Arastas
Приятно, что кто-то с Хабра читает АиТ, хотя и несколько неожиданно. ;)
Вы в заключении пишете про расширенный регрессор. Вы его как-то расширяли?
Igorec_matveev Автор
Спасибо за замечание. Это была опечатка! В работе пока рассматривали применение динамического регрессора. В будущем, планируем провести эксперименты с расширением для ускорения сходимости :)
Arastas
Вы знаете, я не уверен, что термин «динамический регрессор» используется. Есть динамические регрессионные модели, есть динамическое расширение регрессора.