Документация Engee

ControlSystemIdentification

Идентификация системы для ControlSystems.jl.

Идентификация системы — это процесс оценки динамической модели на основе данных. Этот пакет предназначен в первую очередь для оценки линейных моделей с постоянными параметрами (ЛПП) в форме систем в пространстве состояний

или в форме передаточных функций

Имеются также возможности для оценки нелинейных моделей Гаммерштейна — Винера и идентификации линейных либо нелинейных моделей методом серого ящика в непрерывном или дискретном времени.

Данный пакет реализован на бесплатном языке программирования Julia с открытым исходным кодом.

Если вы не имеете опыта работы с этим пакетом, начните ознакомление с ним с раздела документации Идентификационные данные. Примеры доступны в разделе «Примеры» и в форме интерактивных скриптов Jupyter. Ниже приводится вступительное видео (пример идентификации системы начинается примерно на 55-й минуте).

См. также список воспроизведения на Youtube с руководствами по использованию этого пакета.

Обзор алгоритмов

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

Estimation method SIMO MISO Disturbance models Nonlinearities Custom loss Time domain Frequency domain Multiple dataset

newpem

🟢 🟢 🟢 🟢 🟢 🟢 🟥 🟥

subspaceid

🟢 🟢 🟢 🟥 🟢 🟢 🟢 🟥

nonlinear_pem

🟢 🟢 🔶 🟢 🟥 🟢 🟥 🟥

arx

🟥 🟢 🟥 🔶 🟢 🟢 🟥 🟢

arxar

🟥 🟢 🟢 🟥 🟢 🟢 🟥 🟥

plr

🟥 🟢 🟢 🟥 🟢 🟢 🟥 🔶

era/okid

🟢 🟢 🟥 🟥 🟥 🟢 🟥 🟢

impulseest

🟥 🟢 🟥 🟥 🟢 🟢 🟥 🟥

tfest

🟥 🟥 🟢 🟥 🟢 🟢 🟢 🟥

Примечания

  • Все методы подходят для оценки систем SISO, то есть систем с одним входом и одним выходом.

  • При сравнении не указывается, оценивает ли алгоритм передаточную функцию или систему в пространстве состояний, так как их можно без каких-либо потерь преобразовывать друг в друга, просто вызывая tf/ss. Важным исключением являются неказуальные передаточные функции, которые нельзя представить как системы в пространстве состояний, однако встречаются они нечасто.

  • Некоторые методы обозначены как 🟥 в отношении нелинейности, но зачастую известные входные нелинейности можно устранить путем добавления нелинейно преобразованных версий входа в набор данных. Известные обратимые нелинейности на выходе можно устранить аналогичным образом: применив обратную нелинейность к данным перед оценкой. Только у функции newpem есть явные методы для оценки параметров нелинейности. Функция arx обозначена как 🔶, так как с правильным параметром estimator, который продвигает разреженность, можно найти наиболее подходящую нелинейность из набора вариантов. Однако явным образом такая возможность не поддерживается.

  • Пользовательские функции потерь иногда поддерживаются явным образом, например для newpem, но чаще поддерживаются посредством пользовательского средства оценки (estimator) для методов, решающих задачу в форме . Средством оценки по умолчанию в таких случаях всегда является \, то есть решается задача наименьших квадратов. Полезными альтернативами являются, например, TotalLeastSquares.tls и TotalLeastSquares.irls. С их помощью можно повысить устойчивость к шуму и т. д.

  • В особых ситуациях можно использовать любой метод с несколькими наборами данных, просто объединив их так: [d1 d2]. Это рекомендуется делать только в том случае, если состояние системы в конце первого набора данных очень близко к ее состоянию в начале второго, например если все эксперименты начинаются и завершаются в состоянии покоя в начальной точке.

  • Некоторые методы, например plr и arxar, оценивают явные модели возмущений, в то время как другие, например newpem и subspaceid, оценивают наблюдатели с помощью неявной модели возмущений. Все методы, оценивающие модели возмущений, могут учитывать входное возмущение (также называемое динамическим или возмущением по нагрузке). Функция ControlSystemIdentification.nonlinear_pem обозначена как 🔶, так как позволяет оценивать модели возмущений, но пользователь должен запрограммировать динамику модели вручную.

Другие ресурсы