mpcmoveopt

Набор опций для mpcmove функция

Описание

Чтобы задать опции для mpcmove, mpcmoveAdaptive, и mpcmoveMultiple функций, использовать mpcmoveopt объект.

Используя этот объект, можно задать значения во время выполнения для подмножества свойств контроллера, таких как веса настройки и ограничения. Если вы не задаете значение для одного из mpcmoveopt свойства, вместо этого используется значение соответствующей опции контроллера.

Создание

Синтаксис

Описание

пример

options = mpcmoveopt создает набор опций по умолчанию для mpcmove функция. Чтобы изменить значения свойств, используйте запись через точку.

Свойства

расширить все

Выход весов настройки переменных, которые заменяют Weights.OutputVariables свойство контроллера во время исполнения, заданное как вектор или массив неотрицательных значений.

Чтобы использовать те же веса на горизонте предсказания, задайте вектор-строку Ny длины, где Ny количество переменных выходов.

Чтобы изменить веса настройки над горизонтом предсказания от времени k + 1 до времени k + p, задайте массив с Ny столбцами и до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит выходные переменные веса настройки для одного шага горизонта предсказания. Если вы задаете меньше p строк, веса в последней строке используются для остальных шагов горизонта предсказания.

Формат OutputWeights должен совпадать с форматом Weights.OutputVariables свойство объекта контроллера. Например, вы не можете задать постоянные веса через горизонт предсказания в объекте контроллера, а затем задать изменяющиеся во времени веса, используя mpcmoveopt.

Манипулируемые веса настройки переменных, которые заменяют Weights.ManipulatedVariables свойство контроллера во время исполнения, заданное как вектор или массив неотрицательных значений.

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

Чтобы варьировать веса настройки по горизонту предсказания от времени k времени k + p -1, задайте массив с Nmv столбцами и до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит манипулированные переменные веса настройки для одного шага горизонта предсказания. Если вы задаете меньше p строк, веса в последней строке используются для остальных шагов горизонта предсказания.

Формат MVWeights должен совпадать с форматом Weights.ManipulatedVariables свойство объекта контроллера. Например, вы не можете задать постоянные веса через горизонт предсказания в объекте контроллера, а затем задать изменяющиеся во времени веса, используя mpcmoveopt.

Манипулируемые веса настройки переменной скорости, которые заменяют Weights.ManipulatedVariablesRate свойство контроллера во время исполнения, заданное как вектор или массив неотрицательных значений.

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

Чтобы варьировать веса настройки по горизонту предсказания от времени k времени k + p -1, задайте массив с Nmv столбцами и до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит управляемые веса настройки переменной скорости для одного шага горизонта предсказания. Если вы задаете меньше p строк, веса в последней строке используются для остальных шагов горизонта предсказания.

Формат MVRateWeights должен совпадать с форматом Weights.ManipulatedVariablesRate свойство объекта контроллера. Например, вы не можете задать постоянные веса через горизонт предсказания в объекте контроллера, а затем задать изменяющиеся во времени веса, используя mpcmoveopt.

Уменьшите вес настройки переменной, который заменяет Weights.ECR свойство контроллера во время исполнения, заданное как положительная скалярная величина.

Выход переменные нижние границы, заданные как вектор-строка длины Ny или как матрица с Ny столбцами, где Ny - количество переменных выходов.

Если вы не указали OutputVariables(i).Min свойство mpc объект, затем установка OutputMin приводит к ошибке при выполнении mpcmove.

Чтобы изменить границы над горизонтом предсказания от времени k + 1 до времени k + p, задайте матрицу с Ny столбцами и до p строками. Здесь Ny количество выходов на объекте, k текущее время, и p является горизонтом предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке используются для остальных шагов горизонта предсказания.

OutputMin(:,i) заменяет OutputVariables(i).Min свойство mpc объект во время выполнения. Поведение замещения зависит от размерностей обеих переменных.

Скалярные OutputVariables(i).Min в mpc объект (постоянная граница для iвыход объекта для применения ко всем этапам предсказания)

OutputMin РазмерностьПоведение при замене
Скалярные OutputMin (один выход, постоянная граница)OutputMin заменяет постоянную границу, заданную в OutputVariables(i).Min
Вектор-столбец OutputMin (один выход, изменяющаяся во времени граница)OutputMin заменяет постоянную границу, заданную в OutputVariables(i).Min с изменяющейся во времени границей.
Вектор-строка OutputMin (несколько выходов, постоянные границы)OutputMin(i) заменяет постоянную границу, заданную в OutputVariables(i).Min
Матричные OutputMin (несколько выходов, изменяющиеся во времени границы)OutputMin(:,i) заменяет постоянную границу, заданную в OutputVariables(i).Min с изменяющейся во времени границей.

Векторные OutputVariables(i).Min в mpc объект (изменяющаяся во времени граница для iвыход объекта с различными значениями на разных шагах предсказания)

OutputMin РазмерностьПоведение при замене
Скалярные OutputMin (один выход, постоянная граница)OutputMin заменяет первую конечную запись в OutputVariables.Min и оставшиеся записи в OutputVariables.Min сдвиг вверх или вниз с таким же количеством перемещений, чтобы сохранить профиль, заданный исходной OutputVariables.Min вектор.
Вектор-столбец OutputMin (один выход, изменяющаяся во времени граница)OutputMin заменяет изменяющуюся во времени границу, заданную в OutputVariables(i).Min, и исходный связанный профиль отбрасывается.
Вектор-строка OutputMin (несколько выходов, постоянные границы)OutputMin(i) заменяет первую конечную запись в OutputVariables(i).Min и оставшиеся записи в OutputVariables(i).Min сдвиг вверх или вниз с таким же количеством перемещений, чтобы сохранить профиль, заданный исходной OutputVariables(i).Min вектор.
Матричные OutputMin (несколько выходов, изменяющиеся во времени границы).OutputMin(:,i) заменяет изменяющуюся во времени границу, заданную в OutputVariables(i).Min, и исходный связанный профиль отбрасывается.

Выход верхние границы, заданные как вектор-строка длины Ny или как матрица с Ny столбцами, где Ny - количество переменных выходов.

Если вы не указали OutputVariables(i).Max свойство mpc объект, затем установка OutputMax приводит к ошибке при выполнении mpcmove.

Чтобы изменить границы над горизонтом предсказания от времени k + 1 до времени k + p, задайте матрицу с Ny столбцами и до p строками. Здесь Ny количество выходов на объекте, k текущее время, и p является горизонтом предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке используются для остальных шагов горизонта предсказания.

OutputMax(:,i) заменяет OutputVariables(i).Max свойство mpc объект во время выполнения. Поведение замещения зависит от размерностей обеих переменных.

Скалярные OutputVariables(i).Max в mpc объект (постоянная граница для iвыход объекта для применения ко всем этапам предсказания)

OutputMax РазмерностьПоведение при замене
Скалярные OutputMax (один выход, постоянная граница)OutputMax заменяет постоянную границу, заданную в OutputVariables(i).Max
Вектор-столбец OutputMax (один выход, изменяющаяся во времени граница)OutputMax заменяет постоянную границу, заданную в OutputVariables(i).Max с изменяющейся во времени границей.
Вектор-строка OutputMax (несколько выходов, постоянные границы)OutputMax(i) заменяет постоянную границу, заданную в OutputVariables(i).Max
Матричные OutputMax (несколько выходов, изменяющиеся во времени границы)OutputMax(:,i) заменяет постоянную границу, заданную в OutputVariables(i).Max с изменяющейся во времени границей.

Векторные OutputVariables(i).Max в mpc объект (изменяющаяся во времени граница для iвыход объекта с различными значениями на разных шагах предсказания)

OutputMax РазмерностьПоведение при замене
Скалярные OutputMax (один выход, постоянная граница)OutputMax заменяет первую конечную запись в OutputVariables.Max и оставшиеся записи в OutputVariables.Max сдвиг вверх или вниз с таким же количеством перемещений, чтобы сохранить профиль, заданный исходной OutputVariables.Max вектор.
Вектор-столбец OutputMax (один выход, изменяющаяся во времени граница)OutputMax заменяет изменяющуюся во времени границу, заданную в OutputVariables(i).Max, и исходный связанный профиль отбрасывается.
Вектор-строка OutputMax (несколько выходов, постоянные границы)OutputMax(i) заменяет первую конечную запись в OutputVariables(i).Max и оставшиеся записи в OutputVariables(i).Max сдвиг вверх или вниз с таким же количеством перемещений, чтобы сохранить профиль, заданный исходной OutputVariables(i).Max вектор.
Матричные OutputMax (несколько выходов, изменяющиеся во времени границы).OutputMax(:,i) заменяет изменяющуюся во времени границу, заданную в OutputVariables(i).Max, и исходный связанный профиль отбрасывается.

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

Если вы не указали ManipulatedVariables(i).Min свойство mpc объект, затем установка MVMin приводит к ошибке при выполнении mpcmove.

Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, задайте матрицу с Nmv столбцами и до p строками. Здесь Nmv - количество манипулируемых переменных, k - текущее время и p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке используются для остальных шагов горизонта предсказания.

MVMin(:,i) заменяет ManipulatedVariables(i).Min свойство mpc объект во время выполнения. Поведение замещения зависит от размерностей обеих переменных.

Скалярные ManipulatedVariables(i).Min в mpc объект (постоянная граница для iвторая манипулированная переменная, которая будет применена ко всем шагам предсказания)

MVMin РазмерностьПоведение при замене
Скалярные MVMin (один выход, постоянная граница)MVMin заменяет постоянную границу, заданную в ManipulatedVariables(i).Min
Вектор-столбец MVMin (один выход, изменяющаяся во времени граница)MVMin заменяет постоянную границу, заданную в ManipulatedVariables(i).Min с изменяющейся во времени границей.
Вектор-строка MVMin (несколько выходов, постоянные границы)MVMin(i) заменяет постоянную границу, заданную в ManipulatedVariables(i).Min
Матричные MVMin (несколько выходов, изменяющиеся во времени границы)MVMin(:,i) заменяет постоянную границу, заданную в ManipulatedVariables(i).Min с изменяющейся во времени границей.

Векторные ManipulatedVariables(i).Min в mpc объект (изменяющаяся во времени граница для ith-я манипулированная переменная с различными значениями на разных шагах предсказания)

MVMin РазмерностьПоведение при замене
Скалярные MVMin (один выход, постоянная граница)MVMin заменяет первую конечную запись в ManipulatedVariables.Min и оставшиеся записи в ManipulatedVariables.Min сдвиг вверх или вниз с таким же количеством перемещений, чтобы сохранить профиль, заданный исходной ManipulatedVariables.Min вектор.
Вектор-столбец MVMin (один выход, изменяющаяся во времени граница)MVMin заменяет изменяющуюся во времени границу, заданную в ManipulatedVariables(i).Min, и исходный связанный профиль отбрасывается.
Вектор-строка MVMin (несколько выходов, постоянные границы)MVMin(i) заменяет первую конечную запись в ManipulatedVariables(i).Min и оставшиеся записи в ManipulatedVariables(i).Min сдвиг вверх или вниз с таким же количеством перемещений, чтобы сохранить профиль, заданный исходной ManipulatedVariables(i).Min вектор.
Матричные MVMin (несколько выходов, изменяющиеся во времени границы).MVMin(:,i) заменяет изменяющуюся во времени границу, заданную в ManipulatedVariables(i).Min, и исходный связанный профиль отбрасывается.

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

Если вы не указали ManipulatedVariables(i).Max свойство mpc объект, затем установка MVMax приводит к ошибке при выполнении mpcmove.

Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, задайте матрицу с Nmv столбцами и до p строками. Здесь Nmv - количество манипулируемых переменных, k - текущее время и p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке используются для остальных шагов горизонта предсказания.

MVMax(:,i) заменяет ManipulatedVariables(i).Max свойство mpc объект во время выполнения. Поведение замещения зависит от размерностей обеих переменных.

Скалярные ManipulatedVariables(i).Max в mpc объект (постоянная граница для iвторая манипулированная переменная, которая будет применена ко всем шагам предсказания)

MVMax РазмерностьПоведение при замене
Скалярные MVMax (один выход, постоянная граница)MVMax заменяет постоянную границу, заданную в ManipulatedVariables(i).Max
Вектор-столбец MVMax (один выход, изменяющаяся во времени граница)MVMax заменяет постоянную границу, заданную в ManipulatedVariables(i).Max с изменяющейся во времени границей.
Вектор-строка MVMax (несколько выходов, постоянные границы)MVMax(i) заменяет постоянную границу, заданную в ManipulatedVariables(i).Max
Матричные MVMax (несколько выходов, изменяющиеся во времени границы)MVMax(:,i) заменяет постоянную границу, заданную в ManipulatedVariables(i).Max с изменяющейся во времени границей.

Векторные ManipulatedVariables(i).Max в mpc объект (изменяющаяся во времени граница для ith-я манипулированная переменная с различными значениями на разных шагах предсказания)

MVMax РазмерностьПоведение при замене
Скалярные MVMax (один выход, постоянная граница)MVMax заменяет первую конечную запись в ManipulatedVariables.Max и оставшиеся записи в ManipulatedVariables.Max сдвиг вверх или вниз с той же величиной перемещения, чтобы сохранить профиль, заданный исходной ManipulatedVariables.Max вектор.
Вектор-столбец MVMax (один выход, изменяющаяся во времени граница)MVMax заменяет изменяющуюся во времени границу, заданную в ManipulatedVariables(i).Max, и исходный связанный профиль отбрасывается.
Вектор-строка MVMax (несколько выходов, постоянные границы)MVMax(i) заменяет первую конечную запись в ManipulatedVariables(i).Max и оставшиеся записи в ManipulatedVariables(i).Max сдвиг вверх или вниз с таким же количеством перемещений, чтобы сохранить профиль, заданный исходной ManipulatedVariables(i).Max вектор.
Матричные MVMax (несколько выходов, изменяющиеся во времени границы).MVMax(:,i) заменяет изменяющуюся во времени границу, заданную в ManipulatedVariables(i).Max, и исходный связанный профиль отбрасывается.

Пользовательские смешанные ограничения ввода/вывода, заданные как структура со следующими полями. Эти ограничения заменяют смешанные ограничения ввода/вывода, ранее установленные с помощью setconstraint.

Манипулируемая константа ограничения, заданная как Nc -by - Nmv массив, где Nc - количество ограничений, а Nmv - количество манипулируемых переменных.

Управляемая выходная константа ограничения, заданная как Nc -by - Ny массив, где Ny - количество управляемых выходов (измеренных и не измеренных).

Смешанная константа входного/выходного ограничения, заданная как вектор-столбец длины Nc.

Измеренная константа возмущения, заданная как Nc -by - Nmd массив, где Nmd - количество измеренных нарушений порядка.

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

  • 0 - Контроллер возвращает предсказанные оптимальные движения управления в дополнение к значению стоимости целевой функции.

  • 1 - Контроллер возвращает только стоимость целевой функции, что экономит вычислительные усилия.

Манипулируемые значения переменных, используемые в объекты во время предыдущего контрольного интервала, заданные как вектор-строка Nmv длины, где Nmv - количество манипулируемых переменных. Если вы не задаете MVused, mpvmove использует LastMove свойство своего токового контроллера состояния входного параметра, x.

Манипулируемые переменные цели, заданные как вектор-строка длины Nmv, где Nmv - количество манипулируемых переменных. MVTarget(i) заменяет ManipulatedVariables(i).Target свойство контроллера во время исполнения.

Горизонт предсказания, который заменяет PredictionHorizon свойство контроллера во время исполнения, заданное как положительное целое число. Если вы задаете PredictionHorizon, вы также должны задать ControlHorizon.

Определение PredictionHorizon изменяет:

  • Количество строк в оптимальных последовательностях, возвращенных mpcmove и mpcmoveAdaptive функции

  • Максимальные размерности Plant и Nominal входные параметры mpcmoveAdaptive

Этот параметр игнорируется mpcmoveMultiple функция.

Управляйте горизонтом, который заменяет ControlHorizon свойство контроллера во время исполнения, заданное как одно из следующего:

  • Положительное целое число, m, между 1 и p включительно, где p равно PredictionHorizon. В этом случае контроллер вычисляет, m свободные движения управления происходят в моменты времени, k через k + m -1, и удерживает выходной сигнал контроллера постоянным для остальных шагов горизонта предсказания от k + m до k + p -1. Здесь k текущий контрольный интервал. Для оптимального набора планирования траектории m равного p.

  • Вектор положительных целых чисел, [m 1, m 2,...], где сумма целых чисел равна горизонту предсказания, p. В этом случае контроллер вычисляет M блоки свободных ходов, где M - длина ControlHorizon вектор. Первое бесплатное движение относится ко временам k через k + <reservedrangesplaceholder5> 1-1, второе бесплатное движение применяется со времени k + <reservedrangesplaceholder3> 1 через k + <reservedrangesplaceholder1> 1 + <reservedrangesplaceholder0> 2-1 и так далее. Использование шагов блоков может улучшить робастность вашего контроллера по сравнению с случаем по умолчанию.

Если вы задаете ControlHorizon, вы также должны задать PredictionHorizon.

Этот параметр игнорируется mpcmoveMultiple функция.

Функции объекта

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

Примеры

свернуть все

Измените управляемую верхнюю границу переменной во время симуляции.

Определите объект, который включает 4-секундную задержку входа. Преобразуйте в свободную от задержки дискретную модель пространства состояний с помощью 2-секундного контрольного интервала. Создайте соответствующий контроллер по умолчанию и задайте границы MV на +/-2.

Ts = 2;
Plant = absorbDelay(c2d(ss(tf(0.8,[5 1],'InputDelay',4)),Ts));
MPCobj = mpc(Plant,Ts);
-->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;

Создайте пустую mpcmoveopt объект. Во время симуляции можно задать свойства объекта, чтобы задать параметры контроллера.

options = mpcmoveopt;

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

v = []; 
t = [0:Ts:20]; 
N = length(t); 
y = zeros(N,1); 
u = zeros(N,1); 
x = 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.

Использование mpcmove для моделирования следующего:

  • Ссылка (уставка) изменение шага с начального условия r = 0 на r = 1 (сервопривод)

  • Уменьшение шага верхней границы СН с 2 до 1, происходящее при t = 10

r = 1; 
for i = 1:N
    y(i) = Plant.C*x.Plant;
    if t(i) >= 10
        options.MVMax = 1; 
    end
    [u(i),Info] = mpcmove(MPCobj,x,y(i),r,v,options); 
end

Когда цикл выполняется, значение options.MVMax сбрасывается значение 1 для всех итераций, которые происходят после t = 10. До этой итерации options.MVMax пуст. Поэтому значение контроллера для MVMax используется, MPCobj.MV(1).Max = 2.

Постройте график результатов симуляции.

[Ts,us] = stairs(t,u); 
plot(Ts,us,'b-',t,y,'r-') 
legend('MV','OV')
xlabel(sprintf('Time, %s',Plant.TimeUnit))

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

Из графика можно заметить, что исходная верхняя граница MV является активной, пока t = 4. После задержки на входе 4 секунды переменный выход (OV) плавно перемещается к своей новой цели r = 1. достижение цели при t = 10. Новая связка MV, установленная при t = 10, немедленно становится активной. Это заставляет OV опуститься ниже своей цели, после того, как истекает задержка на входе.

Теперь примите, что вы хотите наложить верхнюю границу OV в заданном местоположении относительно цели OV. Примите во внимание следующую команду проекта ограничений:

MPCobj.OV(1).Max = [Inf,Inf,0.4,0.3,0.2];

Это - изменяющееся по горизонтали ограничение. Известная входная задержка делает невозможным, чтобы контроллер удовлетворял ограничению OV перед третьим шагом предсказания-горизонта. Поэтому конечное ограничение на первых двух шагах будет плохой практикой. Для иллюстративных целей предыдущее ограничение также уменьшается с 0,4 на стадии 3 до 0,2 на стадии 5 и далее.

Следующие команды дают те же результаты, что и на предыдущем графике. Ограничение OV никогда не является активным, потому что оно изменяется совместно с уставкой r.

x = 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.
OPTobj = mpcmoveopt;
for i = 1:N
    y(i) = Plant.C*x.Plant;
    if t(i) >= 10
        OPTobj.MVMax = 1; 
    end
    OPTobj.OutputMax = r + 0.4;
    [u(i),Info] = mpcmove(MPCobj,x,y(i),r,v,OPTobj); 
end

Скалярное значение r + 0,4 заменяет первое конечное значение в MPCobj.OV(1).Max вектор, а остальные конечные значения корректируются, чтобы сохранить исходный профиль, то есть числовое различие между этими значениями неизменно. r = 1 для симуляции, поэтому предыдущее использование mpcmoveopt объект эквивалентен команде

MPCobj.OV(1).Max = [Inf, Inf, 1.4, 1.3, 1.2];

Однако использование mpcmoveopt объект включает в себя гораздо меньшие вычислительные накладные расходы.

Совет

  • Если переменная без ограничений в первоначальном проекте контроллера, вы не можете ограничить ее использованием mpcmoveopt. Контроллер игнорирует любые такие спецификации.

  • Вы не можете удалить ограничение из переменной, которая ограничена в первоначальном проекте контроллера. Однако можно изменить его на большое (или маленькое) значение таким образом, чтобы оно вряд ли стало активным.

См. также

| | |

Введенный в R2018b