Опция установлена для функции nlmpcmove
Чтобы задать опции для функции nlmpcmove
, используйте набор опции nlmpcmoveopt
.
Используя этот набор опции, можно задать значения во время выполнения для подмножества свойств контроллера, такие как настраивающиеся веса и ограничения. Если вы не задаете значение для одного из свойств nlmpcmoveopt
, соответствующее значение, заданное в контроллере nlmpc
, объект используется вместо этого.
options = nlmpcmoveopt
создает набор по умолчанию опций для функции options
= nlmpcmoveoptnlmpcmove
. Чтобы изменить значения свойств, используйте запись через точку.
OutputWeights
— Настраивающие веса выходной переменной[]
(значение по умолчанию) | вектор - строка | массивНастраивающие веса выходной переменной, которые заменяют свойство Weights.OutputVariables
контроллера во время выполнения, заданное как вектор - строка или массив неотрицательных значений.
Чтобы использовать те же веса через горизонт прогноза, задайте вектор - строку из длины Ny, где Ny является количеством выходных переменных.
Чтобы отличаться настраивающиеся веса по горизонту прогноза со времени k +1 ко времени k +p, задайте массив со столбцами Ny и до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит настраивающие веса выходной переменной для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, веса в итоговой строке используются для остающихся шагов горизонта прогноза.
MVWeights
— Manipulated[]
(значение по умолчанию) | вектор - строка | массивПеременные настраивающие веса, которыми управляют, которые заменяют свойство 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
— Slack[]
(значение по умолчанию) | положительная скалярная величинаОслабьте переменный настраивающий вес, который заменяет свойство 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
— Manipulated[]
(значение по умолчанию) | вектор - строка | массивПеременные нижние границы, которыми управляют, заданные как вектор - строка из длины Nmv или массив со столбцами Nmv, где Nmv является количеством переменных, которыми управляют. MVMin(:,i)
заменяет свойство ManipulatedVariables(i).Min
контроллера во время выполнения.
Чтобы использовать те же границы через горизонт прогноза, задайте вектор - строку.
Чтобы отличаться границы по горизонту прогноза со времени k ко времени k +p-1, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит границы для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые границы используются для остающихся шагов горизонта прогноза.
MVMax
— Manipulated[]
(значение по умолчанию) | вектор - строка | массивПеременные верхние границы, которыми управляют, заданные как вектор - строка из длины 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
— Manipulated[]
(значение по умолчанию) | вектор - строка | массивПеременные цели, которыми управляют, заданные как вектор - строка из длины 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
Порядок параметров должен совпадать с порядком, заданным для этих функций.
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
— Исходное предположение для слабой переменной в решении[]
(значение по умолчанию) | неотрицательный скаляр Исходное предположение для слабой переменной в решении, заданном как неотрицательный скаляр. Если Slack0
является []
, исходным предположением по умолчанию является 0
.
В целом, во время симуляции с обратной связью, вы не задаете Slack0
сами. Вместо этого при вызове nlmpcmove
возвратите выходной аргумент opt
, который является объектом nlmpcmoveopt
. opt.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.