ControlSystemIdentification
Идентификация системы для ControlSystems.jl.
Идентификация системы — это процесс оценки динамической модели на основе данных. Этот пакет предназначен в первую очередь для оценки линейных моделей с постоянными параметрами (ЛПП) в форме систем в пространстве состояний
или в форме передаточных функций
Имеются также возможности для оценки нелинейных моделей Гаммерштейна — Винера и идентификации линейных либо нелинейных моделей методом серого ящика в непрерывном или дискретном времени.
Данный пакет реализован на бесплатном языке программирования Julia с открытым исходным кодом.
Если вы не имеете опыта работы с этим пакетом, начните ознакомление с ним с раздела документации Идентификационные данные. Примеры доступны в разделе «Примеры» и в форме интерактивных скриптов Jupyter. Ниже приводится вступительное видео (пример идентификации системы начинается примерно на 55-й минуте).
См. также список воспроизведения на Youtube с руководствами по использованию этого пакета.
Обзор алгоритмов
В приведенной ниже таблице указано, какие алгоритмы оценки применимы в тех или иных сценариях. Зеленый кружок (🟢) указывает, что метод хорошо подходит для ситуации, оранжевый ромб (🔶) — что метод может быть применим, но работает не лучшим образом, а красный квадрат (🟥) — что метод в его стандартной форме плохо подходит для ситуации. Таблица не является исчерпывающей и дает лишь общее представление о применимости различных алгоритмов.
Estimation method | SIMO | MISO | Disturbance models | Nonlinearities | Custom loss | Time domain | Frequency domain | Multiple dataset |
---|---|---|---|---|---|---|---|---|
|
🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟥 | 🟥 |
|
🟢 | 🟢 | 🟢 | 🟥 | 🟢 | 🟢 | 🟢 | 🟥 |
|
🟢 | 🟢 | 🔶 | 🟢 | 🟥 | 🟢 | 🟥 | 🟥 |
|
🟥 | 🟢 | 🟥 | 🔶 | 🟢 | 🟢 | 🟥 | 🟢 |
|
🟥 | 🟢 | 🟢 | 🟥 | 🟢 | 🟢 | 🟥 | 🟥 |
|
🟥 | 🟢 | 🟢 | 🟥 | 🟢 | 🟢 | 🟥 | 🔶 |
|
🟢 | 🟢 | 🟥 | 🟥 | 🟥 | 🟢 | 🟥 | 🟢 |
|
🟥 | 🟢 | 🟥 | 🟥 | 🟢 | 🟢 | 🟥 | 🟥 |
|
🟥 | 🟥 | 🟢 | 🟥 | 🟢 | 🟢 | 🟢 | 🟥 |
Примечания
-
Все методы подходят для оценки систем SISO, то есть систем с одним входом и одним выходом.
-
При сравнении не указывается, оценивает ли алгоритм передаточную функцию или систему в пространстве состояний, так как их можно без каких-либо потерь преобразовывать друг в друга, просто вызывая
tf/ss
. Важным исключением являются неказуальные передаточные функции, которые нельзя представить как системы в пространстве состояний, однако встречаются они нечасто. -
Некоторые методы обозначены как 🟥 в отношении нелинейности, но зачастую известные входные нелинейности можно устранить путем добавления нелинейно преобразованных версий входа в набор данных. Известные обратимые нелинейности на выходе можно устранить аналогичным образом: применив обратную нелинейность к данным перед оценкой. Только у функции
newpem
есть явные методы для оценки параметров нелинейности. Функцияarx
обозначена как 🔶, так как с правильным параметромestimator
, который продвигает разреженность, можно найти наиболее подходящую нелинейность из набора вариантов. Однако явным образом такая возможность не поддерживается. -
Пользовательские функции потерь иногда поддерживаются явным образом, например для
newpem
, но чаще поддерживаются посредством пользовательского средства оценки (estimator
) для методов, решающих задачу в форме . Средством оценки по умолчанию в таких случаях всегда является\
, то есть решается задача наименьших квадратов. Полезными альтернативами являются, например,TotalLeastSquares.tls
иTotalLeastSquares.irls
. С их помощью можно повысить устойчивость к шуму и т. д. -
В особых ситуациях можно использовать любой метод с несколькими наборами данных, просто объединив их так:
[d1 d2]
. Это рекомендуется делать только в том случае, если состояние системы в конце первого набора данных очень близко к ее состоянию в начале второго, например если все эксперименты начинаются и завершаются в состоянии покоя в начальной точке. -
Некоторые методы, например
plr
иarxar
, оценивают явные модели возмущений, в то время как другие, напримерnewpem
иsubspaceid
, оценивают наблюдатели с помощью неявной модели возмущений. Все методы, оценивающие модели возмущений, могут учитывать входное возмущение (также называемое динамическим или возмущением по нагрузке). ФункцияControlSystemIdentification.nonlinear_pem
обозначена как 🔶, так как позволяет оценивать модели возмущений, но пользователь должен запрограммировать динамику модели вручную.
Другие ресурсы
-
Список воспроизведения на Youtube с руководствами по использованию этого пакета.
-
Для оценки линейных нестационарных моделей (LTV) используйте пакет LTVModels.jl.
-
Для оценки линейных и нелинейных моделей серого ящика в непрерывном времени используйте пакет DifferentialEquations.jl (оценка параметров).
-
Оценка нелинейных моделей черного ящика в непрерывном времени: DiffEqFlux.jl и DataDrivenDiffEq.jl.
-
Расширенные возможности спектральной оценки, взаимной когерентности и т. д. можно найти в пакете LPVSpectral.jl.
-
Этот пакет хорошо взаимодействует с MonteCarloMeasurements.jl. См. пример файла.
-
Оценку состояний упрощает пакет LowLevelParticleFilters.jl.