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: 4
               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.

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

Для получения дополнительной информации о состояниях idnlhw модель, см. Определение idnlhw состояний.

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

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

свернуть все

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

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

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

Поле Описание
SearchMethodМетод поиска используется в итеративной оценке параметра. Смотрите SearchMethod в findopOptions для получения дополнительной информации.
WhyStopУсловие завершения алгоритма поиска.
IterationsКоличество итераций оценки выполняется.
FinalCostОкончательное значение целевой функции минимизации (сумма квадратичных невязок).
FirstOrderOptimality- норма поискового вектора градиента, когда алгоритм поиска останавливается.
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 = макс. [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 свойство theidnlhw объект) путем преобразования данных входных параметров с помощью входной нелинейности: w = f (u). findop использует получившийся w, чтобы вычислить x до времени снимка состояния с помощью следующего уравнения: x (t +1) = Ax (t) + Bw (t), где [A,B,C,D] = ssdata(model.LinearModel).

Примечание

Для основанных на снимке состояния расчетов, findop не выполняет числовую оптимизацию.

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

Смотрите также

| | | |

Введенный в R2008a