nlmpcmoveopt

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

Описание

Чтобы задать опции для nlmpcmove function, использовать nlmpcmoveopt набор опций.

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

Создание

Синтаксис

Описание

пример

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

Выход переменные нижние границы, заданные как вектор-строка длины Ny или матрица с Ny столбцами, где Ny - количество переменных выходов. OutputMin(:,i) заменяет OutputVariables(i).Min свойство контроллера во время исполнения.

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

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

Выход верхние границы, заданные как вектор-строка длины Ny или матрица с Ny столбцами, где Ny - количество переменных выходов. OutputMax(:,i) заменяет OutputVariables(i).Max свойство контроллера во время исполнения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Нижние границы состояния, заданные как вектор-строка длины Nx или матрица с Nx столбцами, где Nx - количество состояний. StateMin(:,i) заменяет States(i).Min свойство контроллера во время исполнения.

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

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

Верхние границы состояния, заданные как вектор-строка длины Nx или матрица с Nx столбцами, где Nx - количество состояний. StateMax(:,i) заменяет States(i).Max свойство контроллера во время исполнения.

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

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

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

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

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

Значения параметров, используемые моделью предсказания, пользовательской функцией стоимости и пользовательскими ограничениями, заданные как вектор камеры с длиной, равной Model.NumberOfParameters свойство контроллера. Если у контроллера нет параметров, то Parameters должен быть {}.

Контроллер, nlmpcobj, передает эти параметры в:

  • Моделируйте функции в nlmpcobj.Model (StateFcn и OutputFcn)

  • Функции затрат nlmpcobj.Optimization.CustomCostFcn

  • Функции ограничения в nlmpcobj.Optimization (CustomEqConFcn и CustomIneqConFcn)

  • Якобианские функции в nlmpcobj.Jacobian

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

Начальные догадки для оптимальных решений состояния, заданные как вектор-строка длины Nx или матрица с Nx столбцами, где Nx - количество состояний.

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

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

Если X0 является []начальными предположениями по умолчанию являются текущие состояния модели предсказания (x входной параметр в nlmpcmove).

В целом, во время симуляции с обратной связью вы не задаете X0 сам. Вместо этого при вызове nlmpcmove, верните opt выходной аргумент, который является nlmpcmoveopt объект. opt.X0 содержит вычисленные оптимальные траектории состояний в качестве начальных догадок. Затем можно пройти opt в качестве options входной параметр в nlmpcmove для следующего контрольного интервала. Эти шаги являются наилучшей практикой, даже если вы не задаете никаких других опций во время выполнения.

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

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

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

Если MV0 является []начальные догадки по умолчанию являются управляющими сигналами, используемыми на объекте в предыдущем контрольном интервале (lastmv входной параметр в nlmpcmove).

В целом, во время симуляции с обратной связью вы не задаете MV0 сам. Вместо этого при вызове nlmpcmove, верните opt выходной аргумент, который является nlmpcmoveopt объект. opt.MV0 содержит вычисленные оптимальные манипулированные переменные траектории в качестве начальных догадок. Затем можно пройти opt в качестве options входной параметр в nlmpcmove для следующего контрольного интервала. Эти шаги являются наилучшей практикой, даже если вы не задаете никаких других опций во время выполнения.

Начальное предположение для переменной slack в решении, заданное как неотрицательный скаляр. Если Slack0 является []начальное предположение по умолчанию является 0.

В целом, во время симуляции с обратной связью вы не задаете Slack0 сам. Вместо этого при вызове nlmpcmove, верните opt выходной аргумент, который является nlmpcmoveopt объект. opt.Slack содержит вычисленную переменную slack как начальное предположение. Затем можно пройти opt в качестве options входной параметр в nlmpcmove для следующего контрольного интервала. Эти шаги являются наилучшей практикой, даже если вы не задаете никаких других опций во время выполнения.

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

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

Примеры

свернуть все

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

options = nlmpcmoveopt;

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

  • Шаг расчета модели, заданный как одно числовое значение. Задайте значение 0.25.

  • Коэффициенты усиления, заданные как двухэлементный вектор-строка. Задайте значение [0.7 0.35].

Порядок, в котором вы задаете параметры, должен совпадать с порядком, заданным в списках аргументов пользовательской функции. Кроме того, размерности параметров должны совпадать с размерностями, ожидаемыми пользовательскими функциями.

options.Parameters = {0.25,[0.7 0.35]};

Чтобы использовать эти параметры при вычислении необязательных действий управления для нелинейного контроллера MPC, передайте options на nlmpcmove функция.

Введенный в R2018b