чувствительность

Вычислите эффект контроллера, настраивающего веса на производительности

Синтаксис

[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' (интегральная квадратичная невязка), для которого показатель производительности

J=i=1Tstop(j=1ny(wjyeyij)2+j=1nu[(wjueuij)2+(wjΔuΔuij)2])

'IAE' (интегральная абсолютная погрешность), для которого показатель производительности

J=i=1Tstop(j=1ny|wjyeyij|+j=1nu(|wjueuij|+|wjΔuΔuij|))

'ITSE' (интеграл взвешенной временем квадратичной невязки), для которого показатель производительности

J=i=1TstopiΔt(j=1ny(wjyeyij)2+j=1nu[(wjueuij)2+(wjΔuΔuij)2])

'ITAE' (интеграл взвешенной временем абсолютной погрешности), для которого показатель производительности

J=i=1TstopiΔt(j=1ny|wjyeyij|+j=1nu(|wjueuij|+|wjΔuΔuij|))

В вышеупомянутых выражениях ny является количеством управляемых выходных параметров, и nu является количеством переменных, которыми управляют. eyij является различием между выводом j и его заданным значением (или ссылка) значение во временном интервале i. euij является различием между переменной j, которой управляют, и ее целью во временном интервале i.

W параметры являются неотрицательными весами производительности, заданными структурой PerfWeights, который содержит следующие поля:

  • OutputVariables — вектор - строка элемента ny, который содержит wjy значения

  • ManipulatedVariables — вектор - строка элемента nu, который содержит wju значения

  • ManipulatedVariablesRate — вектор - строка элемента nu, который содержит wjΔu значения

Если 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 ослабляют переменные веса.

Примеры

свернуть все

Задайте модель объекта управления третьего порядка с тремя переменными, которыми управляют, и двумя управляемыми выходными параметрами.

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, для заданного контроллера и сценария симуляции.

[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.

Смотрите также

|

Представленный в R2009a