Оценка параметров модели на основе эксперимента
Рассмотрим задачу параметрической идентификации или оценки параметров модели на основе экспериментальных данных. В нашем примере суть задачи в следующем: есть модель, есть ее структура, но нет самих значений параметров, которыми эта модель описывается. Зато имеются какие-то реальные данные в виде снятых опытных точек, что очень ценно, если мы хотим управлять чем-то хорошо и особенно хорошо, если у нас еще имеется аналитическая зависимость этих параметров и объект для нас не черный ящик. Необходимо получить эти параметры из эксперимента, а еще лучше - автоматизировать оценку параметров имеющейся модели. Вообще решению задачи оценки параметров посвящено множество методов (МНК, фильтр Калмана и прочее).
В целом алгоритм оценки получается почти такой «классический»:
1. Набрать экспериментальные данные.
2. Определить модель и параметры модели, которые требуют оценки.
3. Настроить параметры процесса оценки и провести саму оценку.
4. Проверить адекватность модели на тестовых наборах данных.
Теперь более подробно про наш случай. Имеется двигатель постоянного тока, модель которого известна и реализована в Simulink средствами SimScape (физическое моделирование). Вообще что и чем реализовано в Simulink не суть. Главное - есть модель. Параметры вместо конкретных значений заданы в маске модели переменными из MATLAB, как это показано на рисунке.
У нас всего 5 параметров – 3 для электрической части и 2 для механической. Дальше все просто: запускаем специальный инструмент из Simulink Design Optimization, Parameter Estimation в меню Analysis, указываем что хотим оценивать, откуда брать экспериментальные данные. Т.к. задача у нас оптимизационная (и требует еще установленного Optimization Toolbox), то указываем метод оптимизации, критерий, условия остановки оптимизации и прочее. Помимо этого необходимо задать начальные значения, границы поиска по каждому параметру, что в процессе оценки может помочь приблизить нашу модель по параметрам к реальному объекту (может существовать множество наборов параметров модели, которые по результатам симуляции могут подходить под имеющиеся экспериментальные данные) и ускорить процесс оценки. Задать значения можно, например, по паспорту двигателя, откуда знаем, что сопротивление и индуктивность лежат в таких-то пределах.
Теперь все готово - запускаем процесс оценки (он же процесс оптимизации) и спокойно наблюдаем в интерактивном режиме, как работают оптимизационный алгоритм, изменяет параметры нашей модели, на каждом шаге запускается симуляция с новыми параметрами и результаты моделирования подбираются все ближе и ближе к экспериментальным данным. Если вы видите, что результат моделирования вас устраивает, а условия остановки еще не выполнены, то вы можете остановить оценку вручную. При этом стоит помнить, что вы получили модель, которая хорошо описывает именно те данные, которые участвовали в процессе оценки. Чтобы быть уверенными при других случаях, то можно проверить адекватность полученной модели на других тестовых наборах данных, т.н. Validation.
Если кому интересно, то хороший и подробный пример по схожей тематике на английском вот здесь Improve the Fidelity of Your Simulink Models Using Test Data and Parameter Estimation. В результате всех действий быстро и удобно получили точную модель. Стоит также отметить, что Simulink Design Optimization - инструмент с большими возможностями, помимо оценки параметров модели, можно так же проводить:
• Оптимизацию отклика системы по заданным требованиям.
• Разработку систем управления на базе методов оптимизации.
• Оценку значений таблиц подстановки по экспериментальным данным.
Комментарии