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');
Warning: "unitgain" is deprecated and may be removed in a future release. Use "idUnitGain" instead.
Warning: "pwlinear" is deprecated and may be removed in a future release. Use "idPiecewiseLinear" instead.

Создайте объект спецификации рабочей точки по умолчанию.

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,[],idPiecewiseLinear);

Найдите, что установившаяся рабочая точка, где введено 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.

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

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

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

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

свернуть все

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

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

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

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

Примечание

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

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

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

| | | |

Введенный в R2008a