Вычислительная рабочая точка для модели Гаммерштейна-Винера
[
возвращает значения состояния рабочей точки, 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 (<reservedrangesplaceholder1>), где [A,B,C,D] = ssdata(model.LinearModel)
, и f () является входом нелинейностью.
Когда вы задаете известные и неизвестные входные уровни. findop
использует числовую оптимизацию, чтобы минимизировать норму ошибки и вычислить рабочую точку. Общей ошибкой является объединение взносов от e1 и e2, e (t) = (e1 (t) e2 (t)), так что:
e1 запрашивает известные выходы, и алгоритм минимизирует e1 = y - g (L (x, f (<reservedrangesplaceholder6>))), где f - нелинейность входа, L (x, u) линейная модель с состояниями x, и g нелинейность выхода.
e2 применяется к неизвестным выходам, и ошибка является мерой того, находятся ли эти выходные параметры в пределах заданных минимального и максимального пределов. Если переменная находится в пределах заданных границ, соответствующая ошибка равна нулю. В противном случае ошибка равна расстоянию от ближайшей границы. Например, если у свободной выходной переменной есть значение z, и его минимальные и максимальные границы L и U, соответственно, то ошибка e2 = макс. [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
метод поиска (требует Optimization 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.