欢迎光临散文网 会员登陆 & 注册

【MPC模型预测控制器】4_完整案例讲解 - Octave代码

2023-07-10 17:04 作者:此物最好吃  | 我要投稿

%%~~~~~~~~~~MPC_Test.m~~~~~~~~~~

%稍微改了一点,可以简单实现目标函数跟踪

clc

clear

close all


A = [1 0.1; -1 2];

n = size(A,1);

B = [0.2 1; 0.5 2];

p = size(B,2);


%权重系数

Q = [1 0; 0 1];

F = [1 0; 0 1];

R = [0.1 0; 0 0.1];


k_steps = 100;

X_K = zeros(n,k_steps);

%初始状态变量值

X_K(:,1) = [20;-20];

%设置目标函数

X_D = zeros(n,k_steps);

X_D(1,50:end) = 50;

X_D(2,50:end) = 10;

U_K = zeros(p,k_steps);


%定义预测区间

N = 5;

[E,H] = MPC_Matrices(A,B,Q,R,F,N);



%计算每一步的状态变量值

 for k = 1 : k_steps

   U_K(:,k) = Prediction(X_K(:,k)-X_D(:,k),E,H,N,p);

   X_K(:,k+1) = A*(X_K(:,k)-X_D(:,k)) + B*U_K(:,k) + X_D(:,k);

 end


 %绘制状态变量和输入变化

 subplot (2,1,1);

 hold;

 for i = 1 : size(X_K,1)

   plot(X_K(i,:));

   plot(X_D(i,:));

 end


legend("x1","x2","xd1","xd2");

hold off;

subplot(2,1,2);

hold;

for i = 1 : size(U_K,1)

  plot(U_K(i,:));

end

legend("u1","u2");

ldg = legend;

【MPC模型预测控制器】4_完整案例讲解 - Octave代码的评论 (共 条)

分享到微博请遵守国家法律