Вычислите значение показателя производительности и его чувствительности к диагональным весам контроллера MPC
[
вычисляет пользовательский, совокупный скалярный показатель производительности с обратной связью J
,sens
] = sensitivity(MPCobj
,PerfFunc
,PerfWeights
,Ns
,r
,v
,SimOptions
,utarget
)J
, и его чувствительность sens
к диагональным весам, заданным в контроллере MPC объект MPCobj
. PerfFunc
задает форму показателя производительности, в то время как дополнительные аргументы PerfWeights
, Ns
R
V
, SimOptions
, и utarget
задайте веса показателя производительности, шаги симуляции, ссылку и сигналы воздействия, опции симуляции и цели переменных, которыми управляют, соответственно.
Задайте модель объекта управления третьего порядка с тремя переменными, которыми управляют, и двумя управляемыми выходными параметрами.
plant = rss(3,2,3); plant.D = 0;
Создайте контроллер MPC для объекта.
mpcobj = mpc(plant,1);
-->The "PredictionHorizon" property of "mpc" object is empty. Trying PredictionHorizon = 10. -->The "ControlHorizon" property of the "mpc" object is empty. Assuming 2. -->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.
Задайте интегральную функцию эффективности абсолютной погрешности и установите веса эффективности.
PerfFunc = 'IAE';
PerfWts.OutputVariables = [1 0.5];
PerfWts.ManipulatedVariables = zeros(1,3);
PerfWts.ManipulatedVariablesRate = zeros(1,3);
Задайте 20
второй сценарий симуляции с модулем продвигается в выход 1 заданное значение и заданное значение нуля для выхода 2.
Tstop = 20; r = [1 0];
Задайте номинальную стоимость переменных, которыми управляют, чтобы быть нулями.
utarget = zeros(1,3);
Вычислите показатель производительности с обратной связью, J
, и его чувствительность, sens
, к весу, заданному в mpcobj
, для заданного сценария симуляции.
[J,sens] = sensitivity(mpcobj,PerfFunc,PerfWts,Tstop,r,[],[],utarget)
-->Converting model to discrete time. -->Assuming output disturbance added to measured output channel #1 is integrated white noise. -->Assuming output disturbance added to measured output channel #2 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
J = 1.1426
sens = struct with fields:
OutputVariables: [-0.0041 -0.1285]
ManipulatedVariables: [0.0378 -0.0465 0.0523]
ManipulatedVariablesRate: [0.4007 0.2433 0.6805]
Положительное, и относительно выше, значения чувствительности к плавающим курсам, которыми управляют, предполагают, что уменьшение весов, которые заданы в mpcobj
поскольку плавающие курсы, которыми управляют, способствовали бы больше всего, чтобы уменьшить IAE
показатель производительности задан PerfWts
.
MPCobj
— Прогнозирующий контроллер моделиПрогнозирующий контроллер модели в виде контроллера MPC объект. Чтобы создать контроллер MPC, использовать mpc
.
PerfFunc
— Форма функции показателя производительности'ISE'
| 'IAE'
| 'ITSE'
| 'ITAE'
Форма функции показателя производительности в виде одного из следующего:
'ISE'
(интегральная квадратичная невязка), для которого показатель производительности
'IAE'
(интегральная абсолютная погрешность), для которого показатель производительности
'ITSE'
(интеграл взвешенной временем квадратичной невязки), для которого показатель производительности
'ITAE'
(интеграл взвешенной временем абсолютной погрешности), для которого показатель производительности
В этих выражениях ny является количеством управляемых выходных параметров, и nu является количеством переменных, которыми управляют, eyij является различием между выходом j и его заданным значением (или ссылка) значение во временном интервале i, euij является различием между переменной j, которой управляют, и ее целью во временном интервале i.
W параметры являются неотрицательными весами эффективности, заданными структурой PerfWeights
.
Пример: 'ITAE'
PerfWeights
— Веса функции эффективностиMPCobj.Weights
(значение по умолчанию) | структураВеса функции эффективности w в виде структуры со следующими полями:
OutputVariables
— ny - вектор-строка элемента, который содержит значения
ManipulatedVariables
— nu - вектор-строка элемента, который содержит значения
ManipulatedVariablesRate
— nu - вектор-строка элемента, который содержит значения
Если PerfWeights
пусто или не задан, это принимает значение по умолчанию к соответствующим весам в MPCobj
. В общем случае однако индекс эффективности не связан с квадратичной функцией стоимости, которую диспетчер MPC пытается минимизировать путем выбора значений переменных, которыми управляют. Одно четкое различие - то, что индекс эффективности основан на симуляции замкнутого цикла до времени, которое обычно отличается, чем горизонт предсказания, в то время как контроллер MPC вычисляет перемещения, которые минимизируют его внутреннюю функцию стоимости до горизонта предсказания и способом разомкнутого контура. Кроме того, даже когда индекс эффективности выбран, чтобы иметь тип ISE, его веса должны быть в квадрате, чтобы совпадать с весами, заданными в функции стоимости MPC.
Поэтому веса эффективности и используемые в контроллере имеют различные цели; задайте эти веса соответственно.
Ns
— Количество шагов симуляцииКоличество шагов симуляции в виде положительного целого числа.
Если вы не используете Ns
, значением по умолчанию является размер строки того, какой бы ни из следующих массивов имеет самый большой размер строки:
Пример: 100
r
— Опорный сигналMPCobj.Model.Nominal.Y
(значение по умолчанию) | матрицаОпорный сигнал в виде массива. Этот массив имеет ny
столбцы, где ny
количество объекта выходные параметры. r
может иметь где угодно от 1 к Ns
'Строки' . Если количество строк меньше Ns
, недостающие строки установлены равные последней строке.
Если r
пусто или не задан, это принимает значение по умолчанию к номинальной стоимости объекта выход, MPCobj.Model.Nominal.Y
.
Пример: ones(100,1)
v
— Измеренный сигнал воздействияMPCobj.Model.Nominal.U(md)
(значение по умолчанию) | матрицаИзмеренный сигнал воздействия в виде массива. Этот массив имеет nv
столбцы, где nv
количество измеренных входных воздействий. v
может иметь где угодно от 1 к Ns
'Строки' . Если количество строк меньше Ns
, недостающие строки установлены равные последней строке.
Если v
пусто или не задан, это принимает значение по умолчанию к номинальной стоимости измеренного входного воздействия, MPCobj.Model.Nominal.U(md)
, где md
вектор, содержащий индексы измеренных сигналов воздействия, как задано setmpcsignals
.
Пример: [zeros(50,1);ones(50,1)]
SimOptions
— Объект опций симуляции[]
(значение по умолчанию) | mpcsimopt
объектИспользуйте симуляцию, которой опции возражают, чтобы задать опции, такие как шум, и воздействие сигнализирует, что канал в объект, но неизвестен контроллеру. Можно также использовать этот объект задать сценарий разомкнутого контура или модель объекта управления в цикле, который отличается от того в MPCobj.Model.Plant
.
Для получения дополнительной информации смотрите mpcsimopt
.
utarget
— Цель для переменных, которыми управляют,MPCobj.Model.Nominal.U
(значение по умолчанию) | векторДополнительный вход utarget
вектор из переменных целей nu, которыми управляют. Их значениями по умолчанию является номинальная стоимость переменных, которыми управляют.
Пример: [0.1;0;-0.2]
J
— Показатель производительности для данного контроллера'double'
sens
— Чувствительность показателя производительности Эта структура содержит и числовые частные производные критерия качества работы J
относительно его диагональных весов. Эти частные производные, также названные чувствительностью, предлагают корректировки веса, которые должны улучшать производительность; то есть, уменьшайте J
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.