Вычислите эффект контроллера, настраивающего веса на производительности
[J,sens] = sensitivity(MPCobj,PerfFunc,PerfWeights,Tstop,r,v,simopt,utarget)
[J,sens] = sensitivity(MPCobj,'perf_fun',param1,param2,...)
Функция sensitivity
является контроллером, настраивающим помощь. J
задает скалярный показатель производительности. sensitivity
вычисляет J
и его частные производные относительно контроллера, настраивающего веса. Эта чувствительность предлагает настроить корректировки веса, которые должны улучшать производительность; то есть, уменьшайте J
.
[J,sens] = sensitivity(MPCobj,PerfFunc,PerfWeights,Tstop,r,v,simopt,utarget)
вычисляет скалярный показатель производительности, J
, и чувствительность, sens
, для контроллера, заданного контроллером MPC объект MPCobj
.
PerfFunc
должен быть одним из следующего:
'ISE'
(интегральная квадратичная невязка), для которого показатель производительности
'IAE'
(интегральная абсолютная погрешность), для которого показатель производительности
'ITSE'
(интеграл взвешенной временем квадратичной невязки), для которого показатель производительности
'ITAE'
(интеграл взвешенной временем абсолютной погрешности), для которого показатель производительности
В вышеупомянутых выражениях ny является количеством управляемых выходных параметров, и nu является количеством переменных, которыми управляют. eyij является различием между выводом j и его заданным значением (или ссылка) значение во временном интервале i. euij является различием между переменной j, которой управляют, и ее целью во временном интервале i.
W параметры являются неотрицательными весами производительности, заданными структурой PerfWeights
, который содержит следующие поля:
OutputVariables
— вектор - строка элемента ny, который содержит значения
ManipulatedVariables
— вектор - строка элемента nu, который содержит значения
ManipulatedVariablesRate
— вектор - строка элемента nu, который содержит значения
Если PerfWeights
не задан, он принимает значение по умолчанию к соответствующим весам в MPCobj
. В целом, однако, веса производительности и используемые в контроллере имеют различные цели и должны быть заданы соответственно.
Входные параметры Tstop
, r
, v
и simopt
задают сценарий симуляции, используемый, чтобы оценить производительность. Смотрите sim
для деталей.
Tstop
является целым числом интервалов выборки контроллера, которые будут моделироваться. Итоговым временем для симуляций будет Tstop × Δt, где Δt является интервалом выборки контроллера, заданным в MPCobj
.
Дополнительный вход utarget
является вектором переменных целей nu, которыми управляют. Их значениями по умолчанию является номинальная стоимость переменных, которыми управляют. Δuij является изменением в переменной j, которой управляют, и ее цели во временном интервале i.
Переменная sens
структуры содержит вычисленную чувствительность (частные производные J
относительно настраивающих весов MPCobj
.) Его поля:
OutputVariables
— вектор - строка элемента ny из чувствительности относительно MPCobj.Weights.OutputVariables
ManipulatedVariables
— вектор - строка элемента nu из чувствительности относительно MPCobj.Weights.ManipulatedVariables
ManipulatedVariablesRate
— вектор - строка элемента nu из чувствительности относительно MPCobj.Weights.ManipulatedVariablesRate
Смотрите Веса для получения дополнительной информации о настраивающихся весах, содержавшихся в MPCobj
.
[J,sens] = sensitivity(MPCobj,'perf_fun',param1,param2,...)
использует функцию производительности 'perf_fun'
, чтобы задать J
. Его функциональное определение должно быть в форме
function J = perf_fun(MPCobj, param1, param2, ...)
Таким образом, это должно вычислить J
для данного контроллера и дополнительных параметров param1
, param2
... и это должно быть на пути MATLAB®.
При выполнении анализа чувствительности программное обеспечение игнорирует изменяющийся во времени, недиагональный, и ECR ослабляют переменные веса.