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 Моделирует и Оценка состояния Контроллера.

Модель предсказания объекта или в виде модели 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 см. Решатели QP.

Алгоритм решателя QP в виде одного из следующего:

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

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

Настройки решателя Active-set 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) в виде положительной скалярной величины. Увеличение этого значения улучшает робастность при уменьшении этой точности повышений стоимости.

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

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