Использование масштабных коэффициентов для облегчения настройки веса

В этом примере показано, как задать масштабные коэффициенты в контроллере MPC, чтобы упростить настройку веса.

Определите модель объекта управления

Дискретное, линейное, пространство состояний модели объекта управления имеет 10 состояний, 5 входов и 3 выхода.

[plant,Ts] = mpcscalefactor_model;
[ny,nu] = size(plant.D);

Входы объекта включают манипулируемую переменную (MV), измеренное нарушение порядка (MD) и неизмеренное нарушение порядка (UD). Выходы объекта включают измеренные выходы (MO) и неизмеренные выходы (UO).

mvindex = [1, 3, 5];
mdindex = 4;
udindex = 2;
moindex = [1 3];
uoindex = 2;
plant = setmpcsignals(plant,'MV',mvindex,'MD',mdindex,'UD',udindex,'MO',moindex,'UO',uoindex);

Номинальные значения и рабочие области значений модели объекта управления:

  • Вход 1: номинальное значение 100, область значений [50 150]

  • Вход 2: номинальное значение 10, область значений [5 15]

  • Вход 3: номинальное значение 0,01, область значений [0,005 0,015]

  • Вход 4: номинальное значение 0,1, область значений [0,05 0,15]

  • Вход 5: номинальное значение 1, область значений [0,5 1,5]

  • Выход 1: номинальное значение 0,01, область значений [0,005 0,015]

  • Выход 2: номинальное значение 1, область значений [0,5 1,5]

  • Выход 3: номинальное значение 100, область значений [50 150]

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

Unominal = [100;10;0.01;0.1;1];
Ynominal = [0.01;1;100];
Uspan = Unominal;
Yspan = Ynominal;
t = (0:1000)'*Ts;
nt = length(t);
Uol = (rand(nt,nu)-0.5).*(ones(nt,1)*Uspan');   % design input signal
Yol = lsim(plant,Uol,t);                        % compute plant output
fprintf('The difference between average output values and the nominal values are %.2f%%, %.2f%%, %.2f%% respectively.\n',...
    abs(mean(Yol(:,1)))/Ynominal(1)*100,abs(mean(Yol(:,2)))/Ynominal(2)*100,abs(mean(Yol(:,3)))/Ynominal(3)*100);
The difference between average output values and the nominal values are 2.25%, 3.53%, 2.47% respectively.

Оценка MPC с весами MPC по умолчанию

Когда входные и выходные сигналы объекта имеют различные порядки величин, настройки веса MPC по умолчанию часто дают плохую эффективность.

Создайте контроллер MPC с весами по умолчанию:

  • Weight.MV = 0

  • Weight.MVRate = 0.1

  • Weight.OV = 1

C = mpc(plant);
-->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.
Xnominal = zeros(10,1);
Unominal(udindex) = 0;  % Nominal values for unmeasured disturbance must be 0
C.Model.Nominal = struct('X',Xnominal,'DX',Xnominal,'Y',Ynominal,'U',Unominal);

Во-первых, протестируйте последовательность изменений уставки шага в трех опорных сигналах.

nStepLen = 15;
T1 = nStepLen*ny;
r1 = ones(T1,1)*Ynominal(:)';
ii = 1;
for i = 1:ny
    r1(ii:end,i) = r1(ii:end,i) + Ynominal(i);
    ii = ii + nStepLen;
end
sim(C,T1,r1)
-->The "Model.Disturbance" property of "mpc" object is empty:
   Assuming unmeasured input disturbance #2 is integrated white noise.
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
   Assuming no disturbance added to measured output channel #3.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Figure contains 5 axes. Axes 1 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 2 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 3 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 4 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 5 contains an object of type line. These objects represent Driving inputs, MPC response1.

Figure contains 3 axes. Axes 1 contains 2 objects of type line. These objects represent Driving inputs, MPC response1. Axes 2 contains 2 objects of type line. These objects represent Driving inputs, MPC response1. Axes 3 contains 2 objects of type line. These objects represent Driving inputs, MPC response1.

Реакция отслеживания первого выхода является плохой. Причина в том, что его область значений мала по сравнению с другими выходами. Если используются веса настройки контроллера по умолчанию, контроллер MPC не уделяет особого внимания регулированию этого вывода, потому что связанный штраф настолько мал по сравнению с другими выходами в целевой функции.

Во-вторых, проверьте неизмеренное подавление помех.

SimOpt = mpcsimopt;
SimOpt.UnmeasuredDisturbance = Uspan(udindex)';
T2 = 100;
r2 = ones(T2,1)*Ynominal(:)';
sim(C,T2,r2,[],SimOpt)

Figure contains 3 axes. Axes 1 contains 2 objects of type line. These objects represent Driving inputs, MPC response1. Axes 2 contains 2 objects of type line. These objects represent Driving inputs, MPC response1. Axes 3 contains 2 objects of type line. These objects represent Driving inputs, MPC response1.

Figure contains 5 axes. Axes 1 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 2 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 3 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 4 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 5 contains an object of type line. These objects represent Driving inputs, MPC response1.

Реакция подавления помех также плохая. Ни один из выходов не возвращается к своим уставкам.

Вычислите MPC с весами MPC по умолчанию после определения масштабных коэффициентов

Определение входного и выходного масштабных коэффициентов для контроллера MPC:

  • Улучшает численное качество вычислений оптимизации и оценки состояния.

  • Повышает вероятность того, что веса настройки по умолчанию достигнут хорошей эффективности контроллера.

Скопируйте контроллер MPC с весами по умолчанию.

C2 = C;

Чтобы задать масштабные коэффициенты, рекомендуется использовать ожидаемую рабочую область значений каждого входа и выхода.

for i = 1:length(mvindex)
    C2.MV(i).ScaleFactor = Uspan(mvindex(i));
end
nmd = length(mdindex);
for i = 1:nmd
    C2.D(i).ScaleFactor = Uspan(mdindex(i));
end
for i = 1:length(udindex)
    C2.D(i+nmd).ScaleFactor = Uspan(udindex(i));
end
for i = 1:ny
    C2.OV(i).ScaleFactor = Yspan(i);
end

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

sim(C2,T1,r1)
-->The "Model.Disturbance" property of "mpc" object is empty:
   Assuming unmeasured input disturbance #2 is integrated white noise.
-->Assuming output disturbance added to measured output channel #1 is integrated white noise.
   Assuming no disturbance added to measured output channel #3.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Figure contains 3 axes. Axes 1 contains 2 objects of type line. These objects represent Driving inputs, MPC response1. Axes 2 contains 2 objects of type line. These objects represent Driving inputs, MPC response1. Axes 3 contains 2 objects of type line. These objects represent Driving inputs, MPC response1.

Figure contains 5 axes. Axes 1 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 2 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 3 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 4 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 5 contains an object of type line. These objects represent Driving inputs, MPC response1.

Повторите второй тест, который является неизмеренным нарушением порядка.

sim(C2,T2,r2,[],SimOpt)

Figure contains 3 axes. Axes 1 contains 2 objects of type line. These objects represent Driving inputs, MPC response1. Axes 2 contains 2 objects of type line. These objects represent Driving inputs, MPC response1. Axes 3 contains 2 objects of type line. These objects represent Driving inputs, MPC response1.

Figure contains 5 axes. Axes 1 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 2 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 3 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 4 contains an object of type line. These objects represent Driving inputs, MPC response1. Axes 5 contains an object of type line. These objects represent Driving inputs, MPC response1.

И отслеживание уставок, и подавления помех отклики хороши даже без настройки весов MPC.

См. также

|

Похожие темы