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

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

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

Разработайте контроллер MPC

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

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

  • Горизонт прогноза 20

  • Управляйте горизонтом 10

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

Сконфигурируйте контроллер MPC.

Ts = 0.1;                               % Sample time
p = 20;                                 % Prediction horizon
m = 10;                                 % Control horizon
mpcobj = mpc(tf(1,[1 0 0]),Ts,p,m);     % MPC object
mpcobj.MV = struct('Min',-1,'Max',1);   % Input saturation constraints
nu=1;                                   % Number of manipulated variables
-->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(R) 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)-by-Nmv массивом, где p является горизонтом прогноза, и Nmv является количеством переменных, которыми управляют.

simlar способом контроллер может вывести оптимальную последовательность состояния (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)

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