Для решения такой задачи в Engee в новом проекте мы использовали расширенный фильтр Калмана (РФК). Он позволяет одновременно оценивать состояние системы и уточнять неизвестные параметры по мере поступления новых измерений.
В качестве объекта взяли обычное апериодическое звено первого порядка:
x[n+1] = ax[n] + bu + bv[n]Здесь a — неизвестный параметр. Мы специально дали фильтру неправильное начальное значение: 0.85 вместо настоящего 0.9. Измерения при этом зашумлены, а в сам процесс добавлен отдельный шум.
На каждом шаге РФК сначала делает прогноз состояния и его неопределённости, затем сравнивает прогноз с новым измерением и по этой разнице корректирует оценку. При этом параметр a включён прямо в расширенный вектор состояния, поэтому фильтр может уточнять его вместе с самим состоянием объекта.
📊 И результат хорошо виден на графиках:
• оценка параметра, начав с 0.85, быстро уходит к истинному значению 0.9 и после первых десятков итераций стабилизируется около него;
• неопределенность оценки параметра постепенно уменьшается по мере накопления данных;
• восстановленная траектория состояния хорошо совпадает с истинной, хотя исходные измерения заметно зашумлены.
Особенно нравится здесь именно практическая сторона подхода. Нам не нужно останавливать объект, отдельно определять его параметры, а потом возвращать систему в работу. Параметры можно оценивать непосредственно во время процесса.
Отсюда уже вполне реальные задачи:
⭐️оценка параметров объекта для адаптивного управления;
⭐️уточнение характеристик электрических машин и аккумуляторов;
⭐️калибровка параметров датчиков в навигационных системах;
⭐️проверка алгоритмов оценки состояния до выхода на реальный стенд.
И ещё один важный момент: такая оценка хорошо работает только тогда, когда математическая модель действительно соответствует объекту. Если модель не описывает реальный процесс, фильтр может вполне уверенно сойтись — но к неправильному параметру.
📎 Полный проект с кодом и моделью
Можно взять его за основу и заменить простое звено любой своей моделью.
А у вас какие параметры приходится оценивать непосредственно во время работы системы? 👇
🏆 Школа анализа данных 24.08
