exponenta event banner

mpc

Прогнозирующий контроллер модели

Описание

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

Дополнительные сведения о структуре контроллеров прогнозирования модели см. в разделе Моделирование MPC.

Создание

Описание

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 или линейная модель Toolbox™ идентификации системы. Указанная установка соответствует Model.Plant свойства контроллера.

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

Дополнительные сведения о моделях прогнозирования MPC см. в разделе Моделирование MPC.

Примечание

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

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

Дополнительные сведения о моделях прогнозирования MPC см. в разделе Моделирование MPC.

Свойства

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

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

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

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

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

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

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

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

    Дополнительные сведения о блокировании манипулируемых переменных см. в разделе Блокирование манипулируемых переменных.

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

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

Примечание

Прямой переход от обрабатываемых переменных к любым выводам в 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 )/Ts.

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

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

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

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

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

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

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

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

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

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

Мягкость верхней границы MV, где большее значение равенства для релаксации (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 для горизонта прогнозирования, укажите скалярное значение.

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

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

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

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

Имя 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 для горизонта прогнозирования, укажите скалярное значение.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Манипулируемые переменные настроечные веса, которые штрафуют за отклонения от целей СН, указанные как вектор строки или массив неотрицательных значений. Вес по умолчанию для всех управляемых переменных: 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 строго выпуклой, когда номер условия гессенской матрицы KΔU больше 1012, величина 10*sqrt(eps) добавляется к каждому диагональному члену. См. раздел Функция затрат.

При использовании функции альтернативных затрат укажите Weights.ManipulatedVariablesRate в виде матрицы ячеек, которая содержит матрицу Nmv-на-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 по горизонту прогнозирования не поддерживается. Дополнительные сведения см. в разделе Функция альтернативных затрат.

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

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

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

  • 'active-set' - Решить проблему QP с помощью алгоритма активного набора KWIK.

  • 'interior-point' - Решить проблему QP с помощью алгоритма основной-двойной внутренней точки с предиктором-корректором Мехротра.

Активные настройки решателя 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), заданный как положительный скаляр.

Допуск окончания для оптимальности первого порядка (остаток средней комплементарности 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Проверить контроллер ПДК на наличие конструктивных ошибок и проблем устойчивости во время выполнения
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, так что - 1≤u≤1.

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.

Алгоритмы

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

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

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

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

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

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

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

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

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