Моделирование многоступенчатых контроллеров прогнозирования нелинейных моделей
Панель инструментов управления прогнозом модели

Блок контроллера многоступенчатого нелинейного MPC моделирует многоступенчатый контроллер прогнозирования нелинейной модели. В каждом интервале управления блок вычисляет оптимальные движения управления путем решения задачи нелинейного программирования, в которой различные функции затрат и ограничения определены для различных этапов (этапов) прогнозирования. Дополнительные сведения о нелинейном MPC см. в разделе Нелинейный MPC.
Для использования этого блока необходимо сначала создать nlmpcMultistage в рабочей области MATLAB ®.
Ни один из параметров блока многоступенчатого нелинейного контроллера MPC не может быть настроен.
x - входТекущие состояния модели прогнозирования, заданные как векторный сигнал длиной Nx, где Nx - количество состояний модели прогнозирования. Поскольку нелинейный контроллер MPC не выполняет оценку состояния, необходимо измерить или оценить текущие состояния модели прогнозирования в каждом интервале управления.
last_mv - Управляющие сигналы, используемые в установке на предыдущем интервале управленияУправляющие сигналы, используемые в установке на предыдущем интервале управления, определяемом как векторный сигнал lengthNmv, где Nmv - количество манипулируемых переменных.
Примечание
Подключите last_mv к сигналам СН, фактически подаваемым на установку в предыдущем интервале управления. Обычно эти сигналы СН являются значениями, генерируемыми контроллером, хотя это не всегда так. Например, если контроллер находится в автономном режиме и работает в режиме отслеживания; то есть выход контроллера не приводит в действие установку, тогда подача фактического управляющего сигнала в last_mv может помочь достичь безударной передачи, когда контроллер переключается обратно в оперативный режим.
md - входЕсли в модели прогнозирования контроллера измерены нарушения, необходимо включить этот порт и подключить к нему вектор строки или матричный сигнал.
Чтобы использовать одни и те же измеренные значения возмущений по горизонту прогнозирования, соедините md с сигналом вектора строки с элементами Nmd, где Nmd - количество манипулируемых переменных. Каждый элемент определяет значение измеренного возмущения.
Чтобы изменять возмущения по горизонту прогнозирования (предварительный просмотр) от времени k к времени k + p, подключите md к сигналу матрицы со столбцами Nmd и до p + 1 строк. Здесь k - текущее время, а p - горизонт прогнозирования. Каждая строка содержит возмущения для одного шага горизонта прогнозирования. Если указано меньше p + 1 строк, конечные возмущения используются для оставшихся шагов горизонта прогнозирования.
Для активизации этого порта выберите параметр Measured ristances.
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 - Вектор сложенных переменных слабостиВектор сложенных переменных ослабления, используемый при смягчении ограничений. Если все элементы равны нулю, то все мягкие ограничения удовлетворяются по всему горизонту прогнозирования. Если какой-либо элемент больше нуля, нарушается хотя бы одно мягкое ограничение.
Переменный вектор провисания для всех стадий складывается как:
[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 идентичны.
Для активизации этого порта выберите параметр Optimum control sequence.
x.seq - Оптимальная последовательность состояний модели прогнозированияОптимальная последовательность состояний модели прогнозирования, возвращаемая как сигнал матрицы с p + 1 строками и столбцами Nx, где p - горизонт прогнозирования, а Nx - количество состояний.
Первые p строк x.seq содержат вычисленные оптимальные значения состояния от текущего времени k до времени k + p-1. Первая строка x.seq содержит текущие оценочные значения состояния. Поскольку контроллер не вычисляет оптимальные состояния в момент времени k + p, последние две строки x.seq идентичны.
Для активизации этого порта выберите параметр Optimum state sequence.
Multistage Nonlinear MPC Controller - Объект контроллераnlmpcMultistage имя объектаВы должны предоставить nlmpcMultistage объект, определяющий нелинейный контроллер MPC. Для этого введите имя nlmpc в рабочей области MATLAB.
Параметр блока:
nlmpcobj |
| Тип: строка, символьный вектор |
По умолчанию:
"" |
Use prediction model sample time - Флаг для использования времени выборки модели прогнозированияВыберите этот параметр, чтобы запустить контроллер с тем же временем выборки, что и его модель прогнозирования. Чтобы использовать другое время выборки контроллера, очистите этот параметр и укажите время выборки с помощью параметра Make block run at the 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 parameter).
Параметр блока:
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 для ускорения моделирования.
Параметр блока:
mexname |
| Тип: строка, символьный вектор |
По умолчанию:
"" |
Measured disturbances - Добавление входного порта измеренного возмущенияЕсли контроллер измерил нарушения, необходимо выбрать этот параметр, чтобы добавить выходной порт md в блок.
Параметр блока:
md_enabled |
| Тип: строка, символьный вектор |
Значения:
"off", "on" |
По умолчанию:
"off" |
StateFcn parameters - Добавить входной порт параметров функции состоянияЕсли модель прогнозирования использует дополнительные параметры, необходимо выбрать этот параметр, чтобы добавить входной порт state.param.
Параметр блока:
stateparam_enabled |
| Тип: строка, символьный вектор |
Значения:
"off", "on" |
По умолчанию:
"off" |
Stacked Stage parameters - Порт ввода параметра Add stage functionsЕсли функции затрат или ограничений используют параметры на любом этапе, необходимо выбрать этот параметр, чтобы добавить входной порт stage.params.
Параметр блока:
stageparam_enabled |
| Тип: строка, символьный вектор |
Значения:
"off", "on" |
По умолчанию:
"off" |
Optimal 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_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 - Добавление входного порта ограничения минимальной скорости MVВыберите этот параметр, чтобы добавить входной порт dmv.min в блок.
Параметр блока:
mvrate_min |
| Тип: строка, символьный вектор |
Значения:
"off", "on" |
По умолчанию:
"off" |
Upper MVRate limits - Добавление входного порта ограничения максимальной скорости MVВыберите этот параметр, чтобы добавить входной порт 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 использует вычисленные оптимальные состояния, управляемые переменные и переменные ослабления из одного интервала управления в качестве начальных предположений для следующего интервала управления.
Включите порты начального приближения только в том случае, если это необходимо для вашего приложения.
Параметр блока:
nlp_initialize |
| Тип: строка, символьный вектор |
Значения:
"off", "on" |
По умолчанию:
"off" |
Примечания и ограничения по использованию:
Блок многоступенчатых нелинейных контроллеров MPC поддерживает генерацию кода только для многоступенчатых нелинейных контроллеров MPC, использующих значения по умолчанию fmincon решатель с алгоритмом SQP.
При использовании для генерации кода нелинейные контроллеры MPC не поддерживают анонимные функции для модели прогнозирования, а также функции затрат и ограничений этапов.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.