Моделируйте прогнозирующий контроллер
Модельный прогнозирующий контроллер использует линейные модели объекта, нарушения порядка и шума, чтобы оценить состояние контроллера и предсказать будущие выходы объекта. Используя предсказанные выходы объекта управления, контроллер решает квадратичную задачу оптимизации программирования, чтобы определить движения управления.
Для получения дополнительной информации о структуре прогнозирующих контроллеров модели, см. MPC Modeling.
создает объект прогнозирующего контроллера модели на основе модели предсказания в дискретном времени mpcobj
= mpc(plant
)plant
. Контроллер, mpcobj
, наследует его контрольный интервал от plant.Ts
, и его модуль времени от plant.TimeUnit
. Все другие свойства контроллера являются значениями по умолчанию. После создания контроллера MPC можно задать его свойства с помощью записи через точку.
Если plant.Ts = -1
, вы должны задать Ts
свойство контроллера к положительному значению перед разработкой и симуляцией вашего контроллера.
создает прогнозирующий контроллер модели на основе указанной модели объекта управления и устанавливает mpcobj
= mpc(plant
,ts
)Ts
свойство контроллера. Если plant
является:
Модель в непрерывном времени, затем контроллер дискретизирует модель для предсказания с помощью шага расчета ts
В дискретной модели с заданным временем расчета контроллер переизбирает объект для предсказания с помощью шага расчета ts
Модель в дискретном времени с неопределенным шагом расчета (plant.Ts
= –1
), он наследует шаг расчета ts
при использовании для предсказаний
задает следующие свойства контроллера. Если любое из этих значений опущено или пустое, применяются значения по умолчанию.mpcobj
= mpc(plant
,ts
,P
,M
,W
,MV
,OV
,DV
)
P
устанавливает PredictionHorizon
свойство.
M
устанавливает ControlHorizon
свойство.
W
устанавливает Weights
свойство.
MV
устанавливает ManipulatedVariables
свойство.
OV
устанавливает OutputVariables
свойство.
DV
устанавливает DisturbanceVariables
свойство.
создает объект прогнозирующего контроллера модели на основе заданного набора моделей предсказания, который включает в себя объект, входное нарушение порядка и модели шума измерения наряду с номинальными условиями, при которых были получены модели. Когда вы не задаете шаг расчета, модель объекта управления, mpcobj
= mpc(model
)model.Plant
, должна быть моделью в дискретном времени. Этот синтаксис устанавливает Model
свойство контроллера.
создает прогнозирующий контроллер модели на основе указанной модели объекта управления и устанавливает mpcobj
= mpc(model
,ts
)Ts
свойство контроллера. Если model.Plant
является моделью LTI в дискретном времени с неопределенным шагом расчета (model.Plant.Ts
= –1
), он наследует шаг расчета ts
при использовании для предсказаний.
задает дополнительные свойства контроллера. Если любое из этих значений опущено или пустое, применяются значения по умолчанию.mpcobj
= mpc(model
,ts
,P
,M
,W
,MV
,OV
,DV
)
plant
- Модель предсказания объектаМодель предсказания объекта, заданная либо как модель LTI, либо как модель линейной системы Identification Toolbox™. Указанный объект соответствует Model.Plant
свойство контроллера.
Если вы не задаете шага расчета при создании контроллера, plant
должна быть моделью в дискретном времени.
Для получения дополнительной информации о моделях предсказания MPC, см. MPC Modeling.
Примечание
Прямое сквозное соединение от манипулированных переменных к любому выходу в plant
не поддерживается.
model
- Модель предсказанияМодель предсказания, заданная как структура с таким же форматом, как и Model
свойство контроллера. Если вы не задаете шага расчета при создании контроллера, model.Plant
должна быть моделью в дискретном времени.
Для получения дополнительной информации о моделях предсказания MPC, см. MPC Modeling.
Ts
- шаг расчета контроллераШаг расчета контроллера, заданное как положительный конечный скаляр. Контроллер использует модель в дискретном времени со шаг расчета Ts
для предсказания.
PredictionHorizon
- Горизонт предсказанияШаги горизонта предсказания, заданные как положительное целое число. Область продукта PredictionHorizon
и Ts
- время предсказания; то есть как далеко контроллер смотрит в будущее.
ControlHorizon
- Горизонт управления2
(по умолчанию) | положительное целое число | вектор положительных целых чиселГоризонт управления, заданный как один из следующих:
Положительное целое число, m, между 1
и p включительно, где p равно PredictionHorizon
. В этом случае контроллер вычисляет, m свободные движения управления происходят в моменты времени, k через k + m -1, и удерживает выходной сигнал контроллера постоянным для остальных шагов горизонта предсказания от k + m до k + p -1. Здесь k текущий контрольный интервал.
Вектор положительных целых чисел [m 1, m 2,...], задающий длины блокирующих интервалов. По умолчанию контроллер вычисляет M блоки свободных ходов, где M - количество интервалов блокировки. Первое бесплатное движение относится ко временам k через k + <reservedrangesplaceholder6> 1-1, второе бесплатное движение применяется со времени k + <reservedrangesplaceholder4> 1 через k + <reservedrangesplaceholder2> 1 + <reservedrangesplaceholder1> 2-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
- Модель предсказания и номинальные условияМодель предсказания и номинальные условия, заданные как структура со следующими полями. Для получения дополнительной информации о модели предсказания MPC, см. Моделирование MPC и оценку состояния контроллера.
Plant
- Модель предсказания объектаМодель предсказания объекта, заданная либо как модель LTI, либо как модель линейной системы Identification Тулбокса.
Примечание
Прямое сквозное соединение от манипулированных переменных к любому выходу в plant
не поддерживается.
Disturbance
- Модель, описывающая ожидаемые неизмеренные нарушения порядкаМодель, описывающая ожидаемые неизмеренные нарушения порядка, заданная как модель LTI. Эта модель требуется только, когда объект имеет неизмеренные нарушения порядка. Можно задать эту модель возмущения непосредственно с помощью записи через точку или используя setindist
функция.
По умолчанию входные нарушения порядка ожидаются как интегрированный белый шум. Чтобы смоделировать сигнал, для каждого неизмеренного входного нарушения порядка добавляется интегратор с безразмерным усилением единицы, если только сложение не заставляет контроллер потерять наблюдаемость состояния. В этом случае нарушение порядка ожидается белым шумом, и, таким образом, безразмерное усиление единства добавляется к этому каналу.
Noise
- Модель, описывающая ожидаемый выходной шум измеренияМодель, описывающая ожидаемый выходной шум измерения, заданная как модель LTI.
По умолчанию шум измерения ожидается белым шумом с единичным отклонением. Чтобы смоделировать сигнал, для каждого измеренного канала добавляется безразмерное усиление единицы.
Nominal
- Номинальная рабочая точка, в которой линеаризируется модель объекта управленияНоминальная рабочая точка, в которой линеаризируется модель объекта управления, заданная как структура со следующими полями.
Область | Описание | Дефолт |
---|---|---|
X | Состояние объекта в рабочей точке, заданное как вектор-столбец с длиной, равной количеству состояний в | нулевой вектор |
U | Вход объекта в рабочей точке, включая манипулируемые переменные и измеренные и не измеренные нарушения порядка, задается как вектор-столбец с длиной, равной количеству входов в | нулевой вектор |
Y | Выход объекта в рабочей точке, включая измеренные и не измеренные выходы, задается как вектор-столбец с длиной, равной количеству выходов в | нулевой вектор |
DX | Для моделей в непрерывном времени, | нулевой вектор |
ManipulatedVariables
- Манипулирование информацией переменной, границами и масштабными факторамиИнформация, ограничения и масштабные коэффициенты Манипулированной Переменной (MV), заданные как массив структур с Nmv элементами, где Nmv количество манипулируемых переменных. Для доступа к этому свойству можно использовать псевдоним MV
вместо ManipulatedVariables
.
Примечание
Скорости относятся к различию и u (k) = u (k) - u (k -1). Ограничения и веса, основанные на производных du/dt входных сигналов в непрерывном времени, должны быть правильно переформулированы для различия в дискретном времени u (k), с помощью приближения du/dt ≅ u (k )/ T s.
Каждый структурный элемент имеет следующие поля.
Min
- нижняя граница СН-Inf
(по умолчанию) | скалярный вектор |MV нижняя граница, заданная как скаляр или вектор. По умолчанию эта нижняя граница без ограничений.
Чтобы использовать ту же границу между горизонтом предсказания, задайте скалярное значение.
Чтобы изменить границу над горизонтом предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, конечная граница используется для остальных шагов горизонта предсказания.
Max
- верхняя граница СНInf
(по умолчанию) | скалярный вектор |Верхняя граница MV, заданная как скаляр или вектор. По умолчанию эта верхняя граница без ограничений.
Чтобы использовать ту же границу между горизонтом предсказания, задайте скалярное значение.
Чтобы изменить границу над горизонтом предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, конечная граница используется для остальных шагов горизонта предсказания.
MinECR
- нижняя граничная мягкость СН0
(по умолчанию) | неотрицательный скаляр |MV нижняя граничная мягкость, где большая равная проблема значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный скаляр или вектор. По умолчанию нижние границы СН являются жесткими ограничениями.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы изменить значение ECR по горизонту предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательное значение ECR используется для остальных шагов горизонта предсказания.
MaxECR
- верхняя граница СН0
(по умолчанию) | неотрицательный скаляр |MV верхняя граничная мягкость, где большая равная проблема значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный скаляр или вектор. По умолчанию верхние границы СН являются жесткими ограничениями.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы изменить значение ECR по горизонту предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательное значение ECR используется для остальных шагов горизонта предсказания.
RateMin
- нижняя граница скорости изменения СН-Inf
(по умолчанию) | непозитивный скаляр |Скорость изменения MV нижняя граница, заданная как непозитивный скаляр или вектор. Скорость изменения MV определяется как MV (k) - MV (k -1), где k - текущее время. По умолчанию эта нижняя граница без ограничений.
Чтобы использовать ту же границу между горизонтом предсказания, задайте скалярное значение.
Чтобы изменить границу над горизонтом предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, конечная граница используется для остальных шагов горизонта предсказания.
RateMax
- верхняя граница скорости изменения СНInf
(по умолчанию) | неотрицательный скаляр |MV скорость изменения верхней границы, заданная как неотрицательный скаляр или вектор. Скорость изменения MV определяется как MV (k) - MV (k -1), где k - текущее время. По умолчанию эта нижняя граница без ограничений.
Чтобы использовать ту же границу между горизонтом предсказания, задайте скалярное значение.
Чтобы изменить границу над горизонтом предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, конечная граница используется для остальных шагов горизонта предсказания.
RateMinECR
- Скорость изменения MV нижняя граничная мягкость0
(по умолчанию) | неотрицательный конечный вектор | скаляраСкорость изменения MV нижняя связанная мягкость, где большая равная проблема для значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный конечный скаляр или вектор. По умолчанию нижние границы скорости изменения MV являются жесткими ограничениями.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы изменить значения ECR по горизонту предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательные значения ECR используются для остальных шагов горизонта предсказания.
RateMaxECR
- скорость изменения MV верхней связанной мягкости0
(по умолчанию) | неотрицательный конечный вектор | скаляраСкорость изменения MV верхней связанной мягкости, где большая равная проблема для значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный конечный скаляр или вектор. По умолчанию скорость изменения MV верхние границы являются жесткими ограничениями.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы изменить значения ECR по горизонту предсказания от времени k времени k + p -1, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательные значения ECR используются для остальных шагов горизонта предсказания.
Name
- Имя СНИмя MV, заданное как строковый или символьный вектор.
Units
- модули СН""
(по умолчанию) | строку | вектор символовМодули измерения MV, заданные как строковый или символьный вектор.
ScaleFactor
- масштабный коэффициент СН1
(по умолчанию) | положительный конечный скалярКоэффициент шкалы MV, заданный как положительный конечный скаляр. В целом используйте рабочую область значений управляемой переменной. Установка правильного масштабного коэффициента может улучшить числовое обусловление для оптимизации. Для получения дополнительной информации смотрите Задать масштабные коэффициенты.
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
- OV верхняя границаInf
(по умолчанию) | скалярный вектор |OV верхняя граница, заданная как скаляр или вектор. По умолчанию эта верхняя граница без ограничений.
Чтобы использовать ту же границу между горизонтом предсказания, задайте скалярное значение.
Чтобы изменить границу над горизонтом предсказания от времени k + 1 до времени k + p, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, конечная граница используется для остальных шагов горизонта предсказания.
MinECR
- OV нижняя граничная мягкость1
(по умолчанию) | неотрицательный конечный вектор | скаляраНижняя граничная мягкость OV, где большая равная проблема значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательная конечная скаляра или вектор. По умолчанию верхние границы OV являются мягкими ограничениями.
Чтобы избежать создания недопустимой задачи оптимизации во время исполнения, лучшая практика использовать мягкие OV-границы.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы изменить значение ECR по горизонту предсказания от времени k + 1 до времени k + p, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательное значение ECR используется для остальных шагов горизонта предсказания.
MaxECR
- OV верхняя граничная мягкость1
(по умолчанию) | неотрицательный конечный вектор | скаляраOV верхняя граничная мягкость, где большая равная проблема значения релаксации (ECR) указывает на более мягкое ограничение, заданное как неотрицательный конечный скаляр или вектор. По умолчанию нижние границы OV являются мягкими ограничениями.
Чтобы избежать создания недопустимой задачи оптимизации во время исполнения, лучшая практика использовать мягкие OV-границы.
Чтобы использовать то же значение ECR через горизонт предсказания, задайте скалярное значение.
Чтобы изменить значение ECR по горизонту предсказания от времени k + 1 до времени k + p, задайте вектор до p значений. Здесь k - текущее время, а p - горизонт предсказания. Если вы задаете меньше p значений, окончательное значение ECR используется для остальных шагов горизонта предсказания.
Name
- Имя OVИмя OV, заданное как строковый или символьный вектор.
Units
- модули""
(по умолчанию) | строку | вектор символовМодули, заданные как строковый или символьный вектор.
ScaleFactor
- масштабный коэффициент OV1
(по умолчанию) | положительный конечный скалярКоэффициент шкалы OV, заданный как положительный конечный скаляр. В целом используйте рабочую область значений переменного выхода. Установка правильного масштабного коэффициента может улучшить числовое обусловление для оптимизации. Для получения дополнительной информации смотрите Задать масштабные коэффициенты.
DisturbanceVariables
- Вход нарушениях порядка и масштабные коэффициентыИнформация и масштабные коэффициенты переменной нарушения порядка (DV), заданные как массив структур с Nd элементами, где Nd - общее количество измеренных и неизмеренных входов нарушения порядка. Порядок сигналов нарушения порядка в DisturbanceVariables
является следующим: первые значения Nmd относятся к измеренным входным нарушениям порядка, последние N значения ud относятся к неизмеренным входным нарушениям порядка.
Для доступа к этому свойству можно использовать псевдоним DV
вместо DisturbanceVariables
.
Каждый структурный элемент имеет следующие поля.
Name
- DV имяDV- имени, заданный как строка или вектор символов.
Units
- модули""
(по умолчанию) | строку | вектор символовМодули, заданные как строковый или символьный вектор.
ScaleFactor
- масштабный коэффициент DV1
(по умолчанию) | положительный конечный скалярКоэффициент шкалы DV, заданный как положительный конечный скаляр. Установка правильного масштабного коэффициента может улучшить числовое обусловление для оптимизации. Для получения дополнительной информации смотрите Задать масштабные коэффициенты.
Weights
- Веса настройки функции стандартной стоимостиВеса настройки функции стандартных затрат, заданные как структура. Контроллер применяет эти веса к масштабируемым переменным. Поэтому веса настройки являются безразмерными значениями.
Формат OutputWeights
должен совпадать с форматом Weights.OutputVariables
свойство объекта контроллера. Например, вы не можете задать постоянные веса через горизонт предсказания в объекте контроллера, а затем задать изменяющиеся во времени веса, используя mpcmoveopt
.
Weights
имеет следующие поля. Значения этих полей зависят от того, используется ли функция стандартных или альтернативных затрат. Для получения дополнительной информации об этих функциях затрат смотрите Задачу оптимизации.
ManipulatedVariables
- Манипулируемые переменные веса настройкиМанипулируемые веса настройки переменных, которые штрафуют отклонения от целей MV, заданные как вектор-строка или массив неотрицательных значений. Вес по умолчанию для всех манипулируемых переменных 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 строго выпуклой, когда число обусловленности матрицы Гессия K12, количество 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
- Активный набор настроек QP решателяАктивные настройки решателя 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
- Максимальное количество итераций50
(по умолчанию) | положительное целое числоМаксимальное количество итераций, допустимое при вычислении решения QP, заданное в виде положительного целого числа. Решатель QP останавливается после заданного количества итераций. Если решатель не может сходиться в конечной итерации, контроллер:
Замораживает движение контроллера, если UseSuboptimalSolution
является false
.
Применяет неоптимальное решение, достигнутое после окончательной итерации, если UseSuboptimalSolution
является true
.
ConstraintTolerance
- Допуск, используемый для проверки того, что ограничения, накладываемые на равенство и неравенство, выполняются1e-6
(по умолчанию) | положительная скалярная величинаДопуск, используемый для проверки того, что ограничения равенства и неравенства удовлетворены оптимальным решением, заданным в качестве положительной скалярной величины. Больший ConstraintTolerance
значение допускает большие нарушения ограничений.
OptimalityTolerance
- Допуск разрыва для оптимальности первого порядка (KKT двойная невязка)1e-6
(по умолчанию) | положительная скалярная величинаДопуск завершения для оптимальности первого порядка (KKT dual невязки), заданный как положительная скалярная величина.
ComplementarityTolerance
- Допуск разрыва для оптимальности первого порядка (остаток средней комплементарности KKT)1e-8
(по умолчанию) | положительная скалярная величинаДопуск завершения для оптимальности первого порядка (KKT среднего значения невязки комплементарности), заданный как положительная скалярная величина. Увеличение этого значения улучшает робастность, в то время как уменьшение этого значения повышает точность.
StepTolerance
- Допуск на прекращение для переменных принятия решений1e-8
(по умолчанию) | положительная скалярная величинаДопуск завершения для переменных принятия решений, заданный как положительная скалярная величина.
MixedIntegerOptions
- Смешано-целочисленные настройки QP решателяСмешано-целочисленные настройки решателя QP, заданные как структура.
Если CustomSolver
или CustomSolverGodeGen
является true
контроллер не требует, чтобы пользовательский решатель выполнял эти настройки.
Можно задать следующие смешано-целочисленные настройки оптимизатора QP.
MaxIterations
- Максимальное количество итераций1000
(по умолчанию) | положительное целое числоМаксимальное количество итераций, допустимое при вычислении смешано-целочисленного решения QP, заданное в виде положительного целого числа. Смешано-целочисленный решатель QP останавливается после заданного количества итераций. Если решатель не может сходиться в конечной итерации, контроллер:
Замораживает движение контроллера, если UseSuboptimalSolution
является false
.
Применяет неоптимальное решение, достигнутое после окончательной итерации, если UseSuboptimalSolution
является true
.
ConstraintTolerance
- Допуск, используемый для проверки того, что ограничения, накладываемые на равенство и неравенство, выполняются1e-6
(по умолчанию) | положительная скалярная величинаДопуск, используемый для проверки того, что ограничения равенства и неравенства удовлетворены оптимальным решением, заданным в качестве положительной скалярной величины. Больший ConstraintTolerance
значение допускает большие нарушения ограничений.
DiscreteConstraintTolerance
- Допуск, используемый для проверки выполнения ограничений на дискретные управляемые переменные1e-6
(по умолчанию) | положительная скалярная величинаДопуск, используемый для проверки того, что ограничения в дискретных управляемых переменных удовлетворяются оптимальным решением, заданным как положительная скалярная величина. Больший DiscreteConstraintTolerance
значение допускает большие нарушения ограничений.
RoundingAtRootNode
- Флаг для округления решения в корневом узле1
(по умолчанию) | 0Флаг для округления решения в корневом узле, заданный как логический. Когда RoundingAtRootNode
= 1
решатель округляет решение расслабленной задачи QP, решенной в корневом узле дерева поиска, так что выполняются дискретные ограничения. Затем решается дополнительный QP относительно остальных (непрерывных) переменных. Если такой QP имеет возможное решение, соответствующая стоимость используется как действительная верхняя граница оптимального решения исходной смешанно-целочисленной задачи. Наличие такой верхней границы может исключить целые поддеревья в остальной части выполнения решателя и ускорить решение следующих релаксаций QP. Разве что количество итераций MaxIterations
маленькая, стоит задать RoundingAtRootNode
= 1
. В противном случае установка RoundingAtRootNode
= 0
избегает решения дополнительного QP.
MaxPendingNodes
- Максимальное количество ожидающих узлов1000
(по умолчанию) | положительная скалярная величинаЭто максимальное количество ожидающих релаксаций QP, которые могут быть сохранены. он определяет память, выделенную для хранения всех ожидающих релаксаций QP, что пропорционально (2 * m + 3 * Nd) * MaxPendingNodes
, где m - количество ограничений неравенства, а Nd - количество дискретных переменных. Если количество ожидающих расслаблений превышает MaxPendingNodes
затем решатель останавливается с кодом состояния -3
, -4
или -5
.
MinOutputECR
- Минимальное значение, допустимое для выходов ECR выходного ограничения0
(по умолчанию) | неотрицательной скаляромМинимальное значение, допустимое для выходного ограничения, равное для значений релаксации (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
- Пользовательские данные[]
(по умолчанию) | любые данные 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
содержит только верхнюю и нижнюю границы манипулируемой переменной. В целом можно задать дополнительные свойства СН. Когда вы не задаете другие свойства, применяются их значения по умолчанию.
Задайте 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
function, или когда вы изменяете свойство контроллера. Создание включает в себя основные проверки валидности и согласованности, такие как размерности сигнала и неотрицательность весов.
Вторая фаза является 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.