Симулируйте многоступенчатые нелинейные прогнозирующие контроллеры модели
Model Predictive Control Toolbox
Блок Multistage Nonlinear MPC Controller моделирует многоступенчатый нелинейный прогнозирующий контроллер модели. На каждом контрольном интервале блок вычисляет оптимальные движения управления путем решения нелинейной задачи программирования, в которой различные функции затрат и ограничения заданы для различных шагов предсказания (этап). Для получения дополнительной информации о нелинейном MPC смотрите Нелинейный MPC.
Чтобы использовать этот блок, вы должны сначала создать nlmpcMultistage
объект в MATLAB® рабочей области.
Ни один из Multistage Nonlinear MPC Controller параметров блоков не настраивается.
x
- входСостояния модели предсказания тока, заданные как вектор сигнал длины Nx, где Nx - количество состояний модели предсказания. Поскольку нелинейный контроллер MPC не выполняет оценку состояния, необходимо либо измерить, либо оценить текущие состояния модели предсказания на каждом контрольном интервале.
last_mv
- Управляющие сигналы, используемые на объекте в предыдущем контрольном интервалеУправляющие сигналы, используемые в объекте в предыдущем контрольном интервале, задаются как векторный сигнал длины Nmv, где Nmv - количество манипулируемых переменных.
Примечание
Подключите last_mv к сигналам СН, фактически примененным к объекту в предыдущем контрольном интервале. Обычно эти сигналы СН являются значениями, генерируемыми контроллером, хотя это не всегда так. Например, если ваш контроллер работает в автономном режиме и работает в режиме отслеживания; то есть контроллер выход не приводит объект в действие, тогда подача фактического управляющего сигнала на last_mv может помочь достичь бесшумной передачи, когда контроллер переключается назад в оперативном режиме.
md
- входЕсли ваша модель предсказания контроллера имеет измеренные нарушения порядка, вы должны включить этот порт и соединить с ним вектор-строку или матричный сигнал.
Чтобы использовать те же самые измеренные значения нарушения порядка через горизонт предсказания, соедините md с сигналом вектора-строки с Nmd элементами, где Nmd количество манипулируемых переменных. Каждый элемент задает значение для измеренного нарушения порядка.
Чтобы изменять нарушения порядка над горизонтом предсказания (предварительный просмотр) время k время k + p, соедините md с матричным сигналом с Nmd столбцами и до p + 1 строками. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит нарушения порядка для одного шага горизонта предсказания. Если вы задаете меньше p + 1 строк, конечные нарушения порядка используются для остальных шагов горизонта предсказания.
Чтобы включить этот порт, выберите параметр Measured disturbances.
state.param
- Необязательные параметрыЕсли ваш контроллер использует дополнительные параметры в своей модели предсказания, включите этот вход порт и соедините сигнал вектора с элементами Npm, где Npm количество параметров состояния (равное Model.ParameterLength
свойство nlmpcMultistage
объект контроллера). Контроллер, передает эти параметры в свой модельный переход состояния и состояние якобианских функций.
Чтобы включить этот порт, выберите параметр StateFcn parameters.
Если ваш контроллер не использует дополнительные параметры, необходимо отключить state.param порт.
stage.param
- Необязательные параметрыЕсли ваш контроллер использует дополнительные параметры в любой цене каскада или ограничительной функции, включите этот вход порт и соедините сигнал вектора с элементами Npv, где Npv, равно sum(Stages.ParameterLength)
, - общее количество параметров для всех функций каскада. Параметры для всех каскадов складываются в вектор параметра следующим образом.
[parameter vector for stage 1; parameter vector for stage 2; ... parameter vector for stage p+1; ]
На каждом этапе контроллер передает соответствующий вектор параметра в стоимость этапа и функции ограничения, активные на этом этапе.
Чтобы включить этот порт, выберите параметр StageFcn parameters.
Если ваш контроллер не использует дополнительные параметры, необходимо отключить stage.param порт. Для получения дополнительной информации смотрите nlmpcMultistage
и nlmpcmove
.
mv.min
- Минимальные манипулируемые переменные ограниченияЧтобы задать минимальные ограничения переменных во время выполнения, включите этот входной порт. Если этот порт отключен, блок использует нижние границы, указанные в ManipulatedVariables.Min
свойство его объекта контроллера.
Чтобы использовать те же границы над горизонтом предсказания, соедините mv.min с сигналом вектора-строки с Nmv элементами, где Nmv количество выходов. Каждый элемент задает нижнюю границу для управляемой переменной.
Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, соедините mv.min с матричным сигналом с Ny столбцами и до p строк. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке применяются для оставшейся части горизонта предсказания.
Чтобы включить этот порт, выберите параметр Lower MV limits.
mv.max
- Максимальное количество манипулируемых переменных ограниченийЧтобы задать максимальное количество управляемых переменных во время выполнения, включите этот входной порт. Если этот порт отключен, блок использует верхние границы, указанные в ManipulatedVariables.Max
свойство его объекта контроллера.
Чтобы использовать те же границы над горизонтом предсказания, соедините mv.max с сигналом вектора-строки с Nmv элементами, где Nmv количество выходов. Каждый элемент задает верхнюю границу для управляемой переменной.
Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, соедините mv.max с матричным сигналом с Ny столбцами и до p строк. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке применяются для оставшейся части горизонта предсказания.
Чтобы включить этот порт, выберите параметр Upper MV limits.
dmv.min
- Минимальные манипулируемые ограничения переменной скоростиЧтобы задать минимальные ограничения переменной скорости во время выполнения, включите этот входной порт. Если этот порт отключен, блок использует нижние границы, указанные в ManipulatedVariable.RateMin
свойство его объекта контроллера. dmv.min границы должны быть непозитивными.
Чтобы использовать те же границы над горизонтом предсказания, соедините dmv.min с сигналом вектора-строки с Nmv элементами, где Nmv количество выходов. Каждый элемент задает нижнюю границу для управляемой переменной скорости изменения.
Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, соедините dmv.min с матричным сигналом с Ny столбцами и до p строк. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке применяются для оставшейся части горизонта предсказания.
Чтобы включить этот порт, выберите параметр Lower MVRate limits.
dmv.max
- Максимальные манипулируемые ограничения переменной скоростиЧтобы задать ограничения переменной скорости во время выполнения, включите этот входной порт. Если этот порт отключен, блок использует верхние границы, указанные в ManipulatedVariables.RateMax
свойство его объекта контроллера. dmv.max границы должны быть неотрицательными.
Чтобы использовать те же границы над горизонтом предсказания, соедините dmv.max с сигналом вектора-строки с Nmv элементами, где Nmv количество выходов. Каждый элемент задает верхнюю границу для управляемой переменной скорости изменения.
Чтобы изменить границы над горизонтом предсказания от времени k времени k + p -1, соедините dmv.max с матричным сигналом с Ny столбцами и до p строк. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке применяются для оставшейся части горизонта предсказания.
Чтобы включить этот порт, выберите параметр Upper MVRate limits.
x.min
- Минимальные ограничения состоянияЧтобы задать ограничения минимального состояния во время выполнения, включите этот входной порт. Если этот порт отключен, блок использует нижние границы, указанные в States.Min
свойство его объекта контроллера.
Чтобы использовать те же границы над горизонтом предсказания, соедините x.min с сигналом вектора-строки с Nx элементами, где Nx количество выходов. Каждый элемент задает нижнюю границу для состояния.
Чтобы изменить границы над горизонтом предсказания от времени k + 1 до времени k + p, соедините x.min с матричным сигналом с Ny столбцами и до p строк. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке применяются для оставшейся части горизонта предсказания.
Чтобы включить этот порт, выберите параметр Lower state limits.
x.max
- Максимальные ограничения состоянияЧтобы задать ограничения максимального состояния во время выполнения, включите этот входной порт. Если этот порт отключен, блок использует верхние границы, указанные в States.Max
свойство его объекта контроллера.
Чтобы использовать те же границы над горизонтом предсказания, соедините x.max с сигналом вектора-строки с Nx элементами, где Nx количество выходов. Каждый элемент задает верхнюю границу для состояния.
Чтобы изменить границы над горизонтом предсказания от времени k + 1 до времени k + p, соедините x.max с матричным сигналом с Ny столбцами и до p строк. Здесь k - текущее время, а p - горизонт предсказания. Каждая строка содержит ограничения для одного шага горизонта предсказания. Если вы задаете меньше p строк, границы в последней строке применяются для оставшейся части горизонта предсказания.
Чтобы включить этот порт, выберите параметр Upper state limits.
x.terminal
- Состояние терминалаКонечное состояние, заданная как вектор сигнал длины Nx. Чтобы задать желаемые ограничения по конечному состоянию, включите этот вход порт. Чтобы задать желаемые конечные состояния во время выполнения через этот входной порт, необходимо задать конечные значения в TerminalState
поле Model
свойство nlmpcMultistage
объект, который передается как параметр в блок. Задайте inf
для состояний, которые не должны быть ограничены терминальным значением. Во время исполнения блок игнорирует любые значения входного сигнала, которые соответствуют inf
значений в объекте. Если вы не задаете какое-либо условие терминального значения в nlmpcMultistage
объект, сигнал в этом входном порте игнорируется во время выполнения.
Если этот порт не включен, ограничение конечного состояния (если он присутствует) не меняется во время выполнения.
Чтобы включить этот порт, выберите параметр Terminal state.
z0
- Начальные предположения для вектора переменных принятия решенийЧтобы задать начальные предположения для вектора переменной принятия решения, включите этот входной порт. Если этот порт отключен, блок использует последовательности переменных принятия решений, вычисленные в предыдущем контрольном интервале, в качестве начальных догадок. Хорошие начальные догадки важны, поскольку они помогают решателю быстрее сходиться к решению.
z0 является вектором-столбцом длины, равной сумме длин всех векторов переменной принятия решения для каждого каскада. Начальные предположения должны быть сложены как:
[state vector guess for stage 1; manipulated variable vector guess for stage 1; manipulated variable vector rate guess for stage 1; % if used slack variable vector guess for stage 1; % if used state vector guess for stage 2; manipulated variable vector guess for stage 2; manipulated variable vector rate guess for stage 2; % if used slack variable vector guess for stage 2; % if used ... state vector guess for stage p; manipulated variable vector guess for stage p; manipulated variable vector rate guess for stage p; % if used slack variable vector guess for stage p; % if used state vector guess for stage p+1; slack variable vector guess for stage p+1; % if used ]
nlmpcMultistage
и nlmpcmove
.
Чтобы включить этот порт, выберите параметр Initial guess.
mv
- Оптимальное манипулируемое переменное действие управленияОптимальное манипулируемое действие управления, выхода как вектор-столбец сигнал длины Nmv, где Nmv - количество манипулируемых переменных.
Если решатель сходится к локальному оптимальному решению (nlp.status положительно), то mv содержит оптимальное решение.
Если решатель достигает максимального количества итераций, не найдя оптимального решения (nlp.status равно нулю) и Optimization.UseSuboptimalSolution
свойство контроллера:
true
, затем mv содержит неоптимальное решение
false
, тогда mv так же, как last_mv
Если решатель отказывает (nlp.status отрицательно), то mv так же, как last_mv.
cost
- Стоимость целевой функцииСтоимость целевой функции, выход как неотрицательный скалярный сигнал. Стоимость определяет степень достижения контроллером своих целей.
Значение стоимости имеет значение только, когда выход nlp.status неотрицателен.
Чтобы включить этот порт, выберите параметр Optimal cost.
Slack
- Вектор переменных Stacked slackВектор переменных Stacked slack, используемый в смягчении ограничений. Если все элементы равны нулю, все мягкие ограничения выполняются на всем горизонте предсказания. Если любой элемент больше нуля, то нарушается по крайней мере одно мягкое ограничение.
Вектор переменной slack для всех каскадов сложены как:
[slack variable vector for stage 1; % if used slack variable vector for stage 2; % if used ... slack variable vector for stage p+1; % if used ]
nlp.status
- Состояние оптимизацииСтатус оптимизации, выход как один из следующих:
Положительное целое число - решатель сходился к оптимальному решению
0
- Максимальное количество итераций, достигнутых без сходимости к оптимальному решению
Отрицательное целое число - ошибка решателя
Чтобы включить этот порт, выберите параметр Optimization status.
mv.seq
- Оптимальная манипулируемая переменная последовательностьОптимальная манипулированная переменная последовательность, возвращаемая как матричный сигнал с p + 1 строками и Nmv столбцами, где p - горизонт предсказания, а Nmv - количество манипулированных переменных.
Первые p строки mv.seq содержат вычисленные оптимальные манипулируемые значения переменных от текущего времени k ко времени k + p -1. Первая строка mv.seq содержит ток, управляемый значениями переменных (выходной mv). Поскольку контроллер не вычисляет оптимальные движения управления в момент времени k + p, последние две строки mv.seq идентичны.
Чтобы включить этот порт, выберите параметр Optimal control sequence.
x.seq
- Оптимальная последовательность состояний модели предсказанияОптимальная последовательность состояний модели предсказания, возвращенная как матричный сигнал с p + 1 строками и Nx столбцами, где p - горизонт предсказания, а Nx - количество состояний.
Первые p строки x.seq содержат вычисленные оптимальные значения состояний от текущего времени k до времени k + p -1. Первая строка x.seq содержит текущие оцененные значения состояния. Поскольку контроллер не вычисляет оптимальные состояния в момент времени k + p, последние две строки x.seq идентичны.
Чтобы включить этот порт, выберите параметр Optimal state sequence.
Multistage Nonlinear MPC Controller
- Объект контроллераnlmpcMultistage
имя объектаВы должны предоставить nlmpcMultistage
объект, который задает нелинейный контроллер MPC. Для этого введите имя nlmpc
объект в рабочем пространстве MATLAB.
Параметры блоков:
nlmpcobj
|
Тип: строка, вектор символов |
По умолчанию:
""
|
Use prediction model sample time
- Флаг для использования шага расчета модели предсказанияВыберите этот параметр, чтобы запустить контроллер, используя тот же шаг расчета, что и его модель предсказания. Чтобы использовать другой шаг расчета контроллера, очистите этот параметр и укажите шаг расчета с помощью параметра Make block run at a different sample time.
Чтобы ограничить количество переменных принятия решений и улучшить вычислительную эффективность, можно запустить контроллер с шагом расчета, который отличается от горизонта предсказания. Например, рассмотрим случай нелинейного контроллера MPC, работающего на частоте 10 Гц. Если шаги расчета объекта управления и контроллера совпадают, для предсказания поведения объекта в течение десяти секунд требуется горизонт предсказания длины 100, который создает большое количество переменных принятия решений. Чтобы уменьшить количество переменных принятия решений, можно использовать шаг расчета объекта 1 секунду и горизонт предсказания длины 10.
Параметры блоков:
UseObjectTs
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"on"
|
Make block run at a different sample time
- шаг расчета контроллераЗадайте этот параметр, чтобы запустить контроллер с использованием другого шага расчета по сравнению с его моделью предсказания.
Чтобы включить этот параметр, очистите параметр Use prediction model sample time.
Параметры блоков:
TsControl
|
Тип: строка, вектор символов |
По умолчанию:
""
|
Use MEX to speed up simulation
- Флаг для симуляции использования контроллером MEX-функцииВыберите этот параметр, чтобы симулировать контроллер с помощью MEX-функции, сгенерированной buildMEX
. Это сокращает время симуляции контроллера. Чтобы задать имя MEX-функции, используйте параметр Specify MEX function name.
Параметры блоков:
UseMEX
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Specify MEX function name
- Имя функции MEX контроллераИспользуйте этот параметр, чтобы задать имя MEX-функции для использования во время симуляции. Чтобы создать MEX-функцию, используйте buildMEX
функция.
Чтобы включить этот параметр, выберите параметр Use MEX to speed up simulation.
Параметры блоков:
mexname
|
Тип: строка, вектор символов |
По умолчанию:
""
|
Measured disturbances
- Добавьте измеренный входной порт нарушения порядкаЕсли ваш контроллер имеет измеренные нарушения порядка, необходимо выбрать этот параметр, чтобы добавить md выходной порт к блоку.
Параметры блоков:
md_enabled
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
StateFcn parameters
- Добавьте входной порт параметров функции состоянияЕсли ваша модель предсказания использует необязательные параметры, необходимо выбрать этот параметр, чтобы добавить state.param входной порт к блоку.
Параметры блоков:
stateparam_enabled
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Stacked Stage parameters
- Добавьте входной порт параметра функций каскадаЕсли ваши функции стоимости или ограничения используют параметры на любом этапе, необходимо выбрать этот параметр, чтобы добавить stage.params входной порт к блоку.
Параметры блоков:
stageparam_enabled
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Optimal cost
- Добавьте оптимальный выходной порт затратВыберите этот параметр, чтобы добавить cost выходной порт к блоку.
Параметры блоков:
cost_enabled
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Optimal control sequence
- Добавьте оптимальный выходной порт последовательности управленияВыберите этот параметр, чтобы добавить mv.seq выходной порт к блоку.
Параметры блоков:
mvseq_enabled
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Optimal state sequence
- Добавьте оптимальный выходной порт последовательности состоянийВыберите этот параметр, чтобы добавить x.seq выходной порт к блоку.
Параметры блоков:
stateseq_enabled
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Slack variable
- Добавить выходной порт переменной slackВыберите этот параметр, чтобы добавить slack выходной порт к блоку.
Параметры блоков:
slack_enabled
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Optimization status
- Добавить выходной порт состояния оптимизацииВыберите этот параметр, чтобы добавить nlp.status выходной порт к блоку.
Параметры блоков:
status_enabled
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Lower MV limits
- Добавьте минимальный входной порт ограничения СНВыберите этот параметр, чтобы добавить mv.min входной порт к блоку.
Параметры блоков:
mv_min
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Upper MV limits
- Добавьте максимальный входной порт ограничения СНВыберите этот параметр, чтобы добавить mv.max входной порт к блоку.
Параметры блоков:
mv_max
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Lower MVRate limits
- Добавьте входной порт ограничения минимальной скорости СНВыберите этот параметр, чтобы добавить dmv.min входной порт к блоку.
Параметры блоков:
mvrate_min
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Upper MVRate limits
- Добавьте входной порт ограничения максимальной скорости СНВыберите этот параметр, чтобы добавить dmv.max входной порт к блоку.
Параметры блоков:
mvrate_max
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Lower state limits
- Добавьте входной порт ограничения минимального состоянияВыберите этот параметр, чтобы добавить x.min входной порт к блоку.
Параметры блоков:
state_min
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Upper state limits
- Добавьте входной порт ограничения максимального состоянияВыберите этот параметр, чтобы добавить x.max входной порт к блоку.
Параметры блоков:
state_max
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Terminal state
- Конечное состояниеВыберите этот параметр, чтобы добавить x.terminal входной порт к блоку.
Параметры блоков:
terminal_state
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Initial guess
- Добавьте начальные входные порты предположенияВыберите этот параметр, чтобы добавить z0 входной порт к блоку.
Примечание
По умолчанию Nonlinar MPC Controller блок использует вычисленные оптимальные состояния, манипулируемые переменные и переменные slack из одного контрольного интервала в качестве начальных предположений для следующего контрольного интервала.
Включите начальные порты догадок, только если это необходимо для вашего приложения.
Параметры блоков:
nlp_initialize
|
Тип: строка, вектор символов |
Значения:
"off" , "on" |
По умолчанию:
"off"
|
Указания и ограничения по применению:
Блок Multistage Nonlinear MPC Controller поддерживает генерацию кода только для многоступенчатых нелинейных контроллеров, которые используют по умолчанию fmincon
решатель с алгоритмом SQP.
При использовании для генерации кода нелинейные контроллеры не поддерживают анонимные функции для модели предсказания, а также стоящие и ограничительные функции каскада.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.