精华内容
下载资源
问答
  • 2021-06-29 09:51:37

    PFDL概念

    常用的MFAC动态线性化方法包含紧格式的MFAC控制方法(CFDL-MFAC)、偏格式的MFAC控制方法(PFDL-MFAC)和全格式的MFAC控制方法(FFDL-MFAC)。
    CFDL方法是把一般的离散时间非线性系统变换为包含一个纯量参数 的线性时变动态模型,仅考虑了下一时刻输出信号的变化量与当前时刻输入信号的变化量的关系,然而工业上许多系统在下一时刻输出信号的变化量不仅仅只与当前时刻输入信号的变化量有关,还可能与之前时刻的输入信号的变化量有关,如果按照CFDL方法把原来系统所有的复杂行为都压缩到纯量参数 中,那么 的行为就相当复杂。为了解决这个问题,这里介绍PFDL非线性系统动态时变线性化方法,它在线性化时可以把当前时刻的一个固定长度滑动时间窗口内的所有输入变化量对下一时刻输出变化量的影响都综合考虑进来。

    PFDL-MFAC动态线性化

    系统可用一般的SISO离散时间非线性自回归遍历模型表达如下:
    在这里插入图片描述
    在这里插入图片描述

    更多相关内容
  • MFAC代码。参考与百度文库wjzwly123, 希望对大家略有帮助。应用了北京交通大学侯忠生教授的无模型自适应控制
  • 能实现无模型自适应控制紧格式动态线性化的MATLAB仿真,对侯教授课本例4.1。
  • 本代码为紧格式无模型自适应控制的C代码实现,通过阶跃信号的跟踪,体现无模型自适应控制的跟踪性能、控制性能
  • 首先充分利用无模型自适应控制(MFAC)边建模、边控制的特点,推导基于二阶“泛模型”的改进无模型自适应控制方法,并推导伪偏导数及控制律的迭代公式,与基于一阶泛模型的MFAC方法相比,改进策略可以使每次迭代的泛...
  • 无模型自适应控制方法综述,金尚泰,侯忠生,对于复杂的对象来说我们很难得到其可用的数学模型,这就促使我们研究无模型自适应控制方法。该方法的主要特点是仅利用被控对象的
  • 紧格式MFAC,不需要数据模型,仅依赖输入输入数据。属于智能算法的一种
  • 另一个解决无模型自适应控制问题的Simulink模型,可以作为学习MFA的参考
  • 讲述无模型自适应控制理论,控制律如何设计,有推导,有公式
  • 针对一类更广泛的非仿射非线性离散系统, 提出一种改进的无模型自适应控制算法. 该算法基于非参数动态线性化方法, 运用观测器的思想, 实现带有扰动系统的实时动态线性化, 进而将无模型自适应控制方法的应用推广到更...
  • #资源达人分享计划#
  • 无模型自适应控制的现状与展望,无模型自适应控制的现状与展望
  • 针对一类离散时间非线性系统, 提出一种基于虚拟参考反馈整定的改进无模型自适应控制方案. 首先, 利用动态线性化方法给出非线性系统的紧格式动态线性化模型; 然后, 基于优化技术设计控制算法和伪偏导数估计算法; 最后...
  • 资源名:无模型自适应控制的matlab simulink模型,不依赖系统模型的控制方法 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者...
  • 基于无模型自适应控制的自动泊车系统,北京交通大学,研究了车位探测,路径追踪。对恒速泊车和变速泊车进行了仿真
  • 无模型自适应控制
  • 厌氧消化过程——循环迭代无模型自适应控制,赵永国,王浩平,针对厌氧消化过程难以建模、系统参数复杂等难点,提出了一种由稳定子控制与补偿子控制组成的且仅依赖系统输出的循环迭代模型自
  • 无模型非建模自适应控制器与PID调节器的性能比较分析与仿真研究
  • 无模型自适应控制的硕士论文,详细介绍了无模型自适应控制的原理与控制率和参数辨识的方法。
  • 针对传统的动态电压恢复器前馈控制方法存在稳态误差、对电网中的扰动不敏感等问题,提出了一种基于无模型自适应控制策略的动态电压恢复器系统的设计方案。该方案不需要建立动态电压恢复器系统的数学模型,仅根据受控...
  • 针对空冷型PEMFC发电系统温度控制所具有的非线性、时滞、慢时变等复杂特性,提出基于灰色预测的无模型自适应控制方法实现实时最优温度控制。该方法将灰色预测的结果代替发电系统当前工作温度测量值。实验结果表明:...
  • 基于MFAC无模型自适应控制的无人艇航向控制

    千次阅读 热门讨论 2021-08-25 11:11:28
    MFAC 算法基本原理是在每个工作点处,建立非线性系统等价的动态线性数据模型,利用受控系统的I/O数据在线估计系统的伪偏导数,然后设计加权一步向前的控制器,进而实现非线性系统数据驱动的无模型自适应控制。...

            MFAC 算法基本原理是在每个工作点处,建立非线性系统等价的动态线性数据模型,利用受控系统的I/O数据在线估计系统的伪偏导数,然后设计加权一步向前的控制器,进而实现非线性系统数据驱动的无模型自适应控制。MFAC 有三种不同动态线性化方法的算法设计,即基于紧格式动态线性化的无模型自适应控制(Compact Form Dynamic Linearization based MFAC,CFDL-MFAC),基于偏格式动态线性化的无模型自适应控制(Partial  Form  Dynamic  Linearization  based MFAC,PFDL-MFAC)以及基于全格式动态线性化的无模型自适应控制(Full  Form Dynamic Linearization based MFAC,FFDL-MFAC)。

           本文控制方法使用紧格式动态线性化的无模型自适应控制。

    参考文献:《无人艇重定义无模型自适应艏向控制方法与试验》

    控制律:

    控制原理:

     MATLAB 实现:

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 使用CFDL-MFAC(紧格式动态线性化方法)进行无人艇航向控制
    % 
    % 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    close all;
    clear;
    %% 算法参数设定
    %仿真时间步长
    ts=0.5;
    %非线性KT方程参数k,t,α
    Kit=0.701;
    Tit=0.332;
    afa=0.001;
    % Kit=0.18;
    % Tit=4.65;
    % afa=1.07;
    % Kit=2.36;
    % Tit=5.489;
    % afa=0.000094;
    
    %风浪流干扰参数
    Wn=0.958;
    yip=0.9;
    
    %风流浪干扰
    %浪干扰
    langrr=wgn(1,800,(0.1/0.1),'linear');
    
    %4级海况
    w0=0.808;                               %波浪频率
    tw=6;                               %波浪周期
    kw=0.255;                               %增益常数
    citam=0.527;                            %波浪强度系数
    yipp=0.3;                              %阻尼系数
    
    %MFAC算法参数设置
    nata=0.5;                %λ
    miu=1;                   %μ
    yita=0.1;                %η
    ru=1;                    %ρ
    Kz=8;                    %K1
    yipsl=0.0000001;         %ε
    
    PI=3.1415926;
    %% 参数初始化
    num=[kw 0];
    den=[1 (2*yipp*w0) (w0*w0)];
    hs=tf(num,den);
    
    tt=0.1:0.1:80;
    
    
    [langr,xr]=lsim(hs,langrr,tt);
    
    Y0 = [0;0];%初值
    t = 0.1:ts:80;
    t0=0;
    Y = cell(1,length(t));
    z = zeros(2,length(t));
    
    Y0_m=[0;0];   %参考模型
    Y_m = cell(1,length(t));
    z_m = zeros(2,length(t));
    kp=1;
    kd=1;
    % kp=0.98;
    % kd=0.95;
    ki=0.0;
    error_1=0;error_2=0;
    u_1=0;u_2=0;
    y_1=0;y_2=0;
    r_1=0;r_2=0;
    sf_1=0.1;
    
    %% 循环
    for k=1:200
    %     d=(langr(k,1)+0.5)*PI/180;
        d=0;
        time(k)=k*ts;
         M=0;
         if M==1
         rin(k)=30;
         fai_r=30;
         if time(k)>=20&&time(k)<40
             rin(k)=0;
             fai_r=0;
         else
             if time(k)>=40&&time(k)<60
                 rin(k)=30;
                 fai_r=30;
             else
                if time(k)>=60&&time(k)<80
                    rin(k)=0;
                    fai_r=0;
                end
             end
         end
         else
             rin(k)=PI/3;
             fai_r=PI/3;
         end
         
       Y_m{k}=rkfa_m( ts,t0,Y0_m,Wn,yip,fai_r);                                    %龙格库塔法解航向一阶非线性方程
       z_m(1,k) = Y_m{k}(1);                                                     %参考fai
       z_m(2,k) = Y_m{k}(2);
       yrout(k)=z_m(1,k);
    %    yr(1,k)=z_m(2,k);                                                       %参考r
    %    yr(2,k)=(yr(1,k)-dyr_1)/ts;                                             %参考r'
    %    u_m(k)=(Tit*yr(2,k)+yr(1,k)+afa*yr(1,k)*yr(1,k)*yr(1,k))/Kit;   
         
         
       Y{k}=rkfa_GR( ts,t0,Y0,Kit,Tit,u_1,afa,d);                                    %龙格库塔法解航向一阶非线性方程
       z(1,k) = Y{k}(1);                                                        %fai
       z(2,k) = Y{k}(2);                                                        %r
       yout(k)=z(1,k);
       r(k)=z(2,k);
       error(k)=rin(k)-z(1,k);
       
       M2=1;                   %0:PD控制 1:MFAC控制
       if M2==0
       %PD控制部分
       z_error(k)=yrout(k)-z(1,k);
       m=1;
       if m==1
       %位置式pid
       u(k)=kp*error(k)+kd*(error(k)-error_1)/ts;
       else
       %增量式pid
       xc(1)=error(k)-error_1;             %Calculating P
       xc(2)=error(k)-2*error_1+error_2;   %Calculating D
       xc(3)=error(k);                     %Calculating I
       du(k)=kp*xc(1)+kd*xc(2)/ts+ki*xc(3)*ts;
       if du(k)>PI/6
       du(k)=PI/6;
        end   
        if du(k)<-PI/6
           du(k)=-PI/6;
        end  
       u(k)=u_1+du(k);
       end
    
       else
    %MFAC方法
    
      sf(k)=sf_1+((yita*(u_1-u_2))*((yout(k)-y_1+(Kz*r(k)-(Kz*r_1)))-(sf_1*(u_1-u_2))))/(miu+(u_1-u_2)*(u_1-u_2));
      if ((abs(sf(k))<yipsl)||(abs(u_1-u_2)<yipsl))
          sf(k)=sf_1;
      end
      u(k)=u_1+((ru*sf(k))*(rin(k)-(yout(k)+Kz*r(k))))/(nata+(sf(k)*sf(k)));
      sf_2=sf_1;sf_1=sf(k);
       end  
      
       if u(k)>PI/6
       u(k)=PI/6;
        end   
        if u(k)<-PI/6
           u(k)=-PI/6;
        end
        
    
         %舵速控制
    %     if (((u(k)-u_1)/ts)>10)
    %         u(k)=10*ts+u_1;
    %     else
    %         if(((u(k)-u_1)/ts)<-10)
    %             u(k)=-10*ts+u_1;
    %         end
    %     end
    error_2=error_1;
    error_1=error(k);
    u_2=u_1;u_1=u(k);
    y_2=y_1;y_1=yout(k);
    r_2=r_1;r_1=r(k);
    
    Y0=Y{k};
    z_1=z(2,k);
       Y0_m=Y_m{k};
    end
    
    %% 结果可视化
    kk=1:199;
    figure;   
    plot(kk*ts,yout(1:199)*180/PI,'r-',kk*ts,rin(1:199)*180/PI,'--');
    title('船舶实际航向与设定航向');
    xlabel('时间 \fontname{Times New Roman}t/s');
    legend('实际航向','设定航向') 
    ylabel('角度 \fontname{Times New Roman}/° ');
    
    figure;   
    plot(kk*ts,u(1:199)*180/PI,'r-');
    title('舵角');
    xlabel('时间 \fontname{Times New Roman}t/s');
    ylabel('角度 \fontname{Times New Roman}/° ');
    
    
    figure
    plot(kk*ts,error(1:199)*180/PI,'r');
    title('航向误差');
    xlabel('时间 \fontname{Times New Roman}t/s');
    ylabel('角度 \fontname{Times New Roman}/° ');
    
    % figure
    % plot(kk*ts,rin(1:199),'--',kk*ts,yrout(1:199),'b',kk*ts,yout(1:199),'r-',kk*ts,u(1:199),'g');
    % title('船舶航向角与舵角');
    % axis([0 80 -20 40])
    % xlabel('时间 \fontname{Times New Roman}t/s');
    % legend('设定航向角','参考航向角','实际航向角','实际舵角')
    % ylabel('角度 \fontname{Times New Roman}/° ');
    

     

    function Y = rkfa_GR( h,t0,Y0,K,T,u,alfa,d )
    k1 = fai_GR(t0,Y0,K,T,u,alfa,d);
    k2 = fai_GR(t0+h/2,Y0+h/2*k1,K,T,u,alfa,d);
    k3 = fai_GR(t0+h/2,Y0+h/2*k2,K,T,u,alfa,d);
    k4 = fai_GR(t0+h,Y0+h*k3,K,T,u,alfa,d);
    Y = Y0+h*(k1+2*k2+2*k3+k4)/6;
    end
    

     

    function Y = fai_GR( ~,Y0,K,T,u,alfa,d )
    % 此处Y0为一个列向量,因为时间t未显含在一阶方程组中
    % 所以ode函数的第一个参数为空,要根据具体情况而定。
    Y = [Y0(2);
        (K*(u+d)-Y0(2)-alfa*(Y0(2))^3)/T;];
    end
    

     仿真结果分析:

    PID:

     MFAC:

     PID参数手动调优的效果比MFAC的最优效果要好。

    当加上干扰后:

    PID:

     MFAC:

     加上干扰后,PID在稳定后依然有误差,且无法真正稳定,MFAC则不需要调整参数也能保证优秀的控制效果。

    但是MFAC在调整时间上始终比PID控制慢,需要进一步研究解决。

     

     

     

     

    展开全文
  • 基于matlab无模型自适应控制的matlab simulink模型不依赖系统模型的控制方法.rar
  • 将跟踪微分器加入到无模型自适应控制器中,结合跟踪微分器与无模型自适应控制器的优点,设计出一种适合于诸如非线性、时滞、时变、强耦合等复杂系统的控制器。该控制器利用跟踪微分器安排过渡过程,实现了对强干扰、...
  • 利用无模型自适应控制(Model-free adaptive control,MFAC)方法仅需要被控对象输入和输出数据,而不需要其他任何信息的优点。针对工业生产过程中普遍存在的大时间滞后的特点,提出针对未知模型的大时滞对象的无模型...
  • 为了解决参数的不确定性和时滞性对电液力控伺服系统的影响,本文设计了一种无模型自适应控制器。利用Simulink/Amesim对该电液力控伺服系统进行了联合仿真研究;并通过半实物仿真软件DSPACE验证控制方案的正确性、...
  • 无模型自适应控制的matlab simulink模型,不依赖系统模型的控制方法.rar
  • 针对一类噪声方差未知的随机系统,基于不同加权因子设计多个参数辨识器辨识模型参数,在此基础上,构成多模型自适应控制器. 在每个采样时刻基于指标切换函数选择最佳辨识模型,并将基于此最佳模型设计的控制器切换为当前...
  • 基于坐标补偿的自动泊车系统无模型自适应控制
  • 这是我写的自适应控制仿真程序,欢迎大家交流学习,自适应控制simulink仿真

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,125
精华内容 19,250
关键字:

无模型自适应控制

友情链接: ofo.rar