Прогнозирующий контроллер модели
Прогнозирующий диспетчер модели использует линейный объект, воздействие и шумовые модели, чтобы оценить, что диспетчер утверждает и предсказывает будущий объект выходные параметры. Используя предсказанный объект выходные параметры, диспетчер решает задачу оптимизации квадратичного программирования, чтобы определить перемещения управления.
Для получения дополнительной информации о структуре прогнозирующих контроллеров модели смотрите, что MPC Моделирует.
создает прогнозирующий контроллер модели, основанный на объектах на модели mpcobj
= mpc(plant
)plant
предсказания дискретного времени. Контроллер,
mpcobj
, наследовал его контрольный интервал от plant.Ts
, и его единица измерения времени от plant.TimeUnit
. Все другие свойства контроллера являются значениями по умолчанию. После того, как вы создадите контроллер MPC, можно установить его свойства с помощью записи через точку.
Если plant.Ts = -1
, необходимо установить Ts
свойство контроллера к положительному значению прежде, чем спроектировать и симулировать ваш контроллер.
создает прогнозирующий контроллер модели на основе заданной модели объекта управления и устанавливает mpcobj
= mpc(plant
,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
)
plant
— Модель предсказания объектаМодель предсказания объекта или в виде модели LTI или в виде модели Identification Toolbox™ линейной системы. Заданный объект соответствует Model.Plant
свойство контроллера.
Если вы не задаете шаг расчета при создании контроллера, plant
должна быть модель дискретного времени.
Для получения дополнительной информации о моделях предсказания MPC смотрите, что MPC Моделирует.
Примечание
Прямое сквозное соединение от переменных, которыми управляют, до любого выхода в plant
не поддерживается.
model
— Модель PredictionМодель Prediction в виде структуры с тем же форматом как Model
свойство контроллера. Если вы не задаете шаг расчета при создании контроллера, model.Plant
должна быть модель дискретного времени.
Для получения дополнительной информации о моделях предсказания MPC смотрите, что MPC Моделирует.
Ts
— Шаг расчета контроллераШаг расчета контроллера в виде положительного конечного скаляра. Диспетчер использует модель дискретного времени с шагом расчета Ts
для предсказания.
PredictionHorizon
— Горизонт предсказанияГоризонт предсказания продвигается в виде положительного целого числа. Продукт PredictionHorizon
и Ts
время предсказания; то есть, как далеко контроллер изучает будущее.
ControlHorizon
— Управляйте горизонтом
(значение по умолчанию) | положительное целое число | вектор из положительных целых чиселУправляйте горизонтом в виде одного из следующего:
Положительное целое число, 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]
.
Для получения дополнительной информации о переменном блокировании, которым управляют смотрите Переменное Блокирование, которым Управляют.
Model
— Модель Prediction и номинальные условияМодель Prediction и номинальные условия в виде структуры со следующими полями. Для получения дополнительной информации о модели предсказания MPC смотрите, что MPC Моделирует и Оценка состояния Контроллера.
Plant
— Модель предсказания объектаМодель предсказания объекта или в виде модели LTI или в виде модели Identification Toolbox линейной системы.
Примечание
Прямое сквозное соединение от переменных, которыми управляют, до любого выхода в plant
не поддерживается.
Disturbance
— Модель, описывающая, ожидала неизмеренные воздействияМодель, описывающая, ожидала неизмеренные воздействия в виде модели LTI. Эта модель требуется только, когда объект имеет неизмеренные воздействия. Можно установить это возмущение непосредственно с помощью записи через точку или с помощью setindist
функция.
По умолчанию введите воздействия, как, ожидают, будут интегрированы белый шум. Чтобы смоделировать сигнал, интегратор с безразмерным усилением единицы добавляется для каждого неизмеренного входного воздействия, если сложение не заставляет контроллер терять наблюдаемость состояния. В этом случае воздействие, как ожидают, будет белым шумом, и таким образом, безразмерное усиление единицы будет добавлено к тому каналу вместо этого.
Noise
— Модель, описывающая ожидаемый выходной шум измеренияМодель, описывающая ожидаемый выходной шум измерения в виде модели LTI.
По умолчанию шум измерения, как ожидают, будет белым шумом с модульным отклонением. Чтобы смоделировать сигнал, безразмерное усиление единицы добавляется для каждого измеренного канала.
Nominal
— Номинальная рабочая точка, в которой линеаризуется модель объекта управленияНоминальная рабочая точка, в которой модель объекта управления линеаризуется в виде структуры со следующими полями.
Поле | Описание | Значение по умолчанию |
---|---|---|
X | Состояние объекта в рабочей точке в виде вектор-столбца с длиной равняется количеству состояний в | нулевой вектор |
U | Вход Plant в рабочей точке, включая переменные, которыми управляют, и измеренные и неизмеренные воздействия в виде вектор-столбца с длиной равняется количеству входных параметров в | нулевой вектор |
Y | Plant выход в рабочей точке, включая измеренные и неизмеренные выходные параметры в виде вектор-столбца с длиной равняются количеству выходных параметров в | нулевой вектор |
DX | Для моделей непрерывного времени, | нулевой вектор |
ManipulatedVariables
— Переменная информация, которой управляют, границы и масштабные коэффициентыИнформация о Переменной, которой управляют, (MV), границы и масштабные коэффициенты в виде массива структур с элементами Nmv, где Nmv является количеством переменных, которыми управляют. Чтобы получить доступ к этому свойству, можно использовать псевдоним MV
вместо ManipulatedVariables
.
Примечание
Уровни относятся к различию Δu (k) =u (k)-u (k-1). Ограничения и веса на основе производных du/dt входных сигналов непрерывного времени должны быть правильно переформулированы для различия дискретного времени Δu (k), с помощью приближения du/dt ≅ Δu (k)/Ts.
Каждый элемент структуры имеет следующие поля.
Min
— Нижняя граница мВ-Inf
(значение по умолчанию) | скаляр | векторНижняя граница мВ в виде скаляра или вектора. По умолчанию эта нижняя граница неограничена.
Чтобы использовать то же самое, связанное через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться связанное по горизонту предсказания со времени k ко времени k +p-1, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, связанный финал используется для остающихся шагов горизонта предсказания.
Max
— Верхняя граница мВInf
(значение по умолчанию) | скаляр | векторВерхняя граница мВ в виде скаляра или вектора. По умолчанию эта верхняя граница неограничена.
Чтобы использовать то же самое, связанное через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться связанное по горизонту предсказания со времени k ко времени k +p-1, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, связанный финал используется для остающихся шагов горизонта предсказания.
MinECR
— Мягкость нижней границы мВ
(значение по умолчанию) | неотрицательный скаляр | векторМягкость нижней границы мВ, где большее равное беспокойство о релаксации (ECR) значение указывает на более мягкое ограничение в виде неотрицательного скаляра или вектора. По умолчанию нижние границы мВ являются трудными ограничениями.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться значение ECR по горизонту предсказания со времени k ко времени k +p-1, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, итоговое значение ECR используется для остающихся шагов горизонта предсказания.
MaxECR
— Верхняя граница мВ
(значение по умолчанию) | неотрицательный скаляр | векторМягкость верхней границы мВ, где большее равное беспокойство о релаксации (ECR) значение указывает на более мягкое ограничение в виде неотрицательного скаляра или вектора. По умолчанию верхние границы мВ являются трудными ограничениями.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться значение ECR по горизонту предсказания со времени k ко времени k +p-1, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, итоговое значение ECR используется для остающихся шагов горизонта предсказания.
RateMin
— Нижняя граница скорости изменения мВ-Inf
(значение по умолчанию) | неположительный скаляр | векторНижняя граница скорости изменения мВ в виде неположительного скаляра или вектора. Скорость изменения мВ задана как MV (k) - MV (k-1), где k является текущим временем. По умолчанию эта нижняя граница неограничена.
Чтобы использовать то же самое, связанное через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться связанное по горизонту предсказания со времени k ко времени k +p-1, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, связанный финал используется для остающихся шагов горизонта предсказания.
RateMax
— Верхняя граница скорости изменения мВInf
(значение по умолчанию) | неотрицательный скаляр | векторВерхняя граница скорости изменения мВ в виде неотрицательного скаляра или вектора. Скорость изменения мВ задана как MV (k) - MV (k-1), где k является текущим временем. По умолчанию эта нижняя граница неограничена.
Чтобы использовать то же самое, связанное через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться связанное по горизонту предсказания со времени k ко времени k +p-1, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, связанный финал используется для остающихся шагов горизонта предсказания.
RateMinECR
— Мягкость нижней границы скорости изменения мВ
(значение по умолчанию) | неотрицательный конечный скаляр | векторМягкость нижней границы скорости изменения мВ, где большее равное беспокойство о релаксации (ECR) значение указывает на более мягкое ограничение в виде неотрицательного конечного скаляра или вектора. По умолчанию нижние границы скорости изменения мВ являются трудными ограничениями.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться значения ECR по горизонту предсказания со времени k ко времени k +p-1, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, итоговые значения ECR используются для остающихся шагов горизонта предсказания.
RateMaxECR
— Мягкость верхней границы скорости изменения мВ
(значение по умолчанию) | неотрицательный конечный скаляр | векторМягкость верхней границы скорости изменения мВ, где большее равное беспокойство о релаксации (ECR) значение указывает на более мягкое ограничение в виде неотрицательного конечного скаляра или вектора. По умолчанию верхние границы скорости изменения мВ являются трудными ограничениями.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться значения ECR по горизонту предсказания со времени k ко времени k +p-1, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, итоговые значения ECR используются для остающихся шагов горизонта предсказания.
Name
— Имя мВИмя мВ в виде строки или вектора символов.
Units
— Модули мВ""
(значение по умолчанию) | представляет в виде строки | вектор символовМодули мВ в виде строки или вектора символов.
ScaleFactor
— Масштабный коэффициент мВ
(значение по умолчанию) | положительный конечный скалярМасштабный коэффициент мВ в виде положительного конечного скаляра. В общем случае используйте рабочий диапазон переменной, которой управляют. Определение соответствующего масштабного коэффициента может улучшить числовое создание условий для оптимизации. Для получения дополнительной информации смотрите, Задают Масштабные коэффициенты.
Type
— Тип мВ'continuous'
(значение по умолчанию) | 'binary
'integer'
| векторТип мВ в виде:
'binary'
— Это ограничивает переменную, которой управляют, чтобы быть или 0 или 1.
'integer'
— Это ограничивает переменную, которой управляют, чтобы быть целым числом.
Вектор, содержащий все возможные значения — Это ограничивает переменную, которой управляют, заданными значениями, например, mpcobj.MV(1).Type=[-1,0,0.5,1,2];
.
По умолчанию тип установлен в 'continuous'
, указание, что переменная, которой управляют, непрерывна.
Для получения дополнительной информации смотрите Дискретный Набор Управления MPC.
OutputVariables
— Информация о выходной переменной, границы и масштабные коэффициентыИнформация о выходной переменной (OV), границы и масштабные коэффициенты в виде массива структур с элементами Ny, где Ny является количеством выходных переменных. Чтобы получить доступ к этому свойству, можно использовать псевдоним OV
вместо OutputVariables
.
Каждый элемент структуры имеет следующие поля.
Min
— Нижняя граница OV-Inf
(значение по умолчанию) | скаляр | векторНижняя граница OV в виде скаляра или вектора. По умолчанию эта нижняя граница неограничена.
Чтобы использовать то же самое, связанное через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться связанное по горизонту предсказания со времени k +1 ко времени k +p, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, связанный финал используется для остающихся шагов горизонта предсказания.
Max
— Верхняя граница OVInf
(значение по умолчанию) | скаляр | векторВерхняя граница OV в виде скаляра или вектора. По умолчанию эта верхняя граница неограничена.
Чтобы использовать то же самое, связанное через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться связанное по горизонту предсказания со времени k +1 ко времени k +p, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, связанный финал используется для остающихся шагов горизонта предсказания.
MinECR
— Мягкость нижней границы OV
(значение по умолчанию) | неотрицательный конечный скаляр | векторМягкость нижней границы OV, где большее равное беспокойство о релаксации (ECR) значение указывает на более мягкое ограничение в виде неотрицательного конечного скаляра или вектора. По умолчанию верхние границы OV являются мягкими ограничениями.
Чтобы постараться не создавать неосуществимую задачу оптимизации во время выполнения, это - лучшая практика использовать мягкие границы OV.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться значение ECR по горизонту предсказания со времени k +1 ко времени k +p, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, итоговое значение ECR используется для остающихся шагов горизонта предсказания.
MaxECR
— Мягкость верхней границы OV
(значение по умолчанию) | неотрицательный конечный скаляр | векторМягкость верхней границы OV, где большее равное беспокойство о релаксации (ECR) значение указывает на более мягкое ограничение в виде неотрицательного конечного скаляра или вектора. По умолчанию нижние границы OV являются мягкими ограничениями.
Чтобы постараться не создавать неосуществимую задачу оптимизации во время выполнения, это - лучшая практика использовать мягкие границы OV.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы варьироваться значение ECR по горизонту предсказания со времени k +1 ко времени k +p, задайте вектор из до значений p. Здесь, k является текущим временем, и p является горизонтом предсказания. Если вы задаете меньше, чем значения p, итоговое значение ECR используется для остающихся шагов горизонта предсказания.
Name
— Имя OVOV называют в виде строки или вектора символов.
Units
— Модули OV""
(значение по умолчанию) | представляет в виде строки | вектор символовМодули OV в виде строки или вектора символов.
ScaleFactor
— Масштабный коэффициент OV
(значение по умолчанию) | положительный конечный скалярМасштабный коэффициент OV в виде положительного конечного скаляра. В общем случае используйте рабочий диапазон выходной переменной. Определение соответствующего масштабного коэффициента может улучшить числовое создание условий для оптимизации. Для получения дополнительной информации смотрите, Задают Масштабные коэффициенты.
DisturbanceVariables
— Введите информацию о переменной воздействия и масштабные коэффициентыИнформация о переменной Disturbance (DV) и масштабные коэффициенты в виде массива структур с элементами Nd, где Nd является общим количеством измеренных и неизмеренных входных параметров воздействия. Порядок воздействия сигнализирует в DisturbanceVariables
следующее: первые записи Nmd относятся к измеренным входным воздействиям, последний N ud записи относятся к неизмеренным входным воздействиям.
Чтобы получить доступ к этому свойству, можно использовать псевдоним DV
вместо DisturbanceVariables
.
Каждый элемент структуры имеет следующие поля.
Name
— Имя DVИмя DV в виде строки или вектора символов.
Units
— Модули OV""
(значение по умолчанию) | представляет в виде строки | вектор символовМодули OV в виде строки или вектора символов.
ScaleFactor
— Масштабный коэффициент DV
(значение по умолчанию) | положительный конечный скалярМасштабный коэффициент DV в виде положительного конечного скаляра. Определение соответствующего масштабного коэффициента может улучшить числовое создание условий для оптимизации. Для получения дополнительной информации смотрите, Задают Масштабные коэффициенты.
Weights
— Стандартные настраивающие веса функции стоимостиСтандартные настраивающие веса функции стоимости в виде структуры. Контроллер применяет эти веса к масштабированным переменным. Поэтому настраивающиеся веса являются безразмерными значениями.
Формат OutputWeights
должен совпадать с форматом Weights.OutputVariables
свойство объекта контроллера. Например, вы не можете задать постоянные веса через горизонт предсказания в объекте контроллера, и затем задать изменяющееся во времени использование весов mpcmoveopt
.
Weights
имеет следующие поля. Значения этих полей зависят от того, используете ли вы стандартную или альтернативную функцию стоимости. Для получения дополнительной информации об этих функциях стоимости смотрите Задачу оптимизации.
ManipulatedVariables
— Переменные настраивающие веса, которыми управляют,Переменные настраивающие веса, которыми управляют, которые штрафуют отклонения от целей мВ в виде вектора-строки или массива неотрицательных значений. Весом по умолчанию для всех переменных, которыми управляют, является 0
.
Чтобы использовать те же веса через горизонт предсказания, задайте вектор-строку из длины Nmv, где Nmv является количеством переменных, которыми управляют.
Чтобы варьироваться настраивающиеся веса по горизонту предсказания со времени k ко времени k +p-1, задайте массив со столбцами Nmv и до строк p. Здесь, k является текущим временем, и p является горизонтом предсказания. Каждая строка содержит переменные настраивающие веса, которыми управляют, для одного шага горизонта предсказания. Если вы задаете меньше, чем строки p, веса в итоговой строке используются для остающихся шагов горизонта предсказания.
Если вы используете альтернативную функцию стоимости, задаете Weights.ManipulatedVariables
как массив ячеек, который содержит Nmv-by-Nmv
матрица Ru. Например, mpcobj.Weights.ManipulatedVariables = {Ru}
. Ru должен быть положительной полуопределенной матрицей. Варьируясь матрица Ru через горизонт предсказания Не Поддерживается. Для получения дополнительной информации смотрите Альтернативную Функцию стоимости.
ManipulatedVariablesRate
— Настраивающие веса с плавающей ставкой, которыми управляют,Настраивающие веса с плавающей ставкой, которыми управляют, которые штрафуют большие изменения в перемещениях управления в виде вектора-строки или массива неотрицательных значений. Весом по умолчанию для всех плавающих курсов, которыми управляют, является 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 через горизонт предсказания Не Поддерживается. Для получения дополнительной информации смотрите Альтернативную Функцию стоимости.
OutputVariables
— Настраивающие веса выходной переменнойНастраивающие веса выходной переменной, которые штрафуют отклонение от выходных ссылок в виде вектора-строки или массива неотрицательных значений. Весом по умолчанию для всех выходных переменных является 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
— Ослабьте переменный настраивающий вес1e5
(значение по умолчанию) | положительная скалярная величинаОслабьте переменный настраивающий вес в виде положительной скалярной величины. Увеличьте или уменьшите равное беспокойство о релаксации (ECR) вес, чтобы сделать все мягкие ограничения тяжелее или мягче, соответственно.
Optimizer
— Параметры оптимизации QPПараметры оптимизации QP в виде структуры со следующими полями. Для получения дополнительной информации о поддерживаемых решателях QP см. Решатели QP.
Algorithm
— Алгоритм решателя QP'active-set'
(значение по умолчанию) | 'interior-point'
Алгоритм решателя QP в виде одного из следующего:
'active-set'
— Решите задачу QP с помощью алгоритма активного набора KWIK.
'interior-point'
— Решите задачу QP с помощью основного двойного алгоритма внутренней точки с корректором предиктора Mehrotra.
ActiveSetOptions
— Настройки решателя Active-set QPНастройки решателя Active-set QP в виде структуры. Эти настройки применяются только когда Algorithm
'active-set'
.
Если CustomSolver
или CustomSolverGodeGen
true
, диспетчер не требует, чтобы пользовательский решатель соблюдал эти настройки.
Можно задать следующие настройки оптимизатора активного набора.
MaxIterations
— Максимальное количество итераций'default'
(значение по умолчанию) | положительное целое числоМаксимальное количество итераций позволило при вычислении решения QP в виде одного из следующего:
'default'
— Контроллер MPC автоматически вычисляет максимальное количество итераций решателя QP как , где:
nc является общим количеством ограничений через горизонт предсказания.
nv является общим количеством переменных оптимизации через горизонт управления.
MaxIterations
по умолчанию значение имеет нижнюю границу
120
.
Положительное целое число — остановки решателя QP после конкретного количества итераций. Если решателю не удается сходиться в итоговой итерации, контроллере:
Замораживает перемещение контроллера если UseSuboptimalSolution
false
.
Применяет субоптимальное решение, достигнутое после итоговой итерации если UseSuboptimalSolution
true
.
Примечание
MaxIterations
по умолчанию значение может быть очень большим для некоторых настроек контроллера, таким как те с большим предсказанием и управлять горизонтами. При симуляции таких контроллеров, если решатель QP не может найти возможное решение, симуляция, может казаться, прекращает отвечать, поскольку решатель продолжает искать
MaxIterations
итерации.
ConstraintTolerance
— Допуск раньше проверял, что ограничениям неравенства удовлетворяют1e-6
(значение по умолчанию) | положительная скалярная величинаДопуск раньше проверял, что ограничениям неравенства удовлетворяет оптимальное решение в виде положительной скалярной величины. Больший ConstraintTolerance
значение допускает большие нарушения ограничений.
UseWarmStart
— Отметьте указание ли к горячему запуску каждая итерация решателя QPtrue
(значение по умолчанию) | false
Отметьте указание ли к горячему запуску каждая итерация решателя QP путем передачи в списке активных неравенств от предыдущей итерации в виде логического значения. Неравенства активны, когда их равный фрагмент верен.
InteriorPointOptions
— Внутренняя точка настройки решателя QPВнутренняя точка настройки решателя QP в виде структуры. Эти настройки применяются только когда Algorithm
'interior-point'
.
Если CustomSolver
или CustomSolverGodeGen
true
, диспетчер не требует, чтобы пользовательский решатель соблюдал эти настройки.
Можно задать следующие настройки оптимизатора внутренней точки.
MaxIterations
— Максимальное количество итераций
(значение по умолчанию) | положительное целое числоМаксимальное количество итераций позволило при вычислении решения QP в виде положительного целого числа. Остановки решателя QP после конкретного количества итераций. Если решателю не удается сходиться в итоговой итерации, контроллере:
Замораживает перемещение контроллера если UseSuboptimalSolution
false
.
Применяет субоптимальное решение, достигнутое после итоговой итерации если UseSuboptimalSolution
true
.
ConstraintTolerance
— Допуск раньше проверял, что ограничениям равенства и ограничениям неравенства удовлетворяют1e-6
(значение по умолчанию) | положительная скалярная величинаДопуск раньше проверял, что ограничениям равенства и ограничениям неравенства удовлетворяет оптимальное решение в виде положительной скалярной величины. Больший ConstraintTolerance
значение допускает большие нарушения ограничений.
OptimalityTolerance
— Допуск завершения к оптимальности первого порядка (KKT двойная невязка)1e-6
(значение по умолчанию) | положительная скалярная величинаДопуск завершения к оптимальности первого порядка (KKT двойная невязка) в виде положительной скалярной величины.
ComplementarityTolerance
— Допуск завершения к оптимальности первого порядка (средняя невязка взаимозависимости KKT)1e-8
(значение по умолчанию) | положительная скалярная величинаДопуск завершения к оптимальности первого порядка (средняя невязка взаимозависимости KKT) в виде положительной скалярной величины. Увеличение этого значения улучшает робастность при уменьшении этой точности повышений стоимости.
StepTolerance
— Допуск завершения к переменным решения1e-8
(значение по умолчанию) | положительная скалярная величинаДопуск завершения к переменным решения в виде положительной скалярной величины.
MixedIntegerOptions
— Смешано-целочисленные настройки решателя QPСмешано-целочисленные настройки решателя QP в виде структуры.
Если CustomSolver
или CustomSolverGodeGen
true
, диспетчер не требует, чтобы пользовательский решатель соблюдал эти настройки.
Можно задать следующие смешано-целочисленные настройки оптимизатора QP.
MaxIterations
— Максимальное количество итераций
(значение по умолчанию) | положительное целое числоМаксимальное количество итераций позволило при вычислении смешано-целочисленного решения QP в виде положительного целого числа. Смешано-целочисленные остановки решателя QP после конкретного количества итераций. Если решателю не удается сходиться в итоговой итерации, контроллере:
Замораживает перемещение контроллера если UseSuboptimalSolution
false
.
Применяет субоптимальное решение, достигнутое после итоговой итерации если UseSuboptimalSolution
true
.
ConstraintTolerance
— Допуск раньше проверял, что ограничениям равенства и ограничениям неравенства удовлетворяют1e-6
(значение по умолчанию) | положительная скалярная величинаДопуск раньше проверял, что ограничениям равенства и ограничениям неравенства удовлетворяет оптимальное решение в виде положительной скалярной величины. Больший ConstraintTolerance
значение допускает большие нарушения ограничений.
DiscreteConstraintTolerance
— Допуск раньше проверял, что ограничениям на дискретные переменные, которыми управляют, удовлетворяют1e-6
(значение по умолчанию) | положительная скалярная величинаДопуск раньше проверял, что ограничениям в дискретных переменных, которыми управляют, удовлетворяет оптимальное решение в виде положительной скалярной величины. Больший DiscreteConstraintTolerance
значение допускает большие нарушения ограничений.
RoundingAtRootNode
— Отметьте к раунду решение в корневом узле
(значение по умолчанию) | 0Отметьте к раунду решение в корневом узле в виде булевской переменной. Когда RoundingAtRootNode
=1, решатель округляет решение расслабленной задачи QP, решенной в корневом узле дерева поиска, так, чтобы удовлетворили дискретным ограничениям. Затем дополнительный QP решен относительно остающихся (непрерывных) переменных. Если такой QP имеет возможное решение, соответствующая стоимость используется в качестве допустимой верхней границы на оптимальном решении исходной смешанной целочисленной задачи. Наличие такой верхней границы может устранить целые поддеревья в остальной части выполнения решателя и ускорить решение следующих релаксаций QP. Если количество итераций
MaxIterations
мал, это стоит установки RoundingAtRootNode
=1. В противном случае, установка
RoundingAtRootNode
=0 старается не решать дополнительный QP.
MaxPendingNodes
— Максимальное количество незаконченных узлов
(значение по умолчанию) | положительная скалярная величинаЭто - максимальное количество ожидания релаксаций QP, которые могут храниться. это определяет память, выделенную, чтобы сохранить все ожидание релаксации QP, который пропорционален (2*m+3*Nd) *MaxPendingNodes
, где m является количеством ограничений неравенства, и Nd является количеством дискретных переменных. Если количество незаконченных релаксаций превышает MaxPendingNodes
затем решатель останавливается с кодом статуса -3
, -4 или
-5
.
MinOutputECR
— Минимальное значение допускало выходное ограничение значения ECR
(значение по умолчанию) | неотрицательный скалярМинимальное значение допускало выходное ограничение равное беспокойство о релаксации (ECR) значения в виде неотрицательного скаляра. Значение 0
указывает, что трудно выходные ограничения позволены. Если любой из OutputVariables.MinECR
или OutputVariables.MaxECR
свойства контроллера MPC меньше MinOutputECR
, предупреждение выведено, и значение повышено до MinOutputECR
во время расчета.
UseSuboptimalSolution
— Отметьте указание, приемлемо ли субоптимальное решениеfalse
(значение по умолчанию) | true
Отметьте указание, приемлемо ли субоптимальное решение в виде логического значения. Когда решатель QP достигает максимального количества итераций, не находя решение (выходным флагом является 0
), контроллер:
Замораживает значения мВ если UseSuboptimalSolution
false
Применяет субоптимальное решение, найденное решателем после итоговой итерации если UseSuboptimalSolution
true
Задавать максимальное количество итераций, в зависимости от значения Algorithm
, используйте любой ActiveSetOptions.MaxIterations
или InteriorPointOptions.MaxIterations
.
CustomSolver
— Отметьте указание, использовать ли пользовательский решатель QP для симуляцииfalse
(значение по умолчанию) | true
Отметьте указание, использовать ли пользовательский решатель QP для симуляции в виде логического значения. Если CustomSolver
true
, пользователь должен обеспечить mpcCustomSolver
функция на пути MATLAB®.
Этот пользовательский решатель не используется для генерации кода. Чтобы сгенерировать код для контроллера с пользовательским решателем, используйте CustomSolverCodeGen
.
Если CustomSolver
true
, диспетчер не требует, чтобы пользовательский решатель соблюдал настройки в любом ActiveSetOptions
или InteriorPointOptions
.
Для получения дополнительной информации об использовании пользовательского решателя QP смотрите, Пользовательский Решатель QP.
CustomSolverCodeGen
— Отметьте указание, использовать ли пользовательский решатель QP для генерации кодаfalse
(значение по умолчанию) | true
Отметьте указание, использовать ли пользовательский решатель QP для генерации кода в виде логического значения. Если CustomSolverCodeGen
true
, пользователь должен обеспечить mpcCustomSolverCodeGen
функция на пути MATLAB.
Этот пользовательский решатель не используется для симуляции. Чтобы симулировать контроллер с пользовательским решателем, используйте CustomSolver
.
Если CustomSolverCodeGen
true
, диспетчер не требует, чтобы пользовательский решатель соблюдал настройки в любом ActiveSetOptions
или InteriorPointOptions
.
Для получения дополнительной информации об использовании пользовательского решателя QP смотрите, Пользовательский Решатель QP.
Notes
— Пользователь отмечает{}
(значение по умолчанию) | массив ячеек из символьных векторовПользовательские примечания сопоставлены с контроллером MPC в виде массива ячеек из символьных векторов.
UserData
UserData []
(значение по умолчанию) | любые данные MATLABПользовательские данные, сопоставленные с контроллером MPC в виде любых данных MATLAB, таких как массив ячеек или структура.
History
— Дата создания контроллера и времяЭто свойство доступно только для чтения.
Дата создания контроллера и время в виде вектора со следующими элементами:
History(1)
год
History(2)
месяц
History(3)
день
History(4)
часы
History(5)
минуты
History(6)
секунды
review | Исследуйте контроллер MPC на ошибки проектирования и проблемы устойчивости во время выполнения |
mpcmove | Вычислите действие оптимального управления и обновите состояния контроллера |
sim | Симулируйте контроллер MPC в замкнутом цикле с линейным объектом |
mpcstate | Контроллер MPC состояние |
getCodeGenerationData | Создайте структуры данных для mpcmoveCodeGeneration |
generateExplicitMPC | Преобразуйте неявный контроллер MPC в явный контроллер MPC |
Создайте модель объекта управления с передаточной функцией .
Plant = tf([1 1],[1 2 0]);
Объектом является SISO, таким образом, ее вход должен быть переменной, которой управляют, и ее выход должен быть измерен. В общем случае это - хорошая практика, чтобы определять все типы сигнала объекта с помощью любого setmpcsignals
команда или LTI InputGroup
и OutputGroup
свойства.
Задайте шаг расчета для контроллера.
Ts = 0.1;
Задайте границы на переменной, которой управляют, , таким образом, что .
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
Поддержка реализации экономического MPC с помощью линейного контроллера MPC была удалена. Реализуйте экономический MPC с помощью нелинейного контроллера MPC вместо этого. Для получения дополнительной информации о нелинейных контроллерах MPC смотрите Нелинейный MPC.
Если вы ранее сохраненный линейный объект MPC, сконфигурированный с пользовательской стоимостью или ограничительными функциями, программное обеспечение, генерирует предупреждение, когда объект загружается и ошибка, если это симулировано. Подавить сообщения об ошибке и предупреждающие сообщения и продолжить использовать ваш линейный контроллер MPC, mpcobj
, без пользовательских затрат и ограничений, набор IsEconomicMPC
отметьте к false
.
mpcobj.IsEconomicMPC = false;
Реализовывать ваш экономический контроллер MPC, использующий нелинейный объект MPC:
Создайте nlmpc
объект.
Преобразуйте свою пользовательскую функцию стоимости в формат, требуемый для нелинейного MPC. Для получения дополнительной информации о нелинейных функциях стоимости MPC смотрите, Задают Функцию стоимости для Нелинейного MPC.
Преобразуйте свою пользовательскую ограничительную функцию в формат, требуемый для нелинейного MPC. Для получения дополнительной информации о нелинейных ограничениях MPC смотрите, Задают Ограничения для Нелинейного MPC.
Реализуйте свою модель линейного предсказания, использующую и выходные функции состояния. Для получения дополнительной информации о нелинейных моделях предсказания MPC смотрите, Задают Модель Предсказания для Нелинейного MPC.
get
| mpcprops
| mpcverbosity
| set
| setmpcsignals
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.