Вычислите эффект контроллера, настраивающего веса на производительности
[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. В общем случае однако веса производительности и используемые в контроллере имеют различные цели и должны быть заданы соответственно.
Входные параметры TstopRV, и 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
Для получения дополнительной информации о настраивающемся контроллере весов свойство смотрите mpc.
[J,sens] = sensitivity(MPCobj,'perf_fun',param1,param2,...) использует функцию производительности 'perf_fun' задавать J. Его функциональное определение должно быть в форме
function J = perf_fun(MPCobj, param1, param2, ...)
Таким образом, это должно вычислить J для данного контроллера и дополнительных параметров param1, param2... и это должно быть на пути MATLAB®.
При выполнении анализа чувствительности программное обеспечение игнорирует изменяющийся во времени, недиагональный, и ECR ослабляют переменные веса.