Прогнозирующий контроллер модели
Прогнозирующий диспетчер модели использует линейный объект, воздействие и шумовые модели, чтобы оценить, что диспетчер утверждает и предсказывает будущий объект выходные параметры. Используя предсказанный объект выходные параметры, диспетчер решает задачу оптимизации квадратичного программирования, чтобы определить перемещения управления.
Для получения дополнительной информации о структуре прогнозирующих контроллеров модели смотрите, что 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
)
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 Моделирует и Оценка состояния Контроллера.
Model
структура имеет следующие поля.
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
— Масштабный коэффициент мВ
(значение по умолчанию) | положительный конечный скалярМасштабный коэффициент мВ, заданный как положительный конечный скаляр. В общем случае используйте рабочий диапазон переменной, которой управляют. Определение соответствующего масштабного коэффициента может улучшить числовое создание условий для оптимизации. Для получения дополнительной информации смотрите, Задают Масштабные коэффициенты.
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
— Имя OVИмя OV, заданное как строка или вектор символов.
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, заданные как структура со следующими полями.
MaxIter
— Максимальное количество итераций'Default'
(значение по умолчанию) | положительное целое числоМаксимальное количество итераций позволено в решателе QP, заданном как одно из следующего:
'Default'
— Контроллер MPC автоматически вычисляет максимальное количество итераций решателя QP как:
Здесь,
nc является общим количеством ограничений через горизонт прогноза.
nv является общим количеством переменных оптимизации через горизонт управления.
MaxIter
по умолчанию значение имеет нижнюю границу
120
.
Положительное целое число — остановки решателя QP после MaxIter
итерации. Если решателю не удается сходиться в итоговой итерации, контроллере:
Замораживает перемещение контроллера если UseSuboptimalSolution
false
.
Применяет субоптимальное решение, достигнутое после итоговой итерации если UseSuboptimalSolution
true
.
Если CustomSolver
или CustomSolverCodeGen
true
, диспетчер не требует, чтобы пользовательский решатель соблюдал MaxIter
.
MaxIter
по умолчанию значение может быть очень большим для некоторых настроек контроллера, таким как те с большим прогнозом и управлять горизонтами. При симуляции таких контроллеров, если решатель QP не может найти выполнимое решение, симуляция, может казаться, прекращает отвечать, поскольку решатель продолжает искать
MaxIter
итерации.
MinOutputECR
— Минимальное значение допускало выходное ограничение значения ECR
(значение по умолчанию) | неотрицательный скалярМинимальное значение допускало выходное ограничение равное беспокойство о релаксации (ECR) значения, заданные как неотрицательный скаляр. Значение 0
указывает, что трудно выходные ограничения позволены. Если любой из OutputVariables.MinECR
или OutputVariables.MaxECR
свойства контроллера MPC меньше MinOutputECR
, предупреждение выведено, и значение повышено до MinOutputECR
во время расчета.
UseSuboptimalSolution
— Отметьте указание, приемлемо ли субоптимальное решениеfalse
(значение по умолчанию) | true
Отметьте указание, приемлемо ли субоптимальное решение, задано как логическое значение. Когда решатель QP достигает максимального количества итераций, не находя решение (выходным флагом является 0
), контроллер:
Замораживает значения мВ если UseSuboptimalSolution
false
Применяет субоптимальное решение, найденное решателем после итоговой итерации если UseSuboptimalSolution
true
Чтобы задать максимальное количество итераций, используйте Optimizer.MaxIter
.
UseWarmStart
— Отметьте указание ли к горячему запуску каждая итерация решателя QPtrue
(значение по умолчанию) | false
Отметьте указание ли к горячему запуску каждая итерация решателя QP путем передачи в списке активных неравенств от предыдущей итерации, заданной как логическое значение. Неравенства активны, когда их равный фрагмент верен.
Если CustomSolver
или CustomSolverCodeGen
true
, диспетчер не требует, чтобы пользовательский решатель соблюдал UseWarmStart
.
CustomSolver
— Отметьте указание, использовать ли пользовательский решатель QP в симуляцииfalse
(значение по умолчанию) | true
Отметьте указание, использовать ли пользовательский решатель QP в симуляции, заданной как логическое значение. Если CustomSolver
true
, пользователь должен обеспечить mpcCustomSolver
функция на пути MATLAB®.
Этот пользовательский решатель не используется в генерации кода. Чтобы сгенерировать код для контроллера с пользовательским решателем, используйте CustomSolverCodeGen
.
Если CustomSolver
true
, диспетчер не требует, чтобы пользовательский решатель соблюдал MaxIter
и UseWarmStart
.
Для получения дополнительной информации об определении пользовательских решателей смотрите Пользовательский Решатель QP.
CustomSolverCodeGen
— Отметьте указание, использовать ли пользовательский решатель QP в генерации кодаfalse
(значение по умолчанию) | true
Отметьте указание, использовать ли пользовательский решатель QP в генерации кода, заданной как логическое значение. Если CustomSolverCodeGen
true
, пользователь должен обеспечить mpcCustomSolverCodeGen
функция на пути MATLAB.
Этот пользовательский решатель не используется в симуляции. Чтобы симулировать контроллер с пользовательским решателем, используйте CustomSolver
.
Если CustomSolverCodeGen
true
, диспетчер не требует, чтобы пользовательский решатель соблюдал MaxIter
и UseWarmStart
.
Для получения дополнительной информации об определении пользовательских решателей смотрите Пользовательский Решатель 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.