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

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

Введенный в R2008a