exponenta event banner

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 объект (изменяющаяся во времени граница для iуправляемая переменная с различными значениями на различных этапах прогнозирования)

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 объект (изменяющаяся во времени граница для iуправляемая переменная с различными значениями на различных этапах прогнозирования)

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.

  • Вектор положительных целых чисел, [m1, m2,...], где сумма целых чисел равна горизонту предсказания, р. В этом случае контроллер вычисляет M блоков свободных перемещений, где M - длина ControlHorizon вектор. Первое свободное перемещение применяется к временам k-k + m1-1, второе свободное перемещение применяется от времени k + m1-k + m1 + m2-1 и так далее. Использование блокировочных перемещений может повысить надежность контроллера по сравнению со случаем по умолчанию.

При указании ControlHorizon, необходимо также указать PredictionHorizon.

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

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

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

Примеры

свернуть все

Изменение верхней границы управляемой переменной во время моделирования.

Определите завод, который включает 4-секундную задержку ввода. Преобразование в модель без задержки, дискретную модель с пространством состояний с использованием 2-секундного интервала управления. Создайте соответствующий контроллер по умолчанию и укажите границы среднего напряжения в +/-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.

На графике видно, что исходная верхняя граница СН активна до 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