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

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

Мотивация

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

Эта работа основана на материалах Nagabandi et al., 2017 г. Они использовали нейронную сеть в цикле MPC для выполнения задач передвижения MuJoCo в робототехнике [2]. Существует популярный набор инструментов для сравнения и разработки алгоритмов обучения с подкреплением под названием OpenAI Gym, где вы можете экспериментировать со стандартизованными задачами механического управления, такими как перевернутый маятник. Я не нашел готовой основы для управления массой-пружиной-демпфером с помощью нейронных сетей. Итак, я создал свою собственную симуляцию на Python.

ОБНОВЛЕНИЕ (13.01.2021): код для этого теперь доступен на моем GitHub.

Проблема

Предположим, у нас есть три одинаковые точечные массы m = 0,5 кг с начальными положениями x1, x2 и x3. Демпферы имеют постоянную демпфирования d = 0,25 Нс / м каждый. Пружины нелинейны и описываются законом Ньютона как:

с k = 217 Н / м и kp = 63,5 Н / м³. Силы «u1» и «u3» являются «управляющими входами», иногда также называемыми «силами срабатывания» или «действиями». С этого момента я буду называть это действиями. Возмущение «dist» нарушает движение системы. Скажем, это случайное значение от -100 до 100 Н.

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

Основная цель здесь - направить массы m1 и m3 в желаемые значения исходной позиции x1_ref и x3_ref. Искусственная нейронная сеть будет использоваться для прогнозирования ее будущих положений x1 и x3 на основе сил u1, dist и u3.

Задача:

  1. Мы получаем только измерения x1 и x3 на каждом временном шаге (Δt = 0,001 с).
  2. Система запускается из произвольной позиции x1, x2, x3 со случайной начальной скоростью v1, v2, v3.
  3. Динамика системы неизвестна, И мы не можем вычислить уравнения движения, используя закон Ньютона.

Подход

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

Управление сложными системами включает две части: идентификацию системы и разработку контроллера. При идентификации системы мы создаем динамическую модель.

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

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

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

Модель

Термин модель здесь можно понимать как динамическую функцию, набор «правил», которые определяют, как состояния x (положение масс) изменяются относительно времени t. Математически он предсказывает следующие состояния x на основе действий u:

где Z определяет ограничения (ограничения) состояний и действий.

Зачем нужна модель?

Потому что увеличивает объяснимость.

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

Модель нейронной сети

Здесь цель нейронной сети - быть моделью: изучить динамическую функцию нашей механической системы. Это просто…

Мы даем измерения состояния нейронной сети в реальном времени. Затем тренируйте его с каким-нибудь алгоритмом. И все это без знания закона Ньютона!

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

Сначала я подумал об использовании рекуррентных нейронных сетей (RNN), таких как NARX. Но я обнаружил, что онлайн-обучение RNN займет больше времени в алгоритме обучения с подкреплением. Итак, я использовал простейшую архитектуру: Многослойный персептрон (MLP).

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

Кроме того, нейронная сеть будет предсказывать изменение положения Δx вместо того, чтобы предсказывать фактическое положение следующих состояний x. Иногда это можно назвать остаточными связями. Или техника манипулирования данными. При этом используется знание того, что в нашей динамической системе изменения состояния Δx очень малы, поскольку один временной шаг составляет всего 0,001 секунды.

Дизайн нейронной сети

Помните: в реальном времени доступны только измерения x1 и x3 , каждые 0,001 секунды. Предположим, что нет доступных измерений x2 или каких-либо скоростей состояния для обучения сети.

Для эксперимента я установил задержку в 2 шага. В результате получается «новая» информация для обучения: прошлые состояния (xt-1 и xt-2).

Входы: входами нейронной сети являются действия u (u1 и u3), текущие состояния xt-0 (x1 и x3), а также прошлые изменения состояний diff1 и diff2 (Δxt-1 и Δxt-2).

Выходы: Выходы нейронной сети - это предсказанное изменение состояний x (Δx1 и Δx3). Все слои нейронной сети полностью связаны.

Поскольку у нас есть 2 измеренных состояния (x1 и x3), 2 действия (u1 и u3) и вход возмущения (dist), мне понадобится всего (1x2) + (3x2) + 1 = 9 входных нейронов и 2 выходных нейрона для моего дизайна.

Я установил 40 скрытых нейронов в архитектуре MLP. Функция активации выпрямленного линейного блока с утечкой (LReLU) была выбрана с a = 0,5.

Я экспериментировал с множеством конфигураций для нашего случая. Я добился наилучшей эффективности обучения с помощью Оптимизатора Адама со скоростью обучения 0,001 и размером пакета 16. Данные (входные и выходные пары) предварительно обрабатываются перед обучением, чтобы получить среднее значение 0 и стандартное отклонение 1. Все веса и смещения нейронной сети были инициализированы с помощью равномерной инициализации Glorot.

Эти настройки чисто экспериментальные. Но чтобы вы поняли ...

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

Прогнозирующее управление моделью (MPC)

MPC - один из наиболее часто используемых методов управления многомерными системами. Как следует из названия, управление применяется на основе прогнозов, сделанных моделью. Оптимизация обычно выполняется с использованием стратегии отступающего горизонта.

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

Эту стратегию можно выразить как «целевую функцию» управления:

Приведенное выше уравнение может показаться сложным, но на самом деле оно очень простое. Мы хотим выбрать действия u (t), которые производят наименьшее J (t).

Чтобы применить эту стратегию, нам нужно знать три вещи:

  1. желаемые эталонные значения y (цель траектории, установленная пользователем)
  2. прогнозируемые значения y на некотором временном горизонте N (полученные из модели)
  3. действия u на некотором временном горизонте Nu (вычисленное / случайное предположение)

J (t) здесь называется «стоимостью». Более высокая стоимость означает плохую управляемость.

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

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

Оценочные показатели

Прежде чем углубляться в алгоритм управления, мы должны разработать метрики оценки. В этом эксперименте я определяю «характеристики управления» как две вещи: 1.) отклонение от траектории, 2.) плавность действия и общий импульс. Моделирование выполняется в дискретном времени с Δt = 0,001 с.

  1. Отклонение траектории,

где yt - прогнозируемые значения, а wt - опорные значения для будущих траекторий. Между тем, s - это общее количество временных шагов моделирования.

2. Полная плавность импульса и действия

Мы хотим, чтобы оба эти значения и RMSE были как можно меньше. Однако часто случается компромисс между ними.

Стратегия контроля

В сочетании с MPC на основе нейронной сети мы применим простой метод управления, называемый случайной съемкой.

Как это работает?

В алгоритме MPC 300 возможных действий будут рандомизированы для каждого временного шага. Повторяя это N раз и пропуская через модель, мы получаем 300 возможных траекторий для каждого состояния. Наконец, возможные траектории будут использоваться для выбора наилучшей последовательности действий, которая минимизирует целевую функцию.

Кроме того, я ограничу изменение возможных действий u на каждом временном шаге. Таким образом мы можем опустить второй квадратичный член в целевой функции. Вместо этого я добавил в уравнение horizonpenalty:

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

Я экспериментировал с некоторыми терминами, которые штрафуют за высокие скорости системы. Как?

Уловка заключается в вычитании последних состояний из первых состояний предсказанных траекторий системы. Изменение расстояния с течением времени = скорость. Мы вернемся к этому позже.

Теперь вы можете спросить, как все это связано с обучением с подкреплением?

Структура обучения с подкреплением (RL)

Итак, в RL обучение осуществляется путем непрерывного взаимодействия агента с окружающей средой. Это также можно назвать «онлайн-обучением». В «свободных от модели» алгоритмах RL агент учится на собственном опыте.

При обучении с подкреплением на основе модели агент моделирует среду и планирует наилучшее действие на основе модели. Если вам нужно подробное объяснение, прочтите эту замечательную статью Джонатана Хуэя.

Вкратце поясняется: в технике управления «агент» - это контроллер. «Среда» - это динамическая система + среда (откуда происходят возмущения). Мы можем получить состояния из наших «наблюдений».

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

В общем, существует два типа поведения в RL:

  1. Исследование: цель - узнать как можно больше
  2. Эксплуатация: цель - получить как можно больше вознаграждения.

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

Здесь я разработал фреймворк для нашей задачи:

Дизайн эксперимента для проверки основы:

А псевдоалгоритм:

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

Создание данных

Сначала мы рандомизируем действия на некоторый период для сбора исходных данных. В терминологии RL это называется «разведка». Обучаем нейронную сеть партиями. Некоторые правила для этого периода исследования:

  1. Максимальное усилие будет 500 Н.
  2. Оно может измениться не более чем на 500 Н. за один временной шаг.
  3. Мы определяем один временной шаг как 0,001 секунды.

Если мы выведем уравнения движения, используя закон Ньютона, мы сможем смоделировать эту механическую систему. Начальные условия - установившиеся (нулевые скорости).

Мы можем смоделировать поведение системы с помощью библиотеки scipy.integrate.odeint. Итоговые выходные траектории для первых 20 секунд показаны ниже.

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

Возможность прогнозирования NN

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

Как обсуждалось ранее, данные будут «стандартизированы» перед подачей в модель NN. Как среднее значение, так и стандартное отклонение отбираются каждые num_calib = 20000 точек данных.

Взгляните на полученное ниже распределение данных для 20000 точек данных:

Все входные состояния имеют среднее значение 0 и стандартное отклонение 1. Это уравновешивает входные состояния по общему масштабу, обеспечивая быстрое обучение нейронной сети.

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

Затем мы также можем распространить изученную динамику вперед, чтобы делать многоэтапные прогнозы. Фактически, именно этим мы и занимаемся во фреймворке. Ниже мы можем увидеть примеры результатов для прогнозирования N = 10 временных шагов в будущее:

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

Алгоритм управления

Как объяснялось ранее, мы будем использовать случайную съемку в сочетании с MPC.

Чтобы определить лучший «горизонтальный штраф», алгоритм сначала моделировался с предварительно обученной сетью. Ниже мы можем сравнить некоторые примеры Horizonpenalty и его результирующие контрольные характеристики.

RMSE100 - это показатель для сравнения производительности контроллеров, который дает контроллеру 0,1 с на реакцию перед тестированием. В этом основанном на модели алгоритме RL я реализовал горизонтальный штраф (b) для целевой функции.

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

Исследование

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

За 40 секунд нейронная сеть была бы обучена 2 секундами старой динамики и 18 секундами новой динамики.

Эксплуатация

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

Из-за разведки система теперь очень быстро колеблется. Состояние системы через 40 секунд показано в таблице ниже.

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

Окончательные результаты

Результаты здесь показывают продолжение моделирования с 40 секунд.

Я установил желаемые значения [x1, x3] = [1,2] m на следующие 0,3 секунды, а затем вернул его обратно в начало координат [0,0] m.

Моделирование было повторено дважды: с возмущением и без него dist.

В первом моделировании к системе не применялись никакие возмущения:

Вторая симуляция, возмущение dist от -100 до 100 N, случайным образом примененное к системе:

TL;DR

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

В целом этот алгоритм RL на основе модели может:

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

Требования:

Возможное улучшение:

  1. Используйте входные выпуклые нейронные сети, чтобы изучить динамику всей системы. Это решает проблему MPC до глобальной оптимальности [3].
  2. Реализация алгоритма управления на вычислительных платформах для более быстрого выполнения (например, OpenCL).

Будущая работа

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

Если вас интересует управление движением робототехники, вам стоит попробовать физический движок MuJoCo.

Спасибо за чтение и получайте удовольствие от изучения!

использованная литература

  1. Хэган, М. ; Демут, Х. ; Иисус, О.Д .: Введение в использование нейронных сетей в системах управления. В: Int. J. Робастное нелинейное управление Bd. 12. John Wiley and Sons Ltd, (2002), S. 959-985.
  2. Нагабанди, А.; Кан, Г.; Опасаясь, Р. ; Левин, С .: Динамика нейронной сети для обучения с глубоким подкреплением на основе моделей с точной настройкой без использования модели. В: CoRR abs / 1708.02596 (2017).
  3. Чен, Ю.; Ши, Ю.; Чжан, Б .: Оптимальное управление через нейронные сети: выпуклый подход. В: arXiv: Оптимизация и управление (2019)
  4. Саттон, RS. ; Барто, А.Г .: Обучение с подкреплением: Введение. Кембридж, Массачусетс, США: Книга Брэдфорда, (2018) - ISBN 0262039249
  5. Вонг, В.; Chee, E.; Ли, Дж.; Ван, X .: Прогностический контроль на основе модели повторяющейся нейронной сети для непрерывного фармацевтического производства. В кн .: Математика 6 (2018), С. 242.
  6. Роулингс, Дж.; Mayne, D.Q. ; Диль, М .: Модель управления с прогнозированием: теория, вычисления и дизайн, 2-е издание. Санта-Барбара, Калифорния: Nob Hill Publishing, LLC, (2019)