一、获取代码方式
获取代码方式1:
完整代码已上传我的资源: 【预测模型】基于matlab离散状态空间模型模拟预测控制仿真系统(单输入单输出)【含Matlab源码 1537期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、部分源代码
% Testes do controlador preditivoclear, clcs = tf('s');% Definição da plantaTs = 1;% G = c2d((50/(20*s+1)),Ts);% num = cell2mat(G.Numerator);% den = cell2mat(G.Denominator);% [A,B,C,D] = tf2ss(num,den);A = [1 1;0 1];B = [0.5;1];C = [1 0];x_o = [0;0]; % Condições iniciais dos estadosy_o = 0; % Condições iniciais das saídas% Controle preditivoNp = 20; Nc = 4; r_w = 0; ref = 1; Nsim = 100;[y1, u1] = mpc_simulation_siso(A, B, C, y_o, Np, Nc, Nsim, r_w, ref);Np = 20; Nc = 4; r_w = 1; ref = 1; Nsim = 100;[y2, u2] = mpc_simulation_siso(A, B, C, y_o, Np, Nc, Nsim, r_w, ref);Np = 20; Nc = 4; r_w = 100; ref = 1; Nsim = 100;[y3, u3] = mpc_simulation_siso(A, B, C, y_o, Np, Nc, Nsim, r_w, ref);t = 0:Nsim-1;figuresubplot(211)plot(t,y1,t,y2,t,y3)grid onxlabel('Instante de amostragem')ylabel('Saída do processo')legend('r_w = 0','r_w = 1','r_w = 100', 'Location', 'Southeast');subplot(212)plot(t,u1,t,u2,t,u3)grid onxlabel('Instante de amostragem')ylabel('Sinal de controle')legend('r_w = 0','r_w = 1','r_w = 100');function [y, u] = mpc_simulation_siso(A_m, B_m, C_m, y_k, Np, Nc, Nsim, r_w, ref)%n1 = length(B_m);% Condições iniciais:x = zeros(n1,1); % Condições nulas mencionadasx = [x; y_k]; % DeltaX = x(0) = [x_m(0); y(0)] - x_m(-1) = 0u_k = 0; % u(0) = 0;% Vetores de saídas da funçãou = zeros(1,Nsim);y = zeros(1,Nsim);% Matrizes importantes a serem usadas[A, B, C, Phi, F] = mpcgain(A_m, B_m, C_m, Np, Nc);H_inv = (Phi')*Phi + r_w*eye(Nc); % Matriz Hessiana inversaif det(H_inv) == 1e-4error('Hessian Matrix does not exist');endMat_gain = inv(H_inv)*(Phi')*F;% Ganhos do controlador:K_mpc = Mat_gain(1,:); % A primeira linha de H*(Phi^T)*FK_y = K_mpc(length(K_mpc)); % K_y = último elemento de K_mpcfprintf('Ganhos do controlador:\nK_mpc = [');fprintf('%f ',K_mpc);fprintf(']\nK_y = %f\n', K_y);fprintf('Iniciando a simulação do controlador preditivo...\n');for k = 1:Nsim%Cálculo do esforço de controle Delta_udeltau = K_y*ref - K_mpc*x;u_k = deltau + u_k; %Sinal de controle do processo% Salvando vetor de dadosu(k) = u_k;y(k) = y_k;% Aplicando ao processo, utilizando o modelo aumentado do sistemay_k = C*x; %Saída real do processox = A*x + B*deltau; %Vetor de estados x(k)end
三、运行结果
四、matlab版本及参考文献
1 matlab版本
a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,.
【预测模型】基于matlab离散状态空间模型模拟预测控制仿真系统(单输入单输出)【含Matlab源码 1537期】