Вычислить рабочую точку для модели Хаммерстайна-Винера
[ возвращает значения состояния операционной точки, X,U] = findop(sys,'steady',InputLevel,OutputLevel)Xи входные значения, U, для idnlhw модель, sys, используя установившиеся входные и выходные спецификации.
Загрузите оценочные данные и оцените модель Хаммерштейна-Винера.
load twotankdata;
z = iddata(y,u,1);
M = nlhw(z,[5 1 3]);Найти установившуюся рабочую точку, в которой установлен входной уровень 1 и выход неизвестен.
[X,U] = findop(M,'steady',1,NaN);Оцените модель Хаммерштейна-Винера.
load iddata7; orders = [4*ones(1,2) 2*ones(1,2) 3*ones(1,2)]; M = nlhw(z7,orders,'unitgain','pwlinear');
Создайте объект спецификации операционной точки по умолчанию.
spec = operspec(M);
Установите значения для входных сигналов.
spec.Input.Value(1) = -1; spec.Input.Value(2) = 1;
Установите максимальное и минимальное значения для выходного сигнала.
spec.Output.Max = 10; spec.Output.Min = -10;
Нахождение установившейся рабочей точки с использованием заданных спецификаций.
[X,U] = findop(M,spec);
Загрузите оценочные данные и оцените модель Хаммерштейна-Винера.
load twotankdata;
z = iddata(y,u,1);
M = nlhw(z,[5 1 3]);Создание значения по умолчанию findopOptions набор опций.
opt = findopOptions(M);
Измените набор опций, чтобы задать самый крутой метод поиска градиента спуска с максимум 50 итерациями.
opt.SearchMethod = 'grad';
opt.SearchOptions.MaxIterations = 50;Найдите установившуюся рабочую точку, используя указанные опции.
[X,U] = findop(M,'steady',1,NaN,opt);Загрузите оценочные данные и оцените модель Хаммерштейна-Винера.
load iddata7; orders = [4*ones(1,2) 2*ones(1,2) 3*ones(1,2)]; M = nlhw(z7,orders,'unitgain','pwlinear');
Найти установившуюся рабочую точку, в которой для входа 1 установлено значение 1 и вход 2 является неограниченным. Начальное предположение для выходного значения: 2.
[X,U,R] = findop(M,'steady',[1 NaN],2);Просмотрите сводный отчет.
disp(R);
SearchMethod: 'auto'
WhyStop: 'Near (local) minimum, (norm(g) < tol).'
Iterations: 3
FinalCost: 0
FirstOrderOptimality: 0
SignalLevels: [1x1 struct]
Загрузите оценку оценочных данных модели Хаммерштейна-Винера.
load twotankdata;
z = iddata(y,u,1);
M = nlhw(z,[5 1 3]);Найдите имитационный снимок через 10 секунд, предполагая, что начальное состояние равно нулю.
[X,U] = findop(M,'snapshot',10,z);Загрузите оценочные данные и оцените модель Хаммерштейна-Винера.
load twotankdata
z = iddata(y,u,1);
M = nlhw(z,[5 1 3]);Создайте вектор начального состояния.
X0 = [10;10;5;5;1;1;0];
Найдите имитационный снимок через 10 секунд, используя указанные начальные состояния.
[X,U] = findop(M,'snapshot',10,z,X0);sys - модель Хаммерстайна-Винераidnlhw объектМодель Хаммерстайна-Винера, указанная как idnlhw объект.
InputLevel - Установившийся входной уровеньУстановившийся входной уровень для вычисления рабочей точки, заданный как вектор. Длина InputLevel должно равняться количеству входов, указанному в sys.
Алгоритм оптимизации предполагает, что конечные значения в InputLevel - фиксированные входные значения. Использовать NaN для указания неизвестных входных сигналов с начальными предположениями 0. Минимальные и максимальные границы для всех входов имеют значения по умолчанию -Inf и +Inf соответственно.
OutputLevel - Установившийся выходной уровеньУстановившийся выходной уровень для вычисления рабочей точки, заданный как вектор. Длина OutputLevel должно равняться количеству выходов, указанному в sys.
Значения в OutputLevel указать начальные догадки для алгоритма оптимизации. Использовать NaN для указания неизвестных выходных сигналов с начальными предположениями 0. Минимальные и максимальные границы для всех выходов имеют значения по умолчанию -Inf и +Inf соответственно.
spec - Технические характеристики рабочих точекoperspec объектСпецификации рабочих точек, такие как минимальные и максимальные ограничения ввода/вывода и известные входы, указанные как operspec объект.
T - Время снимка операционной точкиВремя снимка операционной точки, указанное как положительный скаляр. Значение T должно находиться в диапазоне [T0, N * Ts], где N - количество входных выборок, Ts - время выборки и T0 - время начала ввода (Uin.Tstart).
Uin - Вход моделирования снимкаiddata объект | матрицаВвод моделирования снимка, указанный как одно из следующих значений:
Временная область iddata объект с соответствующим временем выборки и размером ввода sys.
Матрица, содержащая столько столбцов, сколько имеется входных каналов. Если матрица имеет N строк, предполагается, что входные данные соответствуют вектору времени. (1:N)*sys.Ts.
X0 - Начальные состоянияНачальные состояния моделирования, заданные в виде вектора столбца длиной, равной числу состояний в sys. X0 обеспечивает исходные условия в момент времени, соответствующий первой входной выборке (Uin.Start, если Uin является iddata объект, или sys.Ts если Uin - двойная матрица).
Дополнительные сведения о состояниях idnlhw модель, см. Определение состояний idnlhw.
Options - Параметры поиска в операционной точкеfindopOptions набор опцийОпции поиска в рабочей точке, указанные как findopOptions набор опций.
X - Значения состояния рабочей точкиЗначения состояния рабочей точки, возвращаемые в виде вектора столбца длиной, равной числу состояний модели.
U - Входные значения рабочих точекВходные значения рабочих точек, возвращаемые в виде вектора столбца длиной, равной числу входных значений.
Report - Сводка результатов поискаСводный отчет результатов поиска, возвращенный в виде структуры со следующими полями:
| Область | Описание |
|---|---|
SearchMethod | Метод поиска, используемый для итеративной оценки параметров. Посмотрите SearchMethod в findopOptions для получения дополнительной информации. |
WhyStop | Условие завершения алгоритма поиска. |
Iterations | Количество выполненных итераций оценки. |
FinalCost | Конечное значение целевой функции минимизации (сумма квадратичных ошибок). |
FirstOrderOptimality | ∞-norm вектора градиента поиска при завершении алгоритма поиска. |
SignalLevels | Структура, содержащая поля Input и Output, которые являются уровнями входного и выходного сигнала рабочей точки соответственно. |
findop вычисляет рабочую точку на основе параметров установившейся рабочей точки или на снимке моделирования.
Для вычисления установившейся рабочей точки вызовите findop с использованием любого из следующих синтаксисов:
[X,U] = findop(sys,'steady',InputLevel,OutputLevel) [X,U] = findop(sys,spec)
findop использует другой подход для вычисления установившейся рабочей точки в зависимости от того, какой объем информации вы предоставляете для этого расчета:
При указании значений для всех уровней ввода (нет NaN значения). Для данного входного уровня U значения состояния равновесия X = inv (I-A) * B * f (U), где[A,B,C,D] = ssdata(model.LinearModel), и f () - входная нелинейность.
При указании известных и неизвестных уровней ввода. findop использует численную оптимизацию для минимизации нормы ошибки и вычисления рабочей точки. Общая ошибка представляет собой объединение взносов от e1 и e2, e (t) = (e1 (t) e2 (t)), так что:
e1 применяется для известных выходов, и алгоритм минимизирует e1 = y- g (L (x, f (u))), где f - входная нелинейность, L (x, u) - линейная модель со состояниями x, а g - выходная нелинейность.
e2 применяется для неизвестных выходов, и ошибка является мерой того, находятся ли эти выходы в указанных минимальных и максимальных пределах. Если переменная находится в пределах указанных границ, соответствующая ошибка равна нулю. В противном случае ошибка будет равна расстоянию от ближайшей границы. Например, если свободная выходная переменная имеет значение z, а ее минимальная и максимальная границы равны L и U соответственно, то ошибка равна e2 = max [z-U, L-z, 0 ].
Независимыми переменными для задачи минимизации являются неизвестные входные данные. В определении ошибки e как входные u, так и состояния x являются свободными переменными. Чтобы получить выражение ошибки, содержащее только неизвестные входные данные в качестве свободных переменных, алгоритм findop задает состояния как функцию входных данных путем навязывания установившихся условий: x = inv (I-A) * B * f (U), где A и B - параметры состояния-пространства, соответствующие линейной модели L (x, u). Таким образом, подстановка x = inv (I-A) * B * f (U) в функцию ошибки приводит к выражению ошибки, которое содержит только неизвестные входные данные в качестве свободных переменных, вычисленных алгоритмом оптимизации.
При использовании синтаксиса [X,U] = findop(sys,'snapshot',T,UIN,X0)алгоритм моделирует выходные данные модели до момента создания снимка; T. В момент снимка алгоритм вычисляет входные данные для блока линейной модели модели Хаммерштейна-Винера (LinearModel имуществаidnlhw объект) путем преобразования заданных входов с использованием входной нелинейности: w = f (u ).findop использует результирующее значение w для вычисления x до момента создания снимка с использованием следующего уравнения: x (t + 1) = Ax (t) + Bw (t), где[A,B,C,D] = ssdata(model.LinearModel).
Примечание
Для вычислений на основе снимков, findop не выполняет численную оптимизацию.
Поддержка параллельных вычислений доступна для оценки с использованием lsqnonlin метод поиска (требуется Toolbox™ оптимизации). Чтобы включить параллельные вычисления, используйте findopOptions, комплект SearchMethod кому 'lsqnonlin', и установить SearchOptions.Advanced.UseParallel кому true.
Например:
opt = findopOptions(idnlhw);
opt.SearchMethod = 'lsqnonlin';
opt.SearchOptions.Advanced.UseParallel = true;
findopOptions | idnlarx/findop | idnlhw | idnlhw/operspec | sim
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.