exponenta event banner

mpcmove

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

Описание

Эта команда используется для моделирования контроллера MPC в замкнутом контуре с использованием дискретной модели установки. Звонить mpcmove многократно в цикле for для вычисления манипулируемой переменной и обновления состояний контроллера на каждом временном шаге.

пример

mv = mpcmove(MPCobj,xc,ym,r,v) возвращает оптимальный ход mv и обновляет состояния xc контроллера MPCobj.

Управляемая переменная mv в текущее время рассчитывается при условии:

  • объект контроллера, MPCobj,

  • текущее расчетное расширенное состояние, xc,

  • измеренные выходы установки, ym,

  • ссылки на выходные данные, r,

  • и измеренный входной сигнал возмущения, v.

Обновленное состояние контроллера возвращается во входном аргументе xc.

пример

[mv,info] = mpcmove(MPCobj,xc,ym,r,v) возвращает дополнительную информацию о задаче оптимизации, решенной для вычисления mv.

[___] = mpcmove(___,options) переопределяет ограничения и веса по умолчанию в MPCobj со значениями, указанными в Optionsодин mpcmoveopt объект. Использовать Options для обеспечения корректировки ограничений и весов во время выполнения во время моделирования с замкнутым контуром.

Примеры

свернуть все

Выполнить моделирование по замкнутому контуру установки с одним СН и одним измеренным ОВ.

Определите модель завода и создайте прогнозирующий контроллер модели с ограничениями СН.

ts = 2;
Plant = ss(0.8,0.5,0.25,0,ts);
MPCobj = mpc(Plant);
-->The "PredictionHorizon" property of "mpc" object is empty. Trying PredictionHorizon = 10.
-->The "ControlHorizon" property of the "mpc" object is empty. Assuming 2.
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.
MPCobj.MV(1).Min = -2;
MPCobj.MV(1).Max = 2;

Инициализируйте и возвращайте объект-дескриптор в состояние контроллера для моделирования. Используйте свойства состояния по умолчанию.

xc = mpcstate(MPCobj);
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Установите опорный сигнал. Измеренное возмущение отсутствует.

r = 1;

Моделирование ответа с замкнутым контуром путем вызова mpcmove итеративно.

t = [0:ts:40];
N = length(t);
y = zeros(N,1); 
u = zeros(N,1); 
for i = 1:N
    % simulated plant and predictive model are identical
    y(i) = 0.25*xc.Plant;
    u(i) = mpcmove(MPCobj,xc,y(i),r);
end

y и u хранят значения OV и MV соответственно.

Проанализируйте результат.

[ts,us] = stairs(t,u);
plot(ts,us,'r-',t,y,'b--')
legend('MV','OV')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent MV, OV.

Изменение верхней границы СН при моделировании с использованием mpcmoveopt объект.

MPCopt = mpcmoveopt;
MPCopt.MVMin = -2;
MPCopt.MVMax = 2;

Смоделировать отклик по замкнутому контуру и ввести изменение верхнего предела в реальном времени через восемь секунд (пятый этап итерации).

xc = mpcstate(MPCobj);
y = zeros(N,1);
u = zeros(N,1);
for i = 1:N
    % simulated plant and predictive model are identical
    y(i) = 0.25*xc.Plant;
    if i == 5
    	MPCopt.MVMax = 1;
    end
    u(i) = mpcmove(MPCobj,xc,y(i),r,[],MPCopt);
end

Проанализируйте результат.

[ts,us] = stairs(t,u);
plot(ts,us,'r-',t,y,'b--')
legend('MV','OV')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent MV, OV.

Определите модель завода.

ts = 2;
Plant = ss(0.8,0.5,0.25,0,ts);

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

MPCobj = mpc(Plant,ts,10,[2 3 5]);
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.
MPCobj.MV(1).Min = -2;
MPCobj.MV(1).Max = 2;
MPCobj.MV(1).RateMin = -1;
MPCobj.MV(1).RateMax = 1;

Инициализируйте (и возвращайте дескриптор) внутреннее состояние контроллера для моделирования.

xc = mpcstate(MPCobj);
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
xc.Plant = 2.8;
xc.LastMove = 0.85;

Вычислите оптимальное перемещение элемента управления в текущее время.

y = 0.25*xc.Plant;
r = 1;
[u,Info] = mpcmove(MPCobj,xc,y,r);

Проанализируйте прогнозируемые оптимальные последовательности.

[ts,us] = stairs(Info.Topt,Info.Uopt);
plot(ts,us,'r-',Info.Topt,Info.Yopt,'b--')
legend('MV','OV')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent MV, OV.

plot игнорирует Info.Uopt(end) как есть NaN.

Изучите оптимальную стоимость.

Info.Cost
ans = 0.0793

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

свернуть все

Контроллер прогнозирования модели, указанный как объект контроллера MPC. Для создания контроллера MPC используйте mpc.

Дескриптор текущего состояния контроллера, указанный как mpcstate объект.

Перед началом моделирования с помощью mpcmove, инициализировать контроллер и вернуть дескриптор в его состояние с помощью xc = mpcstate(MPCobj). Затем измените свойства по умолчанию xc по обстоятельствам. mpcmove изменяет состояние контроллера. Объект-дескриптор xc всегда отражают текущее (обновленное) состояние контроллера.

Если используется оценка состояния по умолчанию, mpcmove ожидает xc представлять xc[n|n-1]. mpcmove обновляет значения состояния в предыдущем интервале управления с помощью этой информации. Поэтому программно обновлять не следует xc вообще. В оценщике состояния по умолчанию используется установившийся фильтр Калмана.

При использовании пользовательской оценки состояния mpcmove ожидает xc представлять xc[n|n]. Поэтому до каждого mpcmove команда, необходимо установить xc.Plant, xc.Disturbance, и xc.Noise к наилучшим оценкам этих состояний (с использованием последних измерений) на текущем интервале управления.

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

Если используется пользовательская оценка состояния, установите ym = [].

Исходные значения выхода установки, заданные как массив p-by-Ny, где p - горизонт прогнозирования MPCobj и Ny - количество выходов. Ряд r(i,:) определяет опорные значения на шаге i горизонта прогнозирования.

r должен содержать хотя бы одну строку. Если r содержит менее p строк, mpcmove дублирует последнюю строку для заполнения массива p-by-Ny. Таким образом, при вводе только одной строки для всего горизонта прогнозирования применяется постоянная ссылка.

Для реализации предварительного просмотра ссылок, который может улучшить отслеживание, когда ссылка изменяется предсказуемым образом, r должны содержать ожидаемые изменения, в идеале для p шагов.

Текущие и ожидаемые измеренные возмущения, определенные как (p + 1) -by-Nmd массив, где p - горизонт прогнозирования MPCobj Nmd - количество измеренных возмущений. Первая строка v определяет текущие измеренные значения возмущений. Ряд v(i+1,:) определяет ожидаемые значения возмущений на шаге i горизонта прогнозирования.

Моделирование измеряемых возмущений обеспечивает обратное управляющее действие. Если модель завода не включает измеренные возмущения, используйте v = [].

Если модель включает измеренные возмущения, v должен содержать хотя бы одну строку. Если v содержит менее p + 1 строк,mpcmove дублирует последнюю строку для заполнения массива (p + 1) -by-Nmd. При вводе только одной строки для всего горизонта прогнозирования применяется постоянное измеренное возмущение.

Для выполнения предварительного просмотра возмущений, который может улучшить отслеживание, когда возмущение изменяется предсказуемым образом, v должны содержать ожидаемые изменения, в идеале для p шагов.

Параметры времени выполнения, указанные как mpcmoveopt объект. Использовать options для переопределения выбранных свойств MPCobj во время моделирования. Эти параметры применяются к текущему mpcmove время только мгновенное. Используя options дает тот же результат, что и при переопределении или изменении MPCobj перед каждым вызовом mpcmove, но включает значительно меньше накладных расходов. Используя options эквивалентно использованию блока MPC Controller Simulink ® в сочетании с дополнительными входными сигналами, изменяющими настройки контроллера, такими как ограничения MV и OV.

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

свернуть все

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

Если контроллер обнаруживает невыполнимую задачу оптимизации или сталкивается с численными трудностями в решении плохо обусловленной задачи оптимизации, mv остается на своем последнем успешном решении, xc.LastMove.

В противном случае, если задача оптимизации выполнима и решатель достигает указанного максимального числа итераций без нахождения оптимального решения, mv:

  • Остается на своем последнем успешном решении, если Optimizer.UseSuboptimalSolution свойство контроллера: false.

  • Достигнуто ли неоптимальное решение после окончательной итерации, если Optimizer.UseSuboptimalSolution свойство контроллера: true. Дополнительные сведения см. в разделе Неоптимальное решение QP.

Подробные данные решения, возвращенные в виде структуры со следующими полями.

Предсказанные оптимальные манипулируемые корректировки (перемещения) переменных, возвращаемые как (p + 1) -byNmv массив, где p - горизонт прогнозирования, а Nmv - количество манипулируемых переменных.

Uopt(i,:) содержит вычисленные оптимальные значения в момент времени k+i-1, для i = 1,...,p, где k - текущее время. Первая строка Info.Uopt содержит те же значения манипулируемой переменной, что и выходной аргумент mv. Поскольку контроллер не вычисляет оптимальные перемещения управления в момент времени k+p, Uopt(p+1,:) равно Uopt(p,:).

Оптимальная последовательность выходных переменных, возвращаемая как массив (p + 1) -by-Ny, где p - горизонт прогнозирования, а Ny - количество выходов.

Первая строка Info.Yopt содержит вычисленные выходные данные в момент времени k на основе расчетных состояний и измеренных возмущений; это не измеренный выходной сигнал в момент времени k. Yopt(i,:) содержит прогнозируемые выходные значения в момент времени k+i-1, для i = 1,...,p+1.

Yopt(i,:) содержит вычисленные выходные значения в момент времени k+i-1, для i = 2,...,p+1, где k - текущее время. Yopt(1,:) вычисляется на основе оцененных состояний и измеренных возмущений.

Оптимальная последовательность состояний модели прогнозирования, возвращаемая в виде массива (p + 1) - by-Nx, где p - горизонт прогнозирования, а Nx - количество состояний в установке и неизмеренных моделях возмущений (состояния из моделей шума не включаются).

Xopt(i,:) содержит вычисленные значения состояния в момент времени k+i-1, для i = 2,...,p+1, где k - текущее время. Xopt(1,:) совпадает со значениями состояния текущего состояния.

Временные интервалы, возвращаемые в виде вектора столбца длиной p + 1.Topt(1) = 0, представляющее текущее время. Последующие шаги времени Topt(i) даны Ts*(i-1), где Ts = MPCobj.Ts - время выборки контроллера.

Использовать Topt при печати Uopt, Xopt, или Yopt последовательности.

Ослабьте переменную, ε, используемый в ограничительном смягчении, возвращенном как 0 или положительное скалярное значение.

  • start= 0 - Все ограничения были удовлетворены для всего горизонта прогнозирования.

  • start> 0 - Нарушено по крайней мере одно мягкое ограничение. Если нарушено более одного ограничения, λ представляет наихудшее нарушение мягкого ограничения (масштабируется значениями ECR для каждого ограничения).

Дополнительные сведения см. в разделе Проблема оптимизации.

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

  • Положительное целое число - количество итераций, необходимых для решения задачи оптимизации, определяющей оптимальные последовательности.

  • 0 - Не удалось решить задачу оптимизации в указанном максимальном числе итераций.

  • –1 - Проблема оптимизации была неосуществима. Задача оптимизации неосуществима, если ни одно решение не может удовлетворить все жесткие ограничения.

  • –2 - При решении задачи оптимизации произошла числовая ошибка.

Состояние решения по оптимизации, возвращенное как одно из следующих:

  • 'feasible' - Получен оптимальный раствор (Iterations > 0)

  • 'infeasible' - Решатель обнаружил проблему без выполнимого решения (Iterations = -1) или произошла числовая ошибка (Iterations = –2)

  • 'unreliable' - Решателю не удалось сойтись (Iterations = 0). В этом случае, если MPCobj.Optimizer.UseSuboptimalSolution является false, u замерзает при самом последнем успешном решении. В противном случае используется неоптимальное решение, найденное во время последней итерации решателя.

Стоимость целевой функции, возвращаемая как неотрицательное скалярное значение. Стоимость количественно определяет степень достижения контролером своих целей. Дополнительные сведения см. в разделе Проблема оптимизации.

Значение стоимости имеет значение только тогда, когда QPCode = 'feasible', или когда QPCode = 'feasible' и MPCobj.Optimizer.UseSuboptimalSolution является true.

Совет

  • mpcmove обновления xc, даже если это входной аргумент.

  • Если ym, r или v указывается как [], mpcmove использует соответствующие MPCobj.Model.Nominal вместо этого значение.

  • Чтобы просмотреть прогнозируемое оптимальное поведение для всего горизонта прогнозирования, постройте график соответствующих последовательностей, предоставленных в Info.

  • Чтобы определить статус оптимизации, проверьте Info.Iterations и Info.QPCode.

Альтернативы

  • Использовать sim для моделирования рассогласования и шума установки, если не используются ограничения времени выполнения или изменения веса.

  • Используйте приложение MPC Designer для интерактивного проектирования и моделирования прогнозирующих контроллеров моделей.

  • Используйте блок контроллера MPC в Simulink и для генерации кода.

  • Использовать mpcmoveCodeGeneration для генерации кода.

Представлен до R2006a