Понимание Управления поведением путем исследования последовательности оптимального управления

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

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

Спроектируйте контроллер MPC

Основная настройка контроллера MPC включает:

  • Двойной интегратор как модель предсказания

  • Горизонт предсказания 20

  • Горизонт управления 10

  • Введите ограничения -1 <= u(t) <= 1

Задайте контроллер MPC.

Ts = 0.1;
p = 20;
m = 10;
mpcobj = mpc(tf(1,[1 0 0]),Ts,p,m);
mpcobj.MV = struct('Min',-1,'Max',1);
nu = 1;
-->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.

Симулируйте модель в Simulink

Чтобы запустить этот пример, Simulink® требуется.

if ~mpcchecktoolboxinstalled('simulink')
    disp('Simulink is required to run this example.')
    return
end

Откройте модель Simulink и запустите симуляцию.

mdl = 'mpc_sequence';
open_system(mdl)
sim(mdl)
-->Converting the "Model.Plant" property of "mpc" object to state-space.
-->Converting model to discrete time.
   Assuming no disturbance added to measured output channel #1.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Блок MPC Controller имеет mv.seq выходной порт, который включен путем выбора параметров блоков последовательности Оптимального управления. Это выходы порта последовательность оптимального управления вычисляется контроллером в каждом шаге расчета. Выходной сигнал является массивом с p+1 строка и Nmv столбцы, где p горизонт предсказания и Nmv количество переменных, которыми управляют.

Подобным образом контроллер может вывести оптимальную последовательность состояния (x.seq) и оптимальная выходная последовательность (y.seq).

Когда симуляция останавливается, To Workspace блок соединяется с mv.seq порт экспортирует эту управляющую последовательность в рабочую область MATLAB®, регистрируя данные в переменной useq.

Анализируйте последовательности оптимального управления

Постройте последовательность оптимального управления в определенные моменты времени.

times = [0 0.2 1 2 2.1 2.2 3 3.5 5];
figure('Name','Optimal sequence history')
for t = 1:9
    ct = times(t)*10+1;
    subplot(3,3,t)
    h = stairs(0:p,useq.signals.values(ct,:));
    h.LineWidth = 1.5;
    hold on
    plot((0:p)+.5,useq.signals.values(ct,:),'*r')
    xlabel('prediction step')
    ylabel('u')
    title(sprintf('Sequence (t=%3.1f)',useq.time(ct)))
    grid
    axis([0 p -1.1 1.1])
    hold off
end

Диспетчер MPC использует первые две секунды, чтобы принести выход очень близко к сетболу. Контроллер выход в верхнем пределе (+1) в течение одной секунды и переключается на нижний предел (-1) в течение следующей секунды, которая является лучшей стратегией управления при входных ограничениях.

bdclose(mdl)

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