资源简介
滚动时域优化(RHC)MATLAB源代码,用于动态环境下影响下系统的自适应控制,可以运行。
![](http://www.nz998.com/pic/54409.jpg)
代码片段和文件信息
% Example 6.2: Constrained Receding Horizon Control
% Demonstration of Receding Horizon Control (RHC) using LMI
% ###################################################################
% Edited by Giovani Tonel ( giotonel@enq.ufrgs.br ) March 28th 2007
% ###################################################################
%
% Retired from the book:
% Receding Horizon Control - Model Predictive Control for State Models
% Authors: W.H. Kwon and S. Han
%
clear all
close all
clc
disp(‘ ‘);
disp(‘=================================================================================‘);
disp(‘ Constrained Receding Horizon Control ‘);
disp(‘=================================================================================‘);
disp(‘ ‘);
%% System State Equation
A = [1 0.2212; 0 0.7788];
B = [0.0288; 0.2212];
G = [1 0; 0 1; 1.5 1];
%% Initial State
x0 = [1;0.3];
[nn] = size(A);
[nm] = size(B);
% Let‘s get predictor
N = input(‘ Horizon Length N:‘ );
tsim = input(‘Total simulation time:‘);
% Input Constraint
u_lim = 0.5;
ubar_lim = [];
for i=1:N
ubar_lim=[ubar_lim; u_lim];
end
% State Constraint
x_lim = [1.5; 0.3];
G = [1 0; 0 1];
g_lim = [1.5; 0.3];
gbar_lim = [];
for i=1:N
gbar_lim = [gbar_lim; g_lim];
end
[ng_r ng_c] = size(G);
% Weighting Matrix
Q = 1*eye(size(A));
R = 1;
A_hat = [];
B_hat = [];
for i=1:N-1
A_hat = daug(A_hat A);
B_hat = daug(B_hat B);
end
A_hat = [zeros(nn*N); A_hat zeros(n*(N-1)n)];
B_hat = [zeros(nm*N); B_hat zeros(n*(N-1)m)];
W_hat = inv(eye(n*N)-A_hat)*B_hat;
V0_hat = inv(eye(n*N)-A_hat)*[x0;zeros(n*(N-1)1)];
B_bar=[];
for i=1:N
B_bar = [B_bar A^(N-i)*B];
end
% Let‘s get stacked weighting matrix
[mn] = size(Q);
[pq] = size(R);
Q_hat = [];
R_hat = [];
for i=1:N
Q_hat = daug(Q_hat Q);
R_hat = daug(R_hat R);
end
% Let‘s get constraint matrix
G_bar = [];
for i=1:N
G_bar = daug(G_bar G);
end
W = W_hat‘*Q_hat*W_hat + R_hat;
W = (W+W‘)/2;
% Simulation starts !
t = [];
State = [];
U = [];
summed_cost = 0;
Summed_cost = [];
Cost_at_k = [];
x = x0;
R1=[];
R2=[];
for i=0:(tsim-1)
V0_hat = inv(eye(n*N)-A_hat)*[x;zeros(n*(N-1)1)];
V = 2*W_hat‘*Q_hat*V0_hat;
V0 = V0_hat‘*Q_hat*V0_hat;
%% Solve LMI
[XYr1r2opt_u] = rhc_lmi(xNABQRW_hatV0_hatQ_hatB_bar...
WVV0GG_barubar_limgbar_limu_limg_lim);
P = r2*inv(X);
if (i==0)
boundary0=[];
for th=0:0.01:2*pi
z = sqrt(r2)*inv(P^0.5)*[cos(th);sin(th)];
boundary0 = [boundary0 z];
end
elseif(i==1)
boundary1=[];
for th=0:0.01:2*pi
z = sqrt(r2)*inv(P^0.5)*[cos(th);sin(th)];
boundary1=[boundary1 z];
end
elseif(i==2)
boundary2=[];
for th=0:0.01:2*pi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3913 2007-03-28 18:06 rhc_lmi.m
文件 4914 2007-03-28 18:52 RHC.m
文件 63497 2007-03-29 10:46 example6.2.JPG
- 上一篇:matlab音频加回声
- 下一篇:ARIMA时间序列预测的matlab实现
相关资源
- 基于模型预测控制的车辆轨迹跟踪问
- 无人驾驶车辆模型预测控制Matlab代码
- MMC-HVDC模型预测控制
- 模型预测控制算法及仿真
- 线性定常系统和线性时变系统的模型
- 模型预测控制系统的Matlab设计和实施
- 模型预测控制MPC程序
- MATLAB环境下的MPC源代码
- 对于双输入双输出系统的模型预测控
- 无人驾驶车辆模型预测控制+程序.ra
-
传统两电平模型预测控制simuli
nk - 《无人驾驶车辆模型预测控制》matl
- 永磁同步电机模型预测控制仿真模型
- 无人驾驶车辆模型预测控制配套matl
- 模型预测控制程序
- 神经网络模型预测控制器
- matlab模型预测控制
- 三相逆变模型预测控制.rar
- 《无人驾驶车辆 模型预测控制》代码
- LQR路径跟踪.rar
- 《无人驾驶车辆模型预测控制》书中
- 无人驾驶车辆 模型预测控制陈慧妍源
- 模型预测控制MPC模型预测电流控制,
- 非线性模型预测控制算法程序
- 模型预测控制MPC程序代码
- 《无人驾驶车辆模型预测控制》书中
- 非线性模型预测控制的matlab参考代码
- 模型预测控制MPC+逻辑控制-matlab代码
- 模型预测控制及其MATLAB实现
- MPC 模型预测控制matlab仿真程序
评论
共有 条评论