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

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

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

Проектирование контроллера 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).

Модель экспортирует эту последовательность управления в рабочую область 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)

См. также