Набор опций для mpcmove
функция
Чтобы задать опции для mpcmove
, mpcmoveAdaptive
, и mpcmoveMultiple
функций, использовать mpcmoveopt
объект.
Используя этот объект, можно задать значения во время выполнения для подмножества свойств контроллера, таких как веса настройки и ограничения. Если вы не задаете значение для одного из mpcmoveopt
свойства, вместо этого используется значение соответствующей опции контроллера.
создает набор опций по умолчанию для options
= mpcmoveoptmpcmove
функция. Чтобы изменить значения свойств, используйте запись через точку.
OutputWeights
- Выходные переменные веса настройки[]
(по умолчанию) | вектор | массивВыход весов настройки переменных, которые заменяют Weights.OutputVariables
свойство контроллера во время исполнения, заданное как вектор или массив неотрицательных значений.
Чтобы использовать те же веса на горизонте предсказания, задайте вектор-строку Ny длины, где Ny количество переменных выходов.
Чтобы изменить веса настройки над горизонтом предсказания от времени k + 1 до времени k + p, задайте массив с Ny столбцами и до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит выходные переменные веса настройки для одного шага горизонта предсказания. Если вы задаете меньше p строк, веса в последней строке используются для остальных шагов горизонта предсказания.
Формат OutputWeights
должен совпадать с форматом Weights.OutputVariables
свойство объекта контроллера. Например, вы не можете задать постоянные веса через горизонт предсказания в объекте контроллера, а затем задать изменяющиеся во времени веса, используя mpcmoveopt
.
MVWeights
- Манипулируемые переменные веса настройки[]
(по умолчанию) | вектор | массивМанипулируемые веса настройки переменных, которые заменяют Weights.ManipulatedVariables
свойство контроллера во время исполнения, заданное как вектор или массив неотрицательных значений.
Чтобы использовать те же веса на горизонте предсказания, задайте вектор-строку длины Nmv, где Nmv количество манипулируемых переменных.
Чтобы варьировать веса настройки по горизонту предсказания от времени k времени k + p -1, задайте массив с Nmv столбцами и до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит манипулированные переменные веса настройки для одного шага горизонта предсказания. Если вы задаете меньше p строк, веса в последней строке используются для остальных шагов горизонта предсказания.
Формат MVWeights
должен совпадать с форматом Weights.ManipulatedVariables
свойство объекта контроллера. Например, вы не можете задать постоянные веса через горизонт предсказания в объекте контроллера, а затем задать изменяющиеся во времени веса, используя mpcmoveopt
.
MVRateWeights
- Манипулируемые веса настройки переменной скорости[]
(по умолчанию) | вектор | массивМанипулируемые веса настройки переменной скорости, которые заменяют Weights.ManipulatedVariablesRate
свойство контроллера во время исполнения, заданное как вектор или массив неотрицательных значений.
Чтобы использовать те же веса на горизонте предсказания, задайте вектор-строку длины Nmv, где Nmv количество манипулируемых переменных.
Чтобы варьировать веса настройки по горизонту предсказания от времени k времени k + p -1, задайте массив с Nmv столбцами и до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит управляемые веса настройки переменной скорости для одного шага горизонта предсказания. Если вы задаете меньше p строк, веса в последней строке используются для остальных шагов горизонта предсказания.
Формат MVRateWeights
должен совпадать с форматом Weights.ManipulatedVariablesRate
свойство объекта контроллера. Например, вы не можете задать постоянные веса через горизонт предсказания в объекте контроллера, а затем задать изменяющиеся во времени веса, используя mpcmoveopt
.
ECRWeight
- Шлак переменного веса настройки[]
(по умолчанию) | положительная скалярная величинаУменьшите вес настройки переменной, который заменяет Weights.ECR
свойство контроллера во время исполнения, заданное как положительная скалярная величина.
OutputMin
- Выходные переменные нижние границы[]
(по умолчанию) | вектор-строка | матрицаВыход переменные нижние границы, заданные как вектор-строка длины 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 , и исходный связанный профиль отбрасывается. |
OutputMax
- Выходные верхние границы переменной[]
(по умолчанию) | вектор-строка | матрицаВыход верхние границы, заданные как вектор-строка длины 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 , и исходный связанный профиль отбрасывается. |
MVMin
- Манипулирование нижними границами переменной[]
(по умолчанию) | вектор-строка | матрицаМанипулируемые нижние границы переменной, заданные как вектор-строка длины 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
th-я манипулированная переменная с различными значениями на разных шагах предсказания)
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 , и исходный связанный профиль отбрасывается. |
MVMax
- Манипулируемые верхние границы переменной[]
(по умолчанию) | вектор-строка | матрицаМанипулируемые верхние границы переменной, заданные как вектор-строка длины 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
th-я манипулированная переменная с различными значениями на разных шагах предсказания)
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 , и исходный связанный профиль отбрасывается. |
CustomConstraint
- Пользовательские смешанные ограничения ввода/вывода[]
(по умолчанию) | структуруПользовательские смешанные ограничения ввода/вывода, заданные как структура со следующими полями. Эти ограничения заменяют смешанные ограничения ввода/вывода, ранее установленные с помощью setconstraint
.
E
- Манипулируемая переменная константа ограниченияМанипулируемая константа ограничения, заданная как Nc -by - Nmv массив, где Nc - количество ограничений, а Nmv - количество манипулируемых переменных.
F
- Управляемая выходная константа ограниченияУправляемая выходная константа ограничения, заданная как Nc -by - Ny массив, где Ny - количество управляемых выходов (измеренных и не измеренных).
G
- Смешанная константа входного/выходного ограниченияСмешанная константа входного/выходного ограничения, заданная как вектор-столбец длины Nc.
S
- Измеренная константа возмущенияИзмеренная константа возмущения, заданная как Nc -by - Nmd массив, где Nmd - количество измеренных нарушений порядка.
OnlyComputeCost
- Флаг, указывающий, вычислять ли оптимальную последовательность управления0
(по умолчанию) | 1
Флаг, указывающий, вычислять ли оптимальную последовательность управления, заданный как один из следующих:
0
- Контроллер возвращает предсказанные оптимальные движения управления в дополнение к значению стоимости целевой функции.
1
- Контроллер возвращает только стоимость целевой функции, что экономит вычислительные усилия.
MVused
- Управляемые значения переменных, используемые на объекте во время предыдущего контрольного интервала[]
(по умолчанию) | вектор-строкаМанипулируемые значения переменных, используемые в объекты во время предыдущего контрольного интервала, заданные как вектор-строка Nmv длины, где Nmv - количество манипулируемых переменных. Если вы не задаете MVused
, mpvmove
использует LastMove
свойство своего токового контроллера состояния входного параметра, x
.
MVTarget
- Манипулируемые переменные цели[]
(по умолчанию) | вектор-строкаМанипулируемые переменные цели, заданные как вектор-строка длины Nmv, где Nmv - количество манипулируемых переменных. MVTarget(i)
заменяет ManipulatedVariables(i).Target
свойство контроллера во время исполнения.
PredictionHorizon
- Горизонт предсказания[]
(по умолчанию) | положительное целое числоГоризонт предсказания, который заменяет PredictionHorizon
свойство контроллера во время исполнения, заданное как положительное целое число. Если вы задаете PredictionHorizon
, вы также должны задать ControlHorizon
.
Определение PredictionHorizon
изменяет:
Количество строк в оптимальных последовательностях, возвращенных mpcmove
и mpcmoveAdaptive
функции
Максимальные размерности Plant
и Nominal
входные параметры mpcmoveAdaptive
Этот параметр игнорируется mpcmoveMultiple
функция.
ControlHorizon
- Горизонт управления[]
(по умолчанию) | положительное целое число | вектор положительных целых чиселУправляйте горизонтом, который заменяет 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))
Из графика можно заметить, что исходная верхняя граница 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
. Контроллер игнорирует любые такие спецификации.
Вы не можете удалить ограничение из переменной, которая ограничена в первоначальном проекте контроллера. Однако можно изменить его на большое (или маленькое) значение таким образом, чтобы оно вряд ли стало активным.
mpc
| mpcmove
| setconstraint
| setterminal
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.