mpc

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

Описание

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

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

Создание

Описание

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

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

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

  • Модель непрерывного времени, затем контроллер дискретизирует модель для прогноза с помощью шага расчета 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 Моделирует.

Примечание

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

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

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

Свойства

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

Шаг расчета контроллера, заданный как положительный конечный скаляр. Диспетчер использует модель дискретного времени с шагом расчета 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 +m1-1, второе свободное перемещение применяется со времени k +m1 через k +m1+m2-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].

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

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

Model структура имеет следующие поля.

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

Примечание

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

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

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

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

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

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

Поле ОписаниеЗначение по умолчанию
X

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Имя мВ, заданное как строка или вектор символов.

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

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

Информация о выходной переменной (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, заданные как строка или вектор символов.

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

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

Чтобы получить доступ к этому свойству, можно использовать псевдоним 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 больше, чем 1 012, количество 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, заданном как одно из следующего:

  • 'Default' — Контроллер MPC автоматически вычисляет максимальное количество итераций решателя QP как:

    MaxIter=4(nc+nv)

    Здесь,

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

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

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

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

    • Замораживает перемещение контроллера если UseSuboptimalSolution false.

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

Если CustomSolver или CustomSolverCodeGen true, диспетчер не требует, чтобы пользовательский решатель соблюдал MaxIter.

Примечание

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

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

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

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

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

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

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

Если CustomSolver или CustomSolverCodeGen true, диспетчер не требует, чтобы пользовательский решатель соблюдал UseWarmStart.

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

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

Если CustomSolver true, диспетчер не требует, чтобы пользовательский решатель соблюдал MaxIter и UseWarmStart.

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

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

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

Если CustomSolverCodeGen true, диспетчер не требует, чтобы пользовательский решатель соблюдал MaxIter и UseWarmStart.

Для получения дополнительной информации об определении пользовательских решателей смотрите Пользовательский Решатель 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 содержит только верхние и нижние границы на переменной, которой управляют. В общем случае можно задать дополнительные свойства 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 функция, или когда вы изменяете свойство контроллера. Создание включает основную валидность и проверки на непротиворечивость, такие как размерности сигнала и неотрицательность весов.

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

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

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

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

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

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

Ошибки, запускающиеся в R2018b

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