the System states behave equally with the implementation of a linear model predictive control
1 回表示 (過去 30 日間)
古いコメントを表示
I have implemented the following model predictive control algorithm in MATLAB. the idea is to write the system state forward in time in terms of the previous inputs and states. Doing so, the cost function of the Optimal Control problem over a known horizon should be minimized to drive the control signal. The following is my code:
clc;clear;close all;
Ts = 0.01;
tMax = 5;
t = 0:Ts:tMax;
s = tf('s');
G = (0.03*s+1)/(s^2-5*s+2);
G = c2d(G,Ts);
StateSpace = ss(G);
A = StateSpace.A;
eig(A)
B = StateSpace.B;
C = StateSpace.C;
D = StateSpace.D;
Np = 3;
n = size(A,2);
m = size(B,2);
ABAR = [eye(size(A))
A
A^2
A^3];
BBAR = [zeros(n,m) zeros(n,m) zeros(n,m)
B zeros(n,m) zeros(n,m)
A*B B zeros(n,m)
A^2*B A*B B];
% CBAR = zeros(((Np)*m),((Np)*n));
% for i=1:Np
%
% CBAR(i*m-(m-1):i*m,1:n) = C*A^(i);
%
% end
% DBAR = zeros(((Np)*m),((Np)*m));
%
% DBAR = ...
% [C*B 0 0
% C*A*B C*B 0
% C*A^2*B C*A*B C*B];
N = numel(t);
r = 0.1;
q = 1;
RBAR = r*eye((Np*m),(Np*m));
QBAR = q*eye(((Np+1)*n),((Np+1)*n));
T = (BBAR'*QBAR*BBAR+RBAR)^-1*BBAR'*QBAR;
K = (BBAR'*QBAR*BBAR+RBAR)^-1*BBAR'*QBAR*ABAR;
UBAR = ones(m*Np,N);
Ref = ones((Np+1)*n,N+1);
% Ref(1,:) = ones(1,N+1);
% Ref(2,:) = zeros(1,N+1);
%
% Ref(3,:) = ones(1,N+1);
% Ref(4,:) = zeros(1,N+1);
%
% Ref(5,:) = ones(1,N+1);
% Ref(6,:) = zeros(1,N+1);
x = zeros(n,N);
for i=2:N
x(:,i) = A*x(:,i-1) + B*UBAR(1,i-1);
UBAR(:,i) = T*Ref(:,i+1) - K*x(:,i);
end
f1 = figure(1);
subplot 211
plot(t,x(1,:),'LineWidth',2)
grid on
legend('x_{1}')
subplot 212
plot(t,x(2,:),'Color',[0.5 0.1 0.3],'LineWidth',2)
grid on
legend('x_{2}')
f2 = figure(2);
plot(t,UBAR(1,:),'R','LinEwIDth',2)
grid on
xlabel('Time (s)')
legend('u')
movegui(f1,'east')
movegui(f2,'west')
And the results I'm getting are shown:
My problem is that the system is stable yet both state variables are exactly the same. I do not know whether the control signal is being drived correctly or not. Can somone help me?
0 件のコメント
回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Model Predictive Control Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!