Multistage Nonlinear MPC Controller

Симулируйте многоступенчатые нелинейные прогнозирующие контроллеры модели

  • Библиотека:
  • Model Predictive Control Toolbox

  • Multistage Nonlinear MPC Controller block

Описание

Блок Multistage Nonlinear MPC Controller симулирует многоступенчатый нелинейный прогнозирующий контроллер модели. В каждом контрольном интервале блок вычисляет перемещения оптимального управления путем решения задачи нелинейного программирования, в которой различные функции стоимости и ограничения заданы для различных шагов предсказания (этапы). Для получения дополнительной информации о нелинейном MPC смотрите Нелинейный MPC.

Чтобы использовать этот блок, необходимо сначала создать nlmpcMultistage объект в MATLAB® рабочая область.

Ограничения

  • Ни одни из параметров блоков Multistage Nonlinear MPC Controller не являются настраиваемыми.

Порты

Входной параметр

развернуть все

Необходимые входные параметры

Текущая модель предсказания утверждает в виде векторного сигнала длины Nx, где Nx является количеством состояний модели предсказания. Поскольку нелинейный контроллер MPC не выполняет оценку состояния, необходимо или измерить или оценить текущие состояния модели предсказания в каждом контрольном интервале.

Управляющие сигналы использовали на объекте в предыдущем контрольном интервале в виде векторного сигнала длины Nmv, где Nmv является количеством переменных, которыми управляют.

Примечание

Соединитесь last_mv к сигналам мВ на самом деле применился к объекту в предыдущем контрольном интервале. Как правило, эти сигналы мВ являются значениями, сгенерированными контроллером, хотя иногда они могут произойти из другого источника. Например, если ваш контроллер является оффлайновым и рабочим в режиме отслеживания, (то есть, контроллер выход не управляет объектом), то питание фактического входа объекта к last_mv может помочь достигнуть передачи bumpless, когда контроллер переключается назад онлайн.

Дополнительные входные параметры

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

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

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

Зависимости

Чтобы включить этот порт, выберите параметр Measured disturbances.

Если ваш диспетчер использует дополнительные параметры в его модели предсказания, включите этот входной порт и соедините векторный сигнал с элементами Npm, где Npm является количеством параметров состояния (равный Model.ParameterLength свойство nlmpcMultistage объект контроллера). Контроллер передает эти параметры его изменению состояния модели и Функциям Якоби состояния.

Если ваш диспетчер не использует дополнительные параметры, необходимо отключить порт state.param.

Зависимости

Чтобы включить этот порт, выберите параметр StateFcn parameters.

Если ваш диспетчер использует дополнительные параметры в какой-либо стоимости этапа или ограничительной функции, включите этот входной порт и соедините векторный сигнал с элементами Npv, где Npv является общим количеством параметров для всех функций этапа и равен sum(Stages.ParameterLength). Параметры для всех этапов сложены в векторе параметра можно следующим образом.

[parameter vector for stage 1;
 parameter vector for stage 2;
 ...
 parameter vector for stage p+1;
]

На каждом этапе контроллер передает соответствующий вектор параметра стоимости этапа и ограничительным функциям, активным на том этапе.

Если ваш диспетчер не использует дополнительные параметры, необходимо отключить порт stage.param. Для получения дополнительной информации смотрите nlmpcMultistage и nlmpcmove.

Зависимости

Чтобы включить этот порт, выберите параметр Stacked stage parameters.

Онлайновые ограничения

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

Использовать то же самое перепрыгивает через горизонт предсказания, подключение mv.min к сигналу вектора-строки с элементами Nmv, где Nmv является количеством выходных параметров. Каждый элемент задает нижнюю границу для переменной, которой управляют.

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

Зависимости

Чтобы включить этот порт, выберите параметр Lower MV limits.

Чтобы задать максимальные переменные ограничения во время выполнения, которыми управляют, включите этот входной порт. Если этот порт отключен, блок использует верхние границы, заданные в ManipulatedVariables.Max свойство его объекта контроллера.

Использовать то же самое перепрыгивает через горизонт предсказания, подключение mv.max к сигналу вектора-строки с элементами Nmv, где Nmv является количеством выходных параметров. Каждый элемент задает верхнюю границу для переменной, которой управляют.

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

Зависимости

Чтобы включить этот порт, выберите параметр Upper MV limits.

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

Использовать то же самое перепрыгивает через горизонт предсказания, подключение dmv.min к сигналу вектора-строки с элементами Nmv, где Nmv является количеством выходных параметров. Каждый элемент задает нижнюю границу для плавающего курса, которым управляют, изменения.

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

Зависимости

Чтобы включить этот порт, выберите параметр Lower MVRate limits.

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

Использовать то же самое перепрыгивает через горизонт предсказания, подключение dmv.max к сигналу вектора-строки с элементами Nmv, где Nmv является количеством выходных параметров. Каждый элемент задает верхнюю границу для плавающего курса, которым управляют, изменения.

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

Зависимости

Чтобы включить этот порт, выберите параметр Upper MVRate limits.

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

Использовать то же самое перепрыгивает через горизонт предсказания, подключение x.min к сигналу вектора-строки с элементами Nx, где Nx является количеством выходных параметров. Каждый элемент задает нижнюю границу для состояния.

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

Зависимости

Чтобы включить этот порт, выберите параметр Lower state limits.

Чтобы задать максимальные ограничения состояния во время выполнения, включите этот входной порт. Если этот порт отключен, блок использует верхние границы, заданные в States.Max свойство его объекта контроллера.

Использовать то же самое перепрыгивает через горизонт предсказания, подключение x.max к сигналу вектора-строки с элементами Nx, где Nx является количеством выходных параметров. Каждый элемент задает верхнюю границу для состояния.

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

Зависимости

Чтобы включить этот порт, выберите параметр Upper state limits.

Другие

Конечное состояние в виде векторного сигнала длины Nx. Чтобы задать желаемые ограничения конечного состояния, включите этот входной порт. Чтобы задать желаемые конечные состояния во времени выполнения через этот входной порт, необходимо задать конечные значения в TerminalState поле Model свойство nlmpcMultistage объект, который передается в качестве параметра блоку. Задайте inf для состояний, которые вы не должны ограничивать к конечной стоимости. Во время выполнения блок игнорирует любые значения во входном сигнале, которые соответствуют inf значения в объекте. Если вы не задаете условия конечной стоимости в nlmpcMultistage объект, сигнал в этом входном порту проигнорирован во времени выполнения.

Если этому порту не включают, ограничение конечного состояния (если есть) не изменяется во время выполнения.

Зависимости

Чтобы включить этот порт, выберите параметр Terminal state.

Чтобы задать исходные предположения для вектора переменной решения, включите этот входной порт. Если этот порт отключен, блок использует последовательности переменной решения, вычисленные в предыдущем контрольном интервале как исходные предположения. Хорошие исходные предположения важны, поскольку они помогают решателю сходиться к решению быстрее.

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.

Вывод

развернуть все

Требуемый Выход

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

Если решатель сходится к решению для локального оптимума (nlp.status положителен), то mv содержит оптимальное решение.

Если решатель достигает максимального количества итераций, не находя оптимальное решение (nlp.status является нулем), и Optimization.UseSuboptimalSolution свойством контроллера является true, затем mv содержит субоптимальное решение, в противном случае, mv совпадает с last_mv.

Если решатель перестал работать (nlp.status отрицателен), то mv совпадает с last_mv.

Дополнительные Выходные параметры

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

Величина затрат значима только, когда nlp.status выход является неотрицательным.

Зависимости

Чтобы включить этот порт, выберите параметр Optimal cost.

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

Слабый переменный вектор для всех этапов сложен можно следующим образом.

[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
]

Состояние Optimization, выход как одно из следующего:

  • Положительное Целое число — Решатель сходился к оптимальному решению

  • 0 — Максимальное количество итераций, достигнутых, не сходясь на оптимальное решение

  • Отрицательное целое число — Решатель перестал работать

Зависимости

Чтобы включить этот порт, выберите параметр Optimization status.

Оптимальные последовательности

Оптимальная переменная последовательность, которой управляют, возвращенная как матричный сигнал с p +1 строка и столбцы Nmv, где p является горизонтом предсказания и Nmv, является количеством переменных, которыми управляют.

Первые строки p mv.seq содержат расчетные оптимальные значения переменных, которыми управляют, с текущего времени k ко времени k +p-1. Первая строка mv.seq содержит текущие значения переменных, которыми управляют (выход mv). Поскольку контроллер не вычисляет перемещения оптимального управления во время k +p, итоговые две строки mv.seq идентичны.

Зависимости

Чтобы включить этот порт, выберите параметр Optimal control sequence.

Оптимальная модель предсказания утверждает последовательность, возвращенный как матричный сигнал с p +1 столбец строк и Nx, где p является горизонтом предсказания и Nx, является количеством состояний.

Первая строка x.seq содержит текущие предполагаемые значения состояния, или от встроенного средства оценки состояния или от пользовательского входа x[k|k] блока оценки состояния. Следующие строки p x.seq содержат расчетные оптимальные значения состояния со времени k +1 ко времени k +p.

Зависимости

Чтобы включить этот порт, выберите параметр Optimal state sequence.

Параметры

развернуть все

Необходимо обеспечить nlmpcMultistage объект, который задает нелинейный контроллер MPC. Для этого введите имя nlmpc объект в рабочем пространстве MATLAB.

Программируемое использование

Параметры блоков: nlmpcobj
Ввод: строка, вектор символов
Значение по умолчанию: ""

Выберите этот параметр, чтобы запустить контроллер, использующий тот же шаг расчета в качестве его модели предсказания. Чтобы использовать различный шаг расчета контроллера, очистите этот параметр и задайте шаг расчета с помощью параметра Make block run at a different sample time.

Чтобы ограничить количество переменных решения и повысить вычислительную эффективность, можно запустить контроллер с шагом расчета, который отличается от горизонта предсказания. Например, рассмотрите случай нелинейного контроллера MPC, достигающего 10 Гц. Если соответствие шагов расчета объекта и контроллера, предсказывая поведение объекта в течение десяти секунд требует горизонта предсказания длины 100, который производит большое количество переменных решения. Чтобы сократить количество переменных решения, можно использовать шаг расчета объекта 1 секунды и горизонт предсказания длины 10.

Программируемое использование

Параметры блоков: UseObjectTs
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "on"

Задайте этот параметр, чтобы запустить контроллер, использующий различный шаг расчета из его модели предсказания.

Зависимости

Чтобы включить этот параметр, очистите параметр Use prediction model sample time.

Программируемое использование

Параметры блоков: TsControl
Ввод: строка, вектор символов
Значение по умолчанию: ""

Выберите этот параметр, чтобы симулировать контроллер, использующий сгенерированное использование MEX-функции buildMEX. Выполнение так уменьшает время симуляции контроллера. Чтобы задать имя MEX-функции, используйте параметр Specify MEX function name.

Программируемое использование

Параметры блоков: UseMEX
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Используйте этот параметр, чтобы задать имя MEX-функции, чтобы использовать в процессе моделирования. Чтобы создать MEX-функцию, используйте buildMEX функция.

Зависимости

Чтобы включить этот параметр, выберите параметр Use MEX to speed up simulation.

Программируемое использование

Параметры блоков: mexname
Ввод: строка, вектор символов
Значение по умолчанию: ""

Вкладка "Общие"

Если ваш контроллер измерил воздействия, необходимо выбрать этот параметр, чтобы добавить выходной порт md в блок.

Программируемое использование

Параметры блоков: md_enabled
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Если ваша модель предсказания использует дополнительные параметры, необходимо выбрать этот параметр, чтобы добавить входной порт state.param в блок.

Программируемое использование

Параметры блоков: stateparam_enabled
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Если ваша стоимость или ограничение функционируют параметры использования на каком-либо этапе, необходимо выбрать этот параметр, чтобы добавить входной порт stage.param в блок.

Программируемое использование

Параметры блоков: stageparam_enabled
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить выходной порт cost в блок.

Программируемое использование

Параметры блоков: cost_enabled
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить выходной порт mv.seq в блок.

Программируемое использование

Параметры блоков: mvseq_enabled
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить выходной порт x.seq в блок.

Программируемое использование

Параметры блоков: stateseq_enabled
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить выходной порт slack в блок.

Программируемое использование

Параметры блоков: slack_enabled
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить выходной порт nlp.status в блок.

Программируемое использование

Параметры блоков: status_enabled
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Онлайновая вкладка функций

Выберите этот параметр, чтобы добавить входной порт mv.min в блок.

Программируемое использование

Параметры блоков: mv_min
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт mv.max в блок.

Программируемое использование

Параметры блоков: mv_max
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт dmv.min в блок.

Программируемое использование

Параметры блоков: mvrate_min
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт dmv.max в блок.

Программируемое использование

Параметры блоков: mvrate_max
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт x.min в блок.

Программируемое использование

Параметры блоков: state_min
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт x.max в блок.

Программируемое использование

Параметры блоков: state_max
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт x.terminal в блок.

Программируемое использование

Параметры блоков: terminal_state
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Выберите этот параметр, чтобы добавить входной порт z0 в блок.

Примечание

По умолчанию блок Nonlinar MPC Controller использует расчетные оптимальные состояния, переменные, которыми управляют и слабые переменные из одного контрольного интервала как исходные предположения для следующего контрольного интервала.

Включите порт исходного предположения, только если вам нужен он для вашего приложения.

Программируемое использование

Параметры блоков: nlp_initialize
Ввод: строка, вектор символов
Значения: "off"on
Значение по умолчанию: "off"

Расширенные возможности

Смотрите также

|

Введенный в R2021a
Для просмотра документации необходимо авторизоваться на сайте