mpc

Моделируйте прогнозирующий контроллер

Описание

Модельный прогнозирующий контроллер использует линейные модели объекта, нарушения порядка и шума, чтобы оценить состояние контроллера и предсказать будущие выходы объекта. Используя предсказанные выходы объекта управления, контроллер решает квадратичную задачу оптимизации программирования, чтобы определить движения управления.

Для получения дополнительной информации о структуре прогнозирующих контроллеров модели, см. MPC Modeling.

Создание

Описание

mpcobj = mpc(plant) создает объект прогнозирующего контроллера модели на основе модели предсказания в дискретном времени plant. Контроллер, mpcobj, наследует его контрольный интервал от plant.Ts, и его модуль времени от plant.TimeUnit. Все другие свойства контроллера являются значениями по умолчанию. После создания контроллера MPC можно задать его свойства с помощью записи через точку.

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

mpcobj = mpc(plant,ts) создает прогнозирующий контроллер модели на основе указанной модели объекта управления и устанавливает Ts свойство контроллера. Если plant является:

  • Модель в непрерывном времени, затем контроллер дискретизирует модель для предсказания с помощью шага расчета ts

  • В дискретной модели с заданным временем расчета контроллер переизбирает объект для предсказания с помощью шага расчета ts

  • Модель в дискретном времени с неопределенным шагом расчета (plant.Ts = –1), он наследует шаг расчета ts при использовании для предсказаний

пример

mpcobj = mpc(plant,ts,P,M,W,MV,OV,DV) задает следующие свойства контроллера. Если любое из этих значений опущено или пустое, применяются значения по умолчанию.

  • P устанавливает PredictionHorizon свойство.

  • M устанавливает ControlHorizon свойство.

  • W устанавливает Weights свойство.

  • MV устанавливает ManipulatedVariables свойство.

  • OV устанавливает OutputVariables свойство.

  • DV устанавливает DisturbanceVariables свойство.

mpcobj = mpc(model) создает объект прогнозирующего контроллера модели на основе заданного набора моделей предсказания, который включает в себя объект, входное нарушение порядка и модели шума измерения наряду с номинальными условиями, при которых были получены модели. Когда вы не задаете шаг расчета, модель объекта управления, model.Plant, должна быть моделью в дискретном времени. Этот синтаксис устанавливает Model свойство контроллера.

mpcobj = mpc(model,ts) создает прогнозирующий контроллер модели на основе указанной модели объекта управления и устанавливает Ts свойство контроллера. Если model.Plant является моделью LTI в дискретном времени с неопределенным шагом расчета (model.Plant.Ts = –1), он наследует шаг расчета ts при использовании для предсказаний.

mpcobj = mpc(model,ts,P,M,W,MV,OV,DV) задает дополнительные свойства контроллера. Если любое из этих значений опущено или пустое, применяются значения по умолчанию.

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

расширить все

Модель предсказания объекта, заданная либо как модель LTI, либо как модель линейной системы Identification Toolbox™. Указанный объект соответствует Model.Plant свойство контроллера.

Если вы не задаете шага расчета при создании контроллера, plant должна быть моделью в дискретном времени.

Для получения дополнительной информации о моделях предсказания MPC, см. MPC Modeling.

Примечание

Прямое сквозное соединение от манипулированных переменных к любому выходу в plant не поддерживается.

Модель предсказания, заданная как структура с таким же форматом, как и Model свойство контроллера. Если вы не задаете шага расчета при создании контроллера, model.Plant должна быть моделью в дискретном времени.

Для получения дополнительной информации о моделях предсказания MPC, см. MPC Modeling.

Свойства

расширить все

Шаг расчета контроллера, заданное как положительный конечный скаляр. Контроллер использует модель в дискретном времени со шаг расчета Ts для предсказания.

Шаги горизонта предсказания, заданные как положительное целое число. Область продукта PredictionHorizon и Ts - время предсказания; то есть как далеко контроллер смотрит в будущее.

Горизонт управления, заданный как один из следующих:

  • Положительное целое число, m, между 1 и p включительно, где p равно PredictionHorizon. В этом случае контроллер вычисляет, m свободные движения управления происходят в моменты времени, k через k + m -1, и удерживает выходной сигнал контроллера постоянным для остальных шагов горизонта предсказания от k + m до k + p -1. Здесь k текущий контрольный интервал.

  • Вектор положительных целых чисел [m 1, m 2,...], задающий длины блокирующих интервалов. По умолчанию контроллер вычисляет M блоки свободных ходов, где M - количество интервалов блокировки. Первое бесплатное движение относится ко временам k через k + <reservedrangesplaceholder6> 1-1, второе бесплатное движение применяется со времени k + <reservedrangesplaceholder4> 1 через k + <reservedrangesplaceholder2> 1 + <reservedrangesplaceholder1> 2-1 и так далее. Использование шагов блоков может улучшить робастность вашего контроллера. Сумма значений в ControlHorizon должен совпадать с p горизонта предсказания. Если вы задаете вектор, сумма которого:

    • Меньше, чем горизонт предсказания, тогда контроллер добавляет интервал блокировки. Длина этого интервала такова, что сумма длин интервала p. Для примера, если p = 10 и вы задаете контрольный горизонт ControlHorizon= [1 2 3], затем контроллер использует четыре интервала с длинами [1 2 3 4].

    • Больше горизонта предсказания, затем интервалы усекаются до тех пор, пока сумма длин интервалов не будет равна p. Для примера, если p = 10 и вы задаете контрольный горизонт ControlHorizon= [1 2 3 6 7], затем контроллер использует четыре интервала с длинами [1 2 3 4].

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

Модель предсказания и номинальные условия, заданные как структура со следующими полями. Для получения дополнительной информации о модели предсказания MPC, см. Моделирование MPC и оценку состояния контроллера.

Модель предсказания объекта, заданная либо как модель LTI, либо как модель линейной системы Identification Тулбокса.

Примечание

Прямое сквозное соединение от манипулированных переменных к любому выходу в plant не поддерживается.

Модель, описывающая ожидаемые неизмеренные нарушения порядка, заданная как модель LTI. Эта модель требуется только, когда объект имеет неизмеренные нарушения порядка. Можно задать эту модель возмущения непосредственно с помощью записи через точку или используя setindist функция.

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

Модель, описывающая ожидаемый выходной шум измерения, заданная как модель LTI.

По умолчанию шум измерения ожидается белым шумом с единичным отклонением. Чтобы смоделировать сигнал, для каждого измеренного канала добавляется безразмерное усиление единицы.

Номинальная рабочая точка, в которой линеаризируется модель объекта управления, заданная как структура со следующими полями.

ОбластьОписаниеДефолт
X

Состояние объекта в рабочей точке, заданное как вектор-столбец с длиной, равной количеству состояний в Model.Plant.

нулевой вектор
U

Вход объекта в рабочей точке, включая манипулируемые переменные и измеренные и не измеренные нарушения порядка, задается как вектор-столбец с длиной, равной количеству входов в Model.Plant.

нулевой вектор
Y

Выход объекта в рабочей точке, включая измеренные и не измеренные выходы, задается как вектор-столбец с длиной, равной количеству выходов в Model.Plant.

нулевой вектор
DX

Для моделей в непрерывном времени, DX является производной от состояния в рабочей точке: DX= f (X, U). Для моделей в дискретном времени, DX= x (k + 1) - x (k) = f (X, U) - X. Задайте DX как вектор-столбец с длиной, равной количеству состояний в Model.Plant.

нулевой вектор

Информация, ограничения и масштабные коэффициенты Манипулированной Переменной (MV), заданные как массив структур с Nmv элементами, где Nmv количество манипулируемых переменных. Для доступа к этому свойству можно использовать псевдоним MV вместо ManipulatedVariables.

Примечание

Скорости относятся к различию и u (k) = u (k) - u (k -1). Ограничения и веса, основанные на производных du/dt входных сигналов в непрерывном времени, должны быть правильно переформулированы для различия в дискретном времени u (k), с помощью приближения du/dt ≅ u (k )/ T s.

Каждый структурный элемент имеет следующие поля.

MV нижняя граница, заданная как скаляр или вектор. По умолчанию эта нижняя граница без ограничений.

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

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

Верхняя граница MV, заданная как скаляр или вектор. По умолчанию эта верхняя граница без ограничений.

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

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

MV нижняя граничная мягкость, где большая равная проблема значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный скаляр или вектор. По умолчанию нижние границы СН являются жесткими ограничениями.

Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.

Чтобы изменить значение ECR по горизонту предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательное значение ECR используется для остальных шагов горизонта предсказания.

MV верхняя граничная мягкость, где большая равная проблема значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный скаляр или вектор. По умолчанию верхние границы СН являются жесткими ограничениями.

Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.

Чтобы изменить значение ECR по горизонту предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательное значение ECR используется для остальных шагов горизонта предсказания.

Скорость изменения MV нижняя граница, заданная как непозитивный скаляр или вектор. Скорость изменения MV определяется как MV (k) - MV (k -1), где k - текущее время. По умолчанию эта нижняя граница без ограничений.

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

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

MV скорость изменения верхней границы, заданная как неотрицательный скаляр или вектор. Скорость изменения MV определяется как MV (k) - MV (k -1), где k - текущее время. По умолчанию эта нижняя граница без ограничений.

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

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

Скорость изменения MV нижняя связанная мягкость, где большая равная проблема для значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный конечный скаляр или вектор. По умолчанию нижние границы скорости изменения MV являются жесткими ограничениями.

Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.

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

Скорость изменения MV верхней связанной мягкости, где большая равная проблема для значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный конечный скаляр или вектор. По умолчанию скорость изменения MV верхние границы являются жесткими ограничениями.

Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.

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

Имя MV, заданное как строковый или символьный вектор.

Модули измерения MV, заданные как строковый или символьный вектор.

Коэффициент шкалы MV, заданный как положительный конечный скаляр. В целом используйте рабочую область значений управляемой переменной. Установка правильного масштабного коэффициента может улучшить числовое обусловление для оптимизации. Для получения дополнительной информации смотрите Задать масштабные коэффициенты.

Тип СН, заданный как:

  • 'binary' - Это ограничивает управляемую переменную равной 0 или 1.

  • 'integer' - Это ограничивает манипулируемую переменную целым числом.

  • Вектор, содержащий все возможные значения - Это ограничивает манипулируемую переменную заданными значениями, например mpcobj.MV(1).Type=[-1,0,0.5,1,2];.

По умолчанию для типа задано значение 'continuous', что указывает, что манипулируемая переменная непрерывна.

Для получения дополнительной информации смотрите Дискретный набор управления MPC.

Выход переменной (OV), границы и масштабные коэффициенты, заданные как массив структур с Ny элементами, где Ny - количество выходных переменных. Для доступа к этому свойству можно использовать псевдоним OV вместо OutputVariables.

Каждый структурный элемент имеет следующие поля.

OV нижняя граница, заданная как скаляр или вектор. По умолчанию эта нижняя граница без ограничений.

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

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

OV верхняя граница, заданная как скаляр или вектор. По умолчанию эта верхняя граница без ограничений.

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

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

Нижняя граничная мягкость OV, где большая равная проблема значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательная конечная скаляра или вектор. По умолчанию верхние границы OV являются мягкими ограничениями.

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

Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.

Чтобы изменить значение ECR по горизонту предсказания от времени k + 1 до времени k + p, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательное значение ECR используется для остальных шагов горизонта предсказания.

OV верхняя граничная мягкость, где большая равная проблема значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный конечный скаляр или вектор. По умолчанию нижние границы OV являются мягкими ограничениями.

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

Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.

Чтобы изменить значение ECR по горизонту предсказания от времени k + 1 до времени k + p, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательное значение ECR используется для остальных шагов горизонта предсказания.

Имя OV, заданное как строковый или символьный вектор.

Модули, заданные как строковый или символьный вектор.

Коэффициент шкалы OV, заданный как положительный конечный скаляр. В целом используйте рабочую область значений переменного выхода. Установка правильного масштабного коэффициента может улучшить числовое обусловление для оптимизации. Для получения дополнительной информации смотрите Задать масштабные коэффициенты.

Информация и масштабные коэффициенты переменной нарушения порядка (DV), заданные как массив структур с Nd элементами, где Nd - общее количество измеренных и неизмеренных входов нарушения порядка. Порядок сигналов нарушения порядка в DisturbanceVariables является следующим: первые значения Nmd относятся к измеренным входным нарушениям порядка, последние N значения ud относятся к неизмеренным входным нарушениям порядка.

Для доступа к этому свойству можно использовать псевдоним DV вместо DisturbanceVariables.

Каждый структурный элемент имеет следующие поля.

DV- имени, заданный как строка или вектор символов.

Модули, заданные как строковый или символьный вектор.

Коэффициент шкалы DV, заданный как положительный конечный скаляр. Установка правильного масштабного коэффициента может улучшить числовое обусловление для оптимизации. Для получения дополнительной информации смотрите Задать масштабные коэффициенты.

Веса настройки функции стандартных затрат, заданные как структура. Контроллер применяет эти веса к масштабируемым переменным. Поэтому веса настройки являются безразмерными значениями.

Формат OutputWeights должен совпадать с форматом Weights.OutputVariables свойство объекта контроллера. Например, вы не можете задать постоянные веса через горизонт предсказания в объекте контроллера, а затем задать изменяющиеся во времени веса, используя mpcmoveopt.

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

Манипулируемые веса настройки переменных, которые штрафуют отклонения от целей MV, заданные как вектор-строка или массив неотрицательных значений. Вес по умолчанию для всех манипулируемых переменных 0.

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

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

Если вы используете альтернативную функцию затрат, задайте Weights.ManipulatedVariables как массив ячеек, который содержит Nmv -by Nmv Ru матрицу. Для примера, mpcobj.Weights.ManipulatedVariables = {Ru}. Ru должна быть положительной полуопределенной матрицей. Изменение матрицы Ru по горизонту предсказания Не поддерживается. Для получения дополнительной информации см. раздел Функция альтернативных затрат.

Манипулируемые веса настройки переменной скорости, которые штрафуют большие изменения в движениях управления, заданные как вектор-строка или массив неотрицательных значений. Вес по умолчанию для всех манипулируемых переменных скоростей 0.1.

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

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

Примечание

Лучшую практику использовать ненулевые манипулируемые веса переменных скоростей.

Чтобы улучшить числовую робастность задачи оптимизации, программное обеспечение добавляет величину 10*sqrt(eps) каждому нулевому весу.

Примечание

Лучшую практику использовать ненулевые манипулируемые веса переменных скоростей. Если все манипулируемые веса переменной скорости строго положительны, получившаяся задача QP строго выпукла. Если некоторые веса равны нулю, QP Гессиан может быть положительным полусердинитом. Чтобы сохранить задачу QP строго выпуклой, когда число обусловленности матрицы Гессия K12, количество 10*sqrt(eps) добавляется к каждому диагональному термину. Смотрите Функцию затрат.

Если вы используете альтернативную функцию затрат, задайте Weights.ManipulatedVariablesRate как массив ячеек, который содержит Nmv -by Nmv RΔu матрицу. Для примера, mpcobj.Weights.ManipulatedVariablesRate = {Rdu}. RΔu должна быть положительной полуопределенной матрицей. Изменение матрицы RΔu по горизонту предсказания Не поддерживается. Для получения дополнительной информации см. раздел Функция альтернативных затрат.

Выходы веса настройки переменных, которые штрафуют отклонение от выходных ссылок, заданные как вектор-строка или массив неотрицательных значений. Вес по умолчанию для всех выходных переменных 1.

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

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

Если вы используете альтернативную функцию затрат, задайте Weights.OutputVariables как массив ячеек, который содержит Ny -by Ny Q матрицу. Для примера, mpcobj.Weights.OutputVariables = {Q}. Q должна быть положительной полуопределенной матрицей. Изменение матрицы Q по горизонту предсказания Не поддерживается. Для получения дополнительной информации см. раздел Функция альтернативных затрат.

Потеря веса настройки переменной, заданная как положительная скалярная величина. Увеличьте или уменьшите равную заботу о весе релаксации (ECR), чтобы сделать все мягкие ограничения более жесткими или мягкими, соответственно.

Параметры оптимизации QP, заданные как структура со следующими полями. Дополнительные сведения о поддерживаемых решателях QP см. в разделе Решатели QP.

Алгоритм решателя QP, заданный как один из следующих:

  • 'active-set' - Решите задачу QP, используя алгоритм активного набора KWIK.

  • 'interior-point' - Решите задачу QP, используя основной-двойственный алгоритм внутренней точки с Mehrotra предиктор-корректором.

Активные настройки решателя QP, заданные как структура. Эти настройки применяются только при Algorithm является 'active-set'.

Если CustomSolver или CustomSolverGodeGen является trueконтроллер не требует, чтобы пользовательский решатель выполнял эти настройки.

Можно задать следующие настройки оптимизатора активного набора.

Максимальное количество итераций, допустимое при вычислении решения QP, заданное как одно из следующего:

  • 'default' - Контроллер MPC автоматически вычисляет максимальное количество итераций решателя QP как 4(nc+nv), где:

    • nc - общее количество ограничений в горизонте предсказания.

    • nv - общее количество переменных оптимизации на контрольном горизонте.

    Значение по умолчанию MaxIterations значение имеет нижнюю границу 120.

  • Положительное целое число - решатель QP останавливается после заданного количества итераций. Если решатель не может сходиться в конечной итерации, контроллер:

    • Замораживает движение контроллера, если UseSuboptimalSolution является false.

    • Применяет неоптимальное решение, достигнутое после окончательной итерации, если UseSuboptimalSolution является true.

Примечание

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

Допуск, используемый для проверки того, что ограничения неравенства удовлетворены оптимальным решением, заданным как положительная скалярная величина. Больший ConstraintTolerance значение допускает большие нарушения ограничений.

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

Настройки QP решателя внутренней точки, заданные как структура. Эти настройки применяются только при Algorithm является 'interior-point'.

Если CustomSolver или CustomSolverGodeGen является trueконтроллер не требует, чтобы пользовательский решатель выполнял эти настройки.

Можно задать следующие настройки оптимизатора внутренней точки.

Максимальное количество итераций, допустимое при вычислении решения QP, заданное в виде положительного целого числа. Решатель QP останавливается после заданного количества итераций. Если решатель не может сходиться в конечной итерации, контроллер:

  • Замораживает движение контроллера, если UseSuboptimalSolution является false.

  • Применяет неоптимальное решение, достигнутое после окончательной итерации, если UseSuboptimalSolution является true.

Допуск, используемый для проверки того, что ограничения равенства и неравенства удовлетворены оптимальным решением, заданным в качестве положительной скалярной величины. Больший ConstraintTolerance значение допускает большие нарушения ограничений.

Допуск завершения для оптимальности первого порядка (KKT dual невязки), заданный как положительная скалярная величина.

Допуск завершения для оптимальности первого порядка (KKT среднего значения невязки комплементарности), заданный как положительная скалярная величина. Увеличение этого значения улучшает робастность, в то время как уменьшение этого значения повышает точность.

Допуск завершения для переменных принятия решений, заданный как положительная скалярная величина.

Смешано-целочисленные настройки решателя QP, заданные как структура.

Если CustomSolver или CustomSolverGodeGen является trueконтроллер не требует, чтобы пользовательский решатель выполнял эти настройки.

Можно задать следующие смешано-целочисленные настройки оптимизатора QP.

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

  • Замораживает движение контроллера, если UseSuboptimalSolution является false.

  • Применяет неоптимальное решение, достигнутое после окончательной итерации, если UseSuboptimalSolution является true.

Допуск, используемый для проверки того, что ограничения равенства и неравенства удовлетворены оптимальным решением, заданным в качестве положительной скалярной величины. Больший ConstraintTolerance значение допускает большие нарушения ограничений.

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

Флаг для округления решения в корневом узле, заданный как логический. Когда RoundingAtRootNode= 1решатель округляет решение расслабленной задачи QP, решенной в корневом узле дерева поиска, так что выполняются дискретные ограничения. Затем решается дополнительный QP относительно остальных (непрерывных) переменных. Если такой QP имеет возможное решение, соответствующая стоимость используется как действительная верхняя граница оптимального решения исходной смешанно-целочисленной задачи. Наличие такой верхней границы может исключить целые поддеревья в остальной части выполнения решателя и ускорить решение следующих релаксаций QP. Разве что количество итераций MaxIterations маленькая, стоит задать RoundingAtRootNode= 1. В противном случае установка RoundingAtRootNode= 0 избегает решения дополнительного QP.

Это максимальное количество ожидающих релаксаций QP, которые могут быть сохранены. он определяет память, выделенную для хранения всех ожидающих релаксаций QP, что пропорционально (2 * m + 3 * Nd) * MaxPendingNodes, где m - количество ограничений неравенства, а Nd - количество дискретных переменных. Если количество ожидающих расслаблений превышает MaxPendingNodes затем решатель останавливается с кодом состояния -3, -4 или -5.

Минимальное значение, допустимое для выходного ограничения, равное для значений релаксации (ECR), задается в виде неотрицательного скаляра. Значение 0 указывает, что жесткие выходные ограничения разрешены. Если любой из OutputVariables.MinECR или OutputVariables.MaxECR свойства контроллера MPC меньше MinOutputECRотобразится предупреждение, и значение будет увеличено до MinOutputECR во время расчета.

Флаг, указывающий, является ли неоптимальное решение приемлемым, задается как логическое значение. Когда решатель QP достигает максимального количества итераций, не находя решения (выходной флаг 0), контроллер:

  • Замораживает значения СН, если UseSuboptimalSolution является false

  • Применяет неоптимальное решение, найденное решателем после окончательной итерации, если UseSuboptimalSolution является true

Чтобы задать максимальное количество итераций, в зависимости от значения Algorithm, используйте либо ActiveSetOptions.MaxIterations или InteriorPointOptions.MaxIterations.

Флаг, указывающий, использовать ли пользовательский решатель QP для симуляции, задается как логическое значение. Если CustomSolver является trueпользователь должен предоставить mpcCustomSolver функция на MATLAB® путь.

Этот пользовательский решатель не используется для генерации кода. Чтобы сгенерировать код для контроллера с пользовательским решателем, используйте CustomSolverCodeGen.

Если CustomSolver является trueконтроллер не требует, чтобы пользовательский решатель выполнял настройки в ActiveSetOptions или InteriorPointOptions.

Для получения дополнительной информации об использовании пользовательского решателя QP смотрите, Пользовательский решатель QP.

Флаг, указывающий, использовать ли пользовательский решатель QP для генерации кода, задается как логическое значение. Если CustomSolverCodeGen является trueпользователь должен предоставить mpcCustomSolverCodeGen функция в пути MATLAB.

Этот пользовательский решатель не используется для симуляции. Чтобы симулировать контроллер с пользовательским решателем, используйте CustomSolver.

Если CustomSolverCodeGen является trueконтроллер не требует, чтобы пользовательский решатель выполнял настройки в ActiveSetOptions или InteriorPointOptions.

Для получения дополнительной информации об использовании пользовательского решателя QP смотрите, Пользовательский решатель QP.

Пользовательские заметки, сопоставленные с контроллером MPC, заданные как массив ячеек из векторов символов.

Пользовательские данные, сопоставленные с контроллером MPC, заданные как любые данные MATLAB, такие как массив ячеек или структура.

Это свойство доступно только для чтения.

Дата и время создания контроллера, заданные как вектор со следующими элементами:

  • History(1) - Год

  • History(2) - Месяц

  • History(3) - День

  • History(4) - Часы

  • History(5) - Минуты

  • History(6) - Секунды

Функции объекта

reviewИсследуйте контроллер MPC на ошибки проектирования и проблемы устойчивости во время исполнения
mpcmoveВычислите оптимальное действие управления и состояния контроллера обновления
simСимулируйте контроллер MPC в замкнутом цикле с линейным объектом
mpcstateСостояние контроллера MPC
getCodeGenerationDataСоздайте структуры данных для mpcmoveCodeGeneration
generateExplicitMPCПреобразуйте неявный контроллер MPC в явный контроллер MPC

Примеры

свернуть все

Создайте модель объекта управления с передаточной функцией (s+1)/(s2+2s).

Plant = tf([1 1],[1 2 0]);

Объект является SISO, поэтому его вход должен быть манипулированной переменной, и его выход должен быть измерен. В целом, рекомендуется обозначить все типы сигналов объекта с помощью setmpcsignals команда или LTI InputGroup и OutputGroup свойства.

Задайте шаг расчета для контроллера.

Ts = 0.1;

Задайте границы манипулируемой переменной, u, таким что -1u1.

MV = struct('Min',-1,'Max',1);

MV содержит только верхнюю и нижнюю границы манипулируемой переменной. В целом можно задать дополнительные свойства СН. Когда вы не задаете другие свойства, применяются их значения по умолчанию.

Задайте 20-интервальный горизонт предсказания и 3-интервальный контрольный горизонт.

p = 20;
m = 3;

Создайте контроллер MPC с использованием заданных значений. Пятый входной параметр пуст, поэтому применяются веса настройки по умолчанию.

MPCobj = mpc(Plant,Ts,p,m,[],MV);
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.

Алгоритмы

Чтобы минимизировать вычислительные накладные расходы, создание прогнозирующего контроллера происходит в двух фазах. Первый происходит в creation, когда вы используете mpc function, или когда вы изменяете свойство контроллера. Создание включает в себя основные проверки валидности и согласованности, такие как размерности сигнала и неотрицательность весов.

Вторая фаза является initialization, которая происходит, когда вы впервые используете объект в симуляции или аналитической процедуре. Инициализация вычисляет все постоянные свойства, необходимые для эффективной числовой эффективности, такие как матрицы, определяющие оптимальную задачу управления и усиления оценки состояния. Дополнительные диагностические проверки происходят во время инициализации, такие как верификация того, что состояния контроллера наблюдаемы.

По умолчанию обе фазы отображают информативные сообщения в командном окне. Вы можете включить или выключить эти сообщения, используя mpcverbosity функция.

Альтернативная функциональность

Можно также создать прогнозирующие контроллеры модели с помощью приложения MPC Designer.

Вопросы совместимости

расширить все

Ошибки, начинающиеся в R2018b

Представлено до R2006a