Прогнозирующий контроллер модели
Контроллер прогнозирования модели использует линейные модели установок, возмущений и шума для оценки состояния контроллеров и прогнозирования будущих выходов установок. Используя прогнозируемые выходы установки, контроллер решает задачу оптимизации квадратного программирования для определения перемещений управления.
Дополнительные сведения о структуре контроллеров прогнозирования модели см. в разделе Моделирование MPC.
создает объект прогнозирующего контроллера модели на основе модели дискретного прогнозирования времени 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 или линейная модель Toolbox™ идентификации системы. Указанная установка соответствует Model.Plant свойства контроллера.
Если при создании контроллера не указано время образца, plant должна быть дискретно-временной моделью.
Дополнительные сведения о моделях прогнозирования MPC см. в разделе Моделирование MPC.
Примечание
Прямой переход от обрабатываемых переменных к любым выводам в plant не поддерживается.
model - Модель прогнозированияМодель прогнозирования, заданная как структура с тем же форматом, что и Model свойства контроллера. Если при создании контроллера не указано время образца, model.Plant должна быть дискретно-временной моделью.
Дополнительные сведения о моделях прогнозирования MPC см. в разделе Моделирование MPC.
Ts - Время выборки контроллераВремя выборки контроллера, указанное как положительный конечный скаляр. Контроллер использует модель дискретного времени с временем выборки Ts для прогнозирования.
PredictionHorizon - Горизонт прогнозированияШаги горизонта прогнозирования, заданные как положительное целое число. Продукт PredictionHorizon и Ts - время прогнозирования; то есть насколько контроллер смотрит в будущее.
ControlHorizon - Горизонт управления2 (по умолчанию) | положительное целое | вектор положительных целых чиселГоризонт управления, указанный как один из следующих:
Положительное целое число, m, между 1 и p, включительно, где p равно PredictionHorizon. В этом случае контроллер вычисляет m свободных перемещений управления, происходящих в моменты времени от k до k + m-1, и удерживает выходную константу контроллера для оставшихся шагов горизонта прогнозирования от k + m до k + p-1. Здесь k - текущий интервал управления.
Вектор положительных целых чисел [m1, m2,...], указывающий длины блокирующих интервалов. По умолчанию контроллер вычисляет M блоков свободных перемещений, где M - количество интервалов блокировки. Первое свободное перемещение применяется к временам k-k + m1-1, второе свободное перемещение применяется от времени k + m1-k + m1 + m2-1 и так далее. Использование блокировочных перемещений может повысить надежность контроллера. Сумма значений вControlHorizon должен соответствовать горизонту предсказания p. Если указан вектор, сумма которого равна:
Меньше горизонта прогнозирования, тогда контроллер добавляет интервал блокировки. Длина этого интервала такова, что сумма длин интервала равна р. Например, если p =10 и указывается горизонт управления ControlHorizon=[1 2 3], то контроллер использует четыре интервала с длинами [1 2 3 4].
Больше горизонта прогнозирования, то интервалы усекаются до тех пор, пока сумма длин интервалов не будет равна р. Например, если p =10 и указывается горизонт управления ControlHorizon= [1 2 3 6 7], то контроллер использует четыре интервала с длинами [1 2 3 4].
Дополнительные сведения о блокировании манипулируемых переменных см. в разделе Блокирование манипулируемых переменных.
Model - Прогнозная модель и номинальные условияМодель прогнозирования и номинальные условия, указанные как структура со следующими полями. Дополнительные сведения о модели прогнозирования MPC см. в разделе Моделирование MPC и оценка состояния контроллера.
Plant - Модель прогнозирования установкиМодель прогнозирования установки, заданная как модель LTI или линейная модель панели инструментов идентификации системы.
Примечание
Прямой переход от обрабатываемых переменных к любым выводам в 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 )/Ts.
Каждый структурный элемент имеет следующие поля.
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 для горизонта прогнозирования, укажите скалярное значение.
Для изменения значения РПУ по горизонту прогнозирования от времени k до времени k + p-1 задайте вектор до p значений. Здесь k - текущее время, а p - горизонт прогнозирования. Если указано меньше значений p, окончательное значение ECR используется для оставшихся шагов горизонта прогнозирования.
MaxECR - верхняя граница СН0 (по умолчанию) | неотрицательный скаляр | векторМягкость верхней границы MV, где большее значение равенства для релаксации (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 для горизонта прогнозирования, укажите скалярное значение.
Для изменения значений РПУ по горизонту прогнозирования от времени k до времени k + p-1 задайте вектор до значений p. Здесь k - текущее время, а p - горизонт прогнозирования. Если указано меньше значений p, то конечные значения ECR используются для оставшихся шагов горизонта прогнозирования.
RateMaxECR - Скорость изменения MV мягкости верхней границы0 (по умолчанию) | неотрицательный конечный скаляр | векторMV скорость изменения мягкости верхней границы, где большее значение равенства для релаксации (ECR) указывает более мягкое ограничение, указанное как неотрицательный конечный скаляр или вектор. По умолчанию скорость изменения верхних границ среднего напряжения является жестким ограничением.
Чтобы использовать одно и то же значение ECR для горизонта прогнозирования, укажите скалярное значение.
Для изменения значений РПУ по горизонту прогнозирования от времени k до времени k + p-1 задайте вектор до значений p. Здесь k - текущее время, а p - горизонт прогнозирования. Если указано меньше значений p, то конечные значения ECR используются для оставшихся шагов горизонта прогнозирования.
Name - Наименование СНИмя MV, указанное как строковый или символьный вектор.
Units - блоки СН"" (по умолчанию) | строка | символьный векторЕдиницы среднего напряжения, указанные как строковый или символьный вектор.
ScaleFactor - масштабный коэффициент СН1 (по умолчанию) | положительный конечный скалярМасштабный коэффициент СН, заданный как положительный конечный скаляр. В общем случае используйте рабочий диапазон управляемой переменной. Определение соответствующего масштабного коэффициента может улучшить численное кондиционирование для оптимизации. Дополнительные сведения см. в разделе Определение масштабных коэффициентов.
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 - Мягкость нижней границы OV1 (по умолчанию) | неотрицательный конечный скаляр | векторOV мягкость нижней границы, где большее значение равенства для релаксации (ECR) указывает более мягкое ограничение, указанное как неотрицательный конечный скаляр или вектор. По умолчанию верхние границы OV являются мягкими ограничениями.
Чтобы избежать создания неразрешимой проблемы оптимизации во время выполнения, рекомендуется использовать мягкие границы OV.
Чтобы использовать одно и то же значение ECR для горизонта прогнозирования, укажите скалярное значение.
Чтобы изменить значение РПУ по горизонту прогнозирования от времени k + 1 до времени k + p, задайте вектор до значений p. Здесь k - текущее время, а p - горизонт прогнозирования. Если указано меньше значений p, окончательное значение ECR используется для оставшихся шагов горизонта прогнозирования.
MaxECR - Мягкость верхней границы OV1 (по умолчанию) | неотрицательный конечный скаляр | векторOV мягкость верхней границы, где большее значение равенства для релаксации (ECR) указывает более мягкое ограничение, указанное как неотрицательный конечный скаляр или вектор. По умолчанию нижние границы OV являются мягкими ограничениями.
Чтобы избежать создания неразрешимой проблемы оптимизации во время выполнения, рекомендуется использовать мягкие границы OV.
Чтобы использовать одно и то же значение ECR для горизонта прогнозирования, укажите скалярное значение.
Чтобы изменить значение РПУ по горизонту прогнозирования от времени k + 1 до времени k + p, задайте вектор до значений p. Здесь k - текущее время, а p - горизонт прогнозирования. Если указано меньше значений p, окончательное значение ECR используется для оставшихся шагов горизонта прогнозирования.
Name - Наименование OVИмя OV, указанное как строковый или символьный вектор.
Units - блоки OV"" (по умолчанию) | строка | символьный векторЕдиницы OV, указанные как строковый или символьный вектор.
ScaleFactor - коэффициент масштаба OV1 (по умолчанию) | положительный конечный скалярКоэффициент масштаба OV, заданный как положительный конечный скаляр. В общем случае используйте рабочий диапазон выходной переменной. Определение соответствующего масштабного коэффициента может улучшить численное кондиционирование для оптимизации. Дополнительные сведения см. в разделе Определение масштабных коэффициентов.
DisturbanceVariables - Входная информация о переменном возмущении и масштабные коэффициентыИнформация о переменной возмущения (DV) и масштабные коэффициенты, определенные как структурный массив с элементами Nd, где Nd - общее количество измеренных и неизмеренных входов возмущения. Порядок сигналов возмущения в пределах DisturbanceVariables первые записи Nmd относятся к измеренным входным возмущениям, последние записи Nud относятся к неизмеренным входным возмущениям.
Для доступа к этому свойству можно использовать псевдоним DV вместо DisturbanceVariables.
Каждый структурный элемент имеет следующие поля.
Name - Наименование DVИмя DV, указанное как строковый или символьный вектор.
Units - блоки OV"" (по умолчанию) | строка | символьный векторЕдиницы OV, указанные как строковый или символьный вектор.
ScaleFactor - коэффициент масштабирования DV1 (по умолчанию) | положительный конечный скалярМасштабный коэффициент 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 больше 1012, величина 10*sqrt(eps) добавляется к каждому диагональному члену. См. раздел Функция затрат.
При использовании функции альтернативных затрат укажите Weights.ManipulatedVariablesRate в виде матрицы ячеек, которая содержит
матрицу Nmv-на-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 - Вес переменной настройки Slack1e5 (по умолчанию) | положительный скалярВес настройки переменной Slack, заданный как положительный скаляр. Увеличение или уменьшение равного веса релаксации (ECR), чтобы сделать все мягкие ограничения более жесткими или мягкими, соответственно.
Optimizer - Параметры оптимизации QPПараметры оптимизации QP, указанные как структура со следующими полями. Дополнительные сведения о поддерживаемых решателях QP см. в разделе Решатели QP.
Algorithm - Алгоритм решателя QP'active-set' (по умолчанию) | 'interior-point'Алгоритм решателя QP, указанный как один из следующих:
'active-set' - Решить проблему QP с помощью алгоритма активного набора KWIK.
'interior-point' - Решить проблему QP с помощью алгоритма основной-двойной внутренней точки с предиктором-корректором Мехротра.
ActiveSetOptions - Активные настройки решателя QPАктивные настройки решателя QP, заданные как структура. Эти параметры применяются только в том случае, если Algorithm является 'active-set'.
Если CustomSolver или CustomSolverGodeGen является true, контроллер не требует использования пользовательского решателя для выполнения этих настроек.
Можно указать следующие параметры оптимизатора активного набора.
MaxIterations - Максимальное число итераций'default' (по умолчанию) | положительное целое числоМаксимальное число итераций, допускаемых при вычислении решения QP, указанное как одно из следующих:
'default' - Контроллер MPC автоматически вычисляет максимальное количество итераций решателя QP как nv), где:
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), заданный как положительный скаляр.
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 | Проверить контроллер ПДК на наличие конструктивных ошибок и проблем устойчивости во время выполнения |
mpcmove | Вычислите оптимальное действие управления и обновите состояния контроллера |
sim | Моделирование контроллера MPC в замкнутом контуре с линейной установкой |
mpcstate | Состояние контроллера MPC |
getCodeGenerationData | Создание структур данных для mpcmoveCodeGeneration |
generateExplicitMPC | Преобразование неявного контроллера MPC в явный контроллер MPC |
Создайте модель завода с функцией переноса + 2s).
Plant = tf([1 1],[1 2 0]);
Установка является SISO, поэтому ее вход должен быть управляемой переменной и ее выход должен быть измерен. В целом, рекомендуется обозначать все типы сигналов установки, используя либо setmpcsignals или LTI InputGroup и OutputGroup свойства.
Укажите время выборки для контроллера.
Ts = 0.1;
Определите границы для управляемой переменной , так что 1≤u≤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.
Чтобы минимизировать вычислительные издержки, создание прогнозирующего контроллера модели происходит в две фазы. Первое происходит при создании, когда вы используете mpc или при изменении свойства контроллера. Создание включает в себя основные проверки достоверности и непротиворечивости, такие как размеры сигнала и неотрицательность весов.
Второй фазой является инициализация, которая происходит при первом использовании объекта в моделировании или аналитической процедуре. Инициализация вычисляет все постоянные свойства, необходимые для эффективной числовой производительности, такие как матрицы, определяющие оптимальную задачу управления и коэффициенты усиления оценщика состояния. Кроме того, во время инициализации выполняются диагностические проверки, такие как проверка того, что состояния контроллера являются наблюдаемыми.
По умолчанию на обеих фазах отображаются информационные сообщения в окне команд. Эти сообщения можно включить или выключить с помощью 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.