Набор опций для nlmpcmove
функция
Чтобы задать опции для nlmpcmove
function, использовать nlmpcmoveopt
набор опций.
Используя этот набор опций, можно задать значения во время выполнения для подмножества свойств контроллера, таких как веса настройки и ограничения. Если вы не задаете значение для одного из nlmpcmoveopt
свойства, соответствующее значение, заданное в nlmpc
вместо этого используется объект контроллера.
создает набор опций по умолчанию для options
= nlmpcmoveoptnlmpcmove
функция. Чтобы изменить значения свойств, используйте запись через точку.
OutputWeights
- Выходные переменные веса настройки[]
(по умолчанию) | вектор-строка | матрицаВыход весов настройки переменных, которые заменяют Weights.OutputVariables
свойство контроллера во время исполнения, заданное как вектор-строка или матрица неотрицательных значений.
Чтобы использовать те же веса на горизонте предсказания, задайте вектор-строку Ny длины, где Ny количество переменных выходов.
Чтобы изменить веса настройки над горизонтом предсказания от времени k + 1 до времени k + p, задайте массив с Ny столбцами и до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит выходные переменные веса настройки для одного шага горизонта предсказания. Если вы задаете меньше p строк, веса в последней строке используются для остальных шагов горизонта предсказания.
MVWeights
- Манипулируемые переменные веса настройки[]
(по умолчанию) | вектор-строка | матрицаМанипулируемые веса настройки переменных, которые заменяют Weights.ManipulatedVariables
свойство контроллера во время исполнения, заданное как вектор-строка или матрица неотрицательных значений.
Чтобы использовать те же веса на горизонте предсказания, задайте вектор-строку длины Nmv, где Nmv количество манипулируемых переменных.
Чтобы варьировать веса настройки по горизонту предсказания от времени k времени k + p -1, задайте массив с Nmv столбцами и до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит манипулированные переменные веса настройки для одного шага горизонта предсказания. Если вы задаете меньше p строк, веса в последней строке используются для остальных шагов горизонта предсказания.
MVRateWeights
- Манипулируемые веса настройки переменной скорости[]
(по умолчанию) | вектор-строка | матрицаМанипулируемые веса настройки переменной скорости, которые заменяют Weights.ManipulatedVariablesRate
свойство контроллера во время исполнения, заданное как вектор-строка или матрица неотрицательных значений.
Чтобы использовать те же веса на горизонте предсказания, задайте вектор-строку длины Nmv, где Nmv количество манипулируемых переменных.
Чтобы варьировать веса настройки по горизонту предсказания от времени k времени k + p -1, задайте массив с Nmv столбцами и до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит управляемые веса настройки переменной скорости для одного шага горизонта предсказания. Если вы задаете меньше p строк, веса в последней строке используются для остальных шагов горизонта предсказания.
ECR Weight
- Шлак переменного веса настройки[]
(по умолчанию) | положительная скалярная величинаУменьшите вес настройки переменной, который заменяет Weights.ECR
свойство контроллера во время исполнения, заданное как положительная скалярная величина.
OutputMin
- Выходные переменные нижние границы[]
(по умолчанию) | вектор-строка | матрицаВыход переменные нижние границы, заданные как вектор-строка длины Ny или матрица с Ny столбцами, где Ny - количество переменных выходов. OutputMin(:,i)
заменяет OutputVariables(i).Min
свойство контроллера во время исполнения.
Чтобы использовать те же границы между горизонтом предсказания, задайте вектор-строку.
Чтобы изменить границы над горизонтом предсказания от времени k + 1 до времени k + p, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные границы используются для остальных шагов горизонта предсказания.
OutputMax
- Выходные верхние границы переменной[]
(по умолчанию) | вектор-строка | матрицаВыход верхние границы, заданные как вектор-строка длины Ny или матрица с Ny столбцами, где Ny - количество переменных выходов. OutputMax(:,i)
заменяет OutputVariables(i).Max
свойство контроллера во время исполнения.
Чтобы использовать те же границы между горизонтом предсказания, задайте вектор-строку.
Чтобы изменить границы над горизонтом предсказания от времени k + 1 до времени k + p, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные границы используются для остальных шагов горизонта предсказания.
MVMin
- Манипулирование нижними границами переменной[]
(по умолчанию) | вектор-строка | матрицаМанипулируемые нижние границы переменной, заданные как вектор-строка длины Nmv или матрица с Nmv столбцами, где Nmv - количество манипулируемых переменных. MVMin(:,i)
заменяет ManipulatedVariables(i).Min
свойство контроллера во время исполнения.
Чтобы использовать те же границы между горизонтом предсказания, задайте вектор-строку.
Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные границы используются для остальных шагов горизонта предсказания.
MVMax
- Манипулируемые верхние границы переменной[]
(по умолчанию) | вектор-строка | матрицаМанипулируемые верхние границы переменной, заданные как вектор-строка длины Nmv или матрица с Nmv столбцами, где Nmv - количество манипулируемых переменных. MVMax(:,i)
заменяет ManipulatedVariables(i).Max
свойство контроллера во время исполнения.
Чтобы использовать те же границы между горизонтом предсказания, задайте вектор-строку.
Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные границы используются для остальных шагов горизонта предсказания.
MVRateMin
- Манипулирование нижними границами переменной скорости[]
(по умолчанию) | вектор-строка | матрицаМанипулируемые нижние границы переменной скорости, заданные как вектор-строка длины Nmv или матрица с Nmv столбцами, где Nmv - количество манипулируемых переменных. MVRateMin(:,i)
заменяет ManipulatedVariables(i).RateMin
свойство контроллера во время исполнения. MVRateMin
ограничения должны быть непозитивными.
Чтобы использовать те же границы между горизонтом предсказания, задайте вектор-строку.
Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные границы используются для остальных шагов горизонта предсказания.
MVRateMax
- Манипулируемые верхние границы переменной скорости[]
(по умолчанию) | вектор-строка | матрицаМанипулируемые верхние границы переменной скорости, заданные как вектор-строка длины Nmv или матрица с Nmv столбцами, где Nmv - количество манипулируемых переменных. MVRateMax(:,i)
заменяет ManipulatedVariables(i).RateMax
свойство контроллера во время исполнения. MVRateMax
границы должны быть неотрицательными.
Чтобы использовать те же границы между горизонтом предсказания, задайте вектор-строку.
Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные границы используются для остальных шагов горизонта предсказания.
StateMin
- Нижние границы состояния[]
(по умолчанию) | вектор-строка | матрицаНижние границы состояния, заданные как вектор-строка длины Nx или матрица с Nx столбцами, где Nx - количество состояний. StateMin(:,i)
заменяет States(i).Min
свойство контроллера во время исполнения.
Чтобы использовать те же границы между горизонтом предсказания, задайте вектор-строку.
Чтобы изменить границы над горизонтом предсказания от времени k + 1 до времени k + p, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные границы используются для остальных шагов горизонта предсказания.
StateMax
- Верхние границы состояния[]
(по умолчанию) | вектор-строка | матрицаВерхние границы состояния, заданные как вектор-строка длины Nx или матрица с Nx столбцами, где Nx - количество состояний. StateMax(:,i)
заменяет States(i).Max
свойство контроллера во время исполнения.
Чтобы использовать те же границы между горизонтом предсказания, задайте вектор-строку.
Чтобы изменить границы над горизонтом предсказания от времени k + 1 до времени k + p, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные границы используются для остальных шагов горизонта предсказания.
MVTarget
- Манипулируемые переменные цели[]
(по умолчанию) | вектор-строка | матрицаМанипулируемые переменные цели, заданные как вектор-строка длины Nmv или матрица с Nmv столбцами, где Nmv - количество манипулируемых переменных.
Чтобы использовать те же манипулируемые переменные цели через горизонт предсказания, задайте вектор-строку.
Чтобы изменять цели над горизонтом предсказания (предварительный просмотр) время k от времени k + p -1, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит цели для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные цели используются для остальных шагов горизонта предсказания.
Parameters
- Значения параметров{}
(по умолчанию) | вектор камерыЗначения параметров, используемые моделью предсказания, пользовательской функцией стоимости и пользовательскими ограничениями, заданные как вектор камеры с длиной, равной Model.NumberOfParameters
свойство контроллера. Если у контроллера нет параметров, то Parameters
должен быть {}
.
Контроллер, nlmpcobj
, передает эти параметры в:
Моделируйте функции в nlmpcobj.Model
(StateFcn
и OutputFcn
)
Функции затрат nlmpcobj.Optimization.CustomCostFcn
Функции ограничения в nlmpcobj.Optimization
(CustomEqConFcn
и CustomIneqConFcn
)
Якобианские функции в nlmpcobj.Jacobian
Порядок параметров должен совпадать с порядком, заданным для этих функций.
X0
- Начальные догадки для оптимальных решений состояния[]
(по умолчанию) | вектор | матрицаНачальные догадки для оптимальных решений состояния, заданные как вектор-строка длины Nx или матрица с Nx столбцами, где Nx - количество состояний.
Чтобы использовать те же начальные предположения по горизонту предсказания, задайте вектор-строку.
Чтобы изменить начальные догадки над горизонтом предсказания от времени k + 1 до времени k + p, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит начальные предположения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные догадки используются для остальных шагов горизонта предсказания.
Если X0
является []
начальными предположениями по умолчанию являются текущие состояния модели предсказания (x
входной параметр в nlmpcmove
).
В целом, во время симуляции с обратной связью вы не задаете X0
сам. Вместо этого при вызове nlmpcmove
, верните opt
выходной аргумент, который является nlmpcmoveopt
объект. opt.X0
содержит вычисленные оптимальные траектории состояний в качестве начальных догадок. Затем можно пройти opt
в качестве options
входной параметр в nlmpcmove
для следующего контрольного интервала. Эти шаги являются наилучшей практикой, даже если вы не задаете никаких других опций во время выполнения.
MV0
- Начальные предположения для оптимальных манипулированных переменных решений[]
(по умолчанию) | вектор | матрицаНачальные догадки для оптимальных манипулированных переменных решений, заданные как вектор-строка длины Nmv или матрица с Nmv столбцами, где Nmv - количество манипулированных переменных.
Чтобы использовать те же начальные предположения по горизонту предсказания, задайте вектор-строку.
Чтобы варьировать начальные догадки над горизонтом предсказания от времени k времени k + p -1, задайте матрицу с до p строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит начальные предположения для одного шага горизонта предсказания. Если вы задаете меньше p строк, конечные догадки используются для остальных шагов горизонта предсказания.
Если MV0
является []
начальные догадки по умолчанию являются управляющими сигналами, используемыми на объекте в предыдущем контрольном интервале (lastmv
входной параметр в nlmpcmove
).
В целом, во время симуляции с обратной связью вы не задаете MV0
сам. Вместо этого при вызове nlmpcmove
, верните opt
выходной аргумент, который является nlmpcmoveopt
объект. opt.MV0
содержит вычисленные оптимальные манипулированные переменные траектории в качестве начальных догадок. Затем можно пройти opt
в качестве options
входной параметр в nlmpcmove
для следующего контрольного интервала. Эти шаги являются наилучшей практикой, даже если вы не задаете никаких других опций во время выполнения.
Slack0
- Начальное предположение для переменной slack в решении[]
(по умолчанию) | неотрицательной скаляром Начальное предположение для переменной 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
функция.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.