├── README.md └── MFAILC.m /README.md: -------------------------------------------------------------------------------- 1 | # MFAILC 2 | model free adaptive iterative learning control 3 | 无模型自适应迭代学习控制的matlab仿真代码 4 | -------------------------------------------------------------------------------- /MFAILC.m: -------------------------------------------------------------------------------- 1 | % 期望轨迹 2 | for k = 1:1:500 3 | if k < 250 4 | yd(k+1) = 0.5*(-1).^(round(k/100)); 5 | else 6 | yd(k+1) = 0.5*sin((k*pi)/100) + 0.3*cos((k*pi)/50); 7 | end 8 | end 9 | 10 | % 参数设置 11 | epsilon = 0.01; % 拟伪偏导重置阈值 12 | eta = 1; % 拟伪偏导更新增益 13 | rho = 0.2; % 控制律增益 14 | lamda = 1; % 控制律步长 15 | mu = 2; % 拟伪偏导更新步长 16 | 17 | % 控制过程 18 | i_n = 60; %迭代次数 19 | y(1:i_n,1:500) = 0; 20 | for i = 1:1:i_n 21 | for k = 1:1:500 22 | if k == 1 23 | phi(i,k) = 0.4; % 初始拟伪偏导 24 | elseif k == 2 25 | phi(i,k) = phi(i,k-1) + (eta*(ub(i,k-1) - 0)/(mu + norm(ub(i,k-1) - 0)^2))*(y(i,k) - 0 - phi(i,k-1)*(ub(i,k-1) - 0)); 26 | else 27 | phi(i,k) = phi(i,k-1) + (eta*(ub(i,k-1) - ub(i,k-2))/(mu + norm(ub(i,k-1) - ub(i,k-2))^2))*(y(i,k) - y(i,k-1) - phi(i,k-1)*(ub(i,k-1) - ub(i,k-2))); 28 | end 29 | if i == 1 30 | uf(i,k) = 0; % 初始控制信号 31 | else 32 | uf(i,k) = uf(i-1,k) + 0.4*e(i-1,k+1); 33 | end 34 | if k == 1 35 | ub(i,k) = 0; % 初始控制信号 36 | else 37 | ub(i,k) = ub(i,k-1) + (rho*phi(i,k)/(lamda + norm(phi(i,k))^2))*(yd(k+1) - y(i,k)); 38 | end 39 | if k>2 && (phi(i,k) <= epsilon || (abs(ub(i,k-1) - ub(i,k-2)) <= epsilon)) 40 | phi(i,k) = phi(i,1); 41 | end 42 | u(i,k) = uf(i,k) + ub(i,k); 43 | % 系统函数 44 | if k < 250 45 | y(i,k+1) = y(i,k)*u(i,k)/(1 + norm(y(i,k))^2) + (u(i,k) + (1+*round(k/500))*sin(y(i,k)))^3; 46 | else 47 | y(i,k+1) = y(i,k)*u(i,k)^3/(1 + norm(y(i,k))^2) + u(i,k)^3; 48 | end 49 | e(i,k+1) = yd(k+1) - y(i,k+1); 50 | end 51 | end 52 | %误差 53 | for i =1:1:i_n 54 | e_min(i) = max(abs(e(i,:))); 55 | end 56 | 57 | figure(1) 58 | plot(yd,'r'); hold on; 59 | plot(y(i_n,:),'b'); title('µü´ú10´Î'); 60 | figure(2) 61 | plot(e_min);title('error of time k'); 62 | --------------------------------------------------------------------------------