exponenta event banner

idnlhw/findop

Вычислить рабочую точку для модели Хаммерстайна-Винера

Описание

пример

[X,U] = findop(sys,'steady',InputLevel,OutputLevel) возвращает значения состояния операционной точки, Xи входные значения, U, для idnlhw модель, sys, используя установившиеся входные и выходные спецификации.

пример

[X,U] = findop(sys,spec) возвращает установившуюся рабочую точку для sys используя спецификацию рабочей точки в spec.

пример

[X,U] = findop(___,Options) указывает параметры поиска оптимизации для всех предыдущих синтаксисов.

пример

[X,U,Report] = findop(___) возвращает сводный отчет о результатах поиска оптимизации для всех предыдущих синтаксисов.

пример

[X,U] = findop(sys,'snapshot',T,Uin) возвращает рабочую точку для sys в моментальном снимке моделирования в момент времени, T, используя указанный вход, Uin. Начальные состояния sys предполагается, что они равны нулю.

пример

[X,U] = findop(sys,'snapshot',T,Uin,X0) определяет начальные состояния моделирования.

Примеры

свернуть все

Загрузите оценочные данные и оцените модель Хаммерштейна-Винера.

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);

Входные аргументы

свернуть все

Модель Хаммерстайна-Винера, указанная как idnlhw объект.

Установившийся входной уровень для вычисления рабочей точки, заданный как вектор. Длина InputLevel должно равняться количеству входов, указанному в sys.

Алгоритм оптимизации предполагает, что конечные значения в InputLevel - фиксированные входные значения. Использовать NaN для указания неизвестных входных сигналов с начальными предположениями 0. Минимальные и максимальные границы для всех входов имеют значения по умолчанию -Inf и +Inf соответственно.

Установившийся выходной уровень для вычисления рабочей точки, заданный как вектор. Длина OutputLevel должно равняться количеству выходов, указанному в sys.

Значения в OutputLevel указать начальные догадки для алгоритма оптимизации. Использовать NaN для указания неизвестных выходных сигналов с начальными предположениями 0. Минимальные и максимальные границы для всех выходов имеют значения по умолчанию -Inf и +Inf соответственно.

Спецификации рабочих точек, такие как минимальные и максимальные ограничения ввода/вывода и известные входы, указанные как operspec объект.

Время снимка операционной точки, указанное как положительный скаляр. Значение T должно находиться в диапазоне [T0, N * Ts], где N - количество входных выборок, Ts - время выборки и T0 - время начала ввода (Uin.Tstart).

Ввод моделирования снимка, указанный как одно из следующих значений:

  • Временная область iddata объект с соответствующим временем выборки и размером ввода sys.

  • Матрица, содержащая столько столбцов, сколько имеется входных каналов. Если матрица имеет N строк, предполагается, что входные данные соответствуют вектору времени. (1:N)*sys.Ts.

Начальные состояния моделирования, заданные в виде вектора столбца длиной, равной числу состояний в sys. X0 обеспечивает исходные условия в момент времени, соответствующий первой входной выборке (Uin.Start, если Uin является iddata объект, или sys.Ts если Uin - двойная матрица).

Дополнительные сведения о состояниях idnlhw модель, см. Определение состояний idnlhw.

Опции поиска в рабочей точке, указанные как findopOptions набор опций.

Выходные аргументы

свернуть все

Значения состояния рабочей точки, возвращаемые в виде вектора столбца длиной, равной числу состояний модели.

Входные значения рабочих точек, возвращаемые в виде вектора столбца длиной, равной числу входных значений.

Сводный отчет результатов поиска, возвращенный в виде структуры со следующими полями:

ОбластьОписание
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 не выполняет численную оптимизацию.

Расширенные возможности

Представлен в R2008a