m基于模糊控制与遗传优化的自适应ADRC双闭环控制策略matlab仿真

简介: m基于模糊控制与遗传优化的自适应ADRC双闭环控制策略matlab仿真

1.算法仿真效果
matlab2013b仿真结果如下:

35bb8f09b31fa729e8fd54d28c32084b_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
99e0ae39229f16d85106dfefa1c56d60_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
74885706ee44ba8fd9c83009602a808d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
48c33a4acfa7917d7b0de366f60bba4b_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
2220987928c6e3eb34b30e9c456204ae_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    遗传优化的优化迭代过程仿真图:

e60dfb2d90f38c1de64485372281c93f_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

这个是我们采用的优化算法的有过过程,通过优化,可以得到超调量最小的控制器仿真参数。

08146913ba256c5e61c5ad847c586c5d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
a9048ea2c637f30b5b568a68b0a5e25a_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
e0dad6bccfad85282e6a7de9e53c6393_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

   模糊控制的基本概念是由美国加州大学查德教授首先提出来的,模糊控制是以模糊语言变量、模糊集合论和模糊逻辑推理为基础的一种新型控制理论。模糊控制算法是一种非线性智能控制,它很适合于工业生产过程和大系统控制过程,并且其可以和神经网络、预测控制、遗传算法和混沌理论等新学科相结合。模糊控制器的基本原理图如图1所示。

63c4af23938c89ab8b0b2f3b2d0ecd31_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   图1虚线方框中的几个模块为模糊控制算法的几个主要步骤,其主要是由计算控制程序来实现的,具体操作流程如下所示:通过控制输出的反馈信息和参考信息进行做差计算,得到差作为控制算法的误差输入信号,这个误差输入信号作为模糊控制器的输入。同时,通过模糊化处理,将这个数值形态的误差信号转换为模糊语言的集合,并根据预先定义的模糊规则进行模糊聚餐,并得到模糊控制量,最后通过逆模糊化处理,将模糊控制量转换为实际的数值信息作为控制输出,并作用到控制对象上。 

   本系统所采用的模糊神经网络系统结构如图2所示,其中输入t表示本文所设计的控制器是针对炼焦炉烘炉过程高温段进行设计的。

22b168164be152da6dbb00bae40f805d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
25628205957ff89f4beeff050cc96e44_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

这里,我们最后其实主要要实现的改进结构如下所示:
d349d9a1624ef4c3c0632c5902826c1c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

1095479ce3fdea00f3f8761b14e6af4b_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
cd757ea509a1f237162ff30621a28dce_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

w2              = zeros(MAXGEN,1);
w3              = zeros(MAXGEN,1);
w4              = zeros(MAXGEN,1);
w5              = zeros(MAXGEN,1);
w6              = zeros(MAXGEN,1);
w7              = zeros(MAXGEN,1);
w8              = zeros(MAXGEN,1);
w9              = zeros(MAXGEN,1);
 
Error           = zeros(MAXGEN-2,1);
fitness         = zeros(MAXGEN-2,1);
gen             = 0;
 
 
for jj=1:1:NIND 
    %初始化参数,这个和parameter参数相同
    w1_NIND(jj)         = 0.8;      
    w2_NIND(jj)         = 0.01;
    w3_NIND(jj)         = 100;
    w4_NIND(jj)         = 65;  
    w5_NIND(jj)         = 80; 
    w6_NIND(jj)         = 100;      
    w7_NIND(jj)         = 10;
    w8_NIND(jj)         = 0.75;
    w9_NIND(jj)         = 0.05;  
 
    %计算对应的目标值
    parameter;
    sim('mains1.mdl');
    tmps    = object.signals.values;
    %计算最大超调值
    [V,I]   = max(tmps);
    tmps2   = mean(tmps(length(tmps)/2:length(tmps)));
    %计算超调量
    CTL     = (V-tmps2)/tmps2;
    %计算收敛速度
    SLX     = I/10000;
    
    J(jj,1) = (CTL);
end
Objv  = J;
gen   = 0; 
Error  = [];
Error2 = [];
LEN    = 32;
while gen < MAXGEN;   
      gen
      FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,0.95);   
      Selch=mut( Selch,0.05);   
      phen1=bs2rv(Selch,FieldD);   
      for jj=1:1:NIND  
          if  gen == 1
              %初始化参数,这个和parameter参数相同
              w1_NIND(jj)        = 2;      
              w2_NIND(jj)        = 0.01;
              w3_NIND(jj)        = 100;
              w4_NIND(jj)        = 65;  
              w5_NIND(jj)        = 80; 
              w6_NIND(jj)        = 100;      
              w7_NIND(jj)        = 10;
              w8_NIND(jj)        = 0.75;
              w9_NIND(jj)        = 0.05;   
          else   
              w1_NIND(jj)         = phen1(jj,1);       
              w2_NIND(jj)         = phen1(jj,2);  
              w3_NIND(jj)         = phen1(jj,3);  
              w4_NIND(jj)         = phen1(jj,4);   
              w5_NIND(jj)         = phen1(jj,5);  
              w6_NIND(jj)         = phen1(jj,6);      
              w7_NIND(jj)         = phen1(jj,7);  
              w8_NIND(jj)         = phen1(jj,8);  
              w9_NIND(jj)         = phen1(jj,9);    
          end
 
          %计算对应的目标值
          parameter;
          sim('mains1.mdl');
          tmps    = object.signals.values;
          %计算最大超调值
          [V,I]   = max(tmps);
          tmps2   = mean(tmps(length(tmps)/2:length(tmps)));
          %计算超调量
          CTL     = (V-tmps2)/tmps2;
          %计算收敛速度
          SLX     = I/10000;
          JJ(jj,1) = (CTL);
      end 
 
      Objvsel      = JJ;    
      [Chrom,Objv] = reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen          = gen+1; 
 
      %保存参数收敛过程和误差收敛过程以及函数值拟合结论
      w1(gen)      = mean(w1_NIND);
      w2(gen)      = mean(w2_NIND);
      w3(gen)      = mean(w3_NIND);
      w4(gen)      = mean(w4_NIND);
      w5(gen)      = mean(w5_NIND);
      w6(gen)      = mean(w6_NIND);
      w7(gen)      = mean(w7_NIND);
      w8(gen)      = mean(w8_NIND);
      w9(gen)      = mean(w9_NIND);     
      Error        = [Error,mean(JJ)];
      if gen <= LEN
         Error2  = [Error2,mean(Error(1:gen))];
      else
         Error2  = [Error2,mean(Error(gen-LEN+1:gen))];
      end      
end 
 
w1_best         = w1(end)      
w2_best         = w2(end)
w3_best         = w3(end)
w4_best         = w4(end) 
w5_best         = w5(end) 
w6_best         = w6(end)      
w7_best         = w7(end)
w8_best         = w8(end)
w9_best         = w9(end)
 
figure;
plot(Error2,'b-s');
xlabel('迭代次数');
ylabel('目标优化');
 
 
save R.mat w1_best w2_best w3_best w4_best w5_best w6_best w7_best w8_best w9_best Error2
相关文章
|
1天前
|
传感器 算法
基于无线传感器网络的MCKP-MMF算法matlab仿真
MCKP-MMF算法是一种启发式流量估计方法,用于寻找无线传感器网络的局部最优解。它从最小配置开始,逐步优化部分解,调整访问点的状态。算法处理访问点的动态影响半径,根据带宽需求调整,以避免拥塞。在MATLAB 2022a中进行了仿真,显示了访问点半径请求变化和代价函数随时间的演变。算法分两阶段:慢启动阶段识别瓶颈并重设半径,随后进入周期性调整阶段,追求最大最小公平性。
基于无线传感器网络的MCKP-MMF算法matlab仿真
|
4天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于Qlearning强化学习的小车弧线轨迹行驶控制matlab仿真
**MATLAB 2022a仿真实现Q-learning控制小车弧线行驶,展示学习过程及奖励变化。Q-learning是无模型强化学习算法,学习最优策略以稳定行驶。环境建模为二维平面,状态包括位置、朝向,动作涵盖转向、速度。奖励函数鼓励保持在轨迹上,用贝尔曼方程更新Q表。MATLAB代码动态显示轨迹及奖励随训练改善。**
30 15
|
4天前
|
机器学习/深度学习 算法 数据挖掘
基于改进K-means的网络数据聚类算法matlab仿真
**摘要:** K-means聚类算法分析,利用MATLAB2022a进行实现。算法基于最小化误差平方和,优点在于简单快速,适合大数据集,但易受初始值影响。文中探讨了该依赖性并通过实验展示了随机初始值对结果的敏感性。针对传统算法的局限,提出改进版解决孤点影响和K值选择问题。代码中遍历不同K值,计算距离代价,寻找最优聚类数。最终应用改进后的K-means进行聚类分析。
|
4天前
|
算法
六自由度Stewart平台的matlab模拟与仿真
**摘要** 探索MATLAB2022a模拟6-DOF Stewart平台,模拟动态变化及伺服角度。平台实现XYZ平移及绕XYZ轴旋转。结构含中心动平台、固定基座及6个伺服驱动的伸缩连杆。运动学原理涉及球铰/虎克铰的转动自由度。通过动力学分析解决输入力矩到平台加速度的转换。核心算法与模型揭示了平台的精密定位能力。仿真结果显示动态性能。
|
6天前
|
算法 数据安全/隐私保护
基于GA遗传优化算法的Okumura-Hata信道参数估计算法matlab仿真
在MATLAB 2022a中应用遗传算法进行无线通信优化,无水印仿真展示了算法性能。遗传算法源于Holland的理论,用于全局优化,常见于参数估计,如Okumura-Hata模型的传播损耗参数。该模型适用于150 MHz至1500 MHz的频段。算法流程包括选择、交叉、变异等步骤。MATLAB代码执行迭代,计算目标值,更新种群,并计算均方根误差(RMSE)以评估拟合质量。最终结果比较了优化前后的RMSE并显示了SNR估计值。
20 7
|
2天前
|
算法
基于粒子群优化的图像融合算法matlab仿真
这是一个基于粒子群优化(PSO)的图像融合算法,旨在将彩色模糊图像与清晰灰度图像融合成彩色清晰图像。在MATLAB2022a中测试,算法通过PSO求解最优融合权值参数,经过多次迭代更新粒子速度和位置,以优化融合效果。核心代码展示了PSO的迭代过程及融合策略。最终,使用加权平均法融合图像,其中权重由PSO计算得出。该算法体现了PSO在图像融合领域的高效性和融合质量。
|
3天前
|
传感器 算法 数据安全/隐私保护
基于鲸鱼优化的DSN弱栅栏覆盖算法matlab仿真
```markdown 探索MATLAB2022a中WOA与DSN弱栅栏覆盖的创新融合,模拟鲸鱼捕食策略解决传感器部署问题。算法结合“搜索”、“包围”、“泡沫网”策略,优化节点位置以最大化复杂环境下的区域覆盖。目标函数涉及能量效率、网络寿命、激活节点数、通信质量及覆盖率。覆盖评估基于覆盖半径比例,旨在最小化未覆盖区域。 ```
|
4天前
|
算法 5G 数据安全/隐私保护
基于MIMO系统的预编码matlab性能仿真
**摘要** 本文展示了在MATLAB2022a中运行的无水印预编码算法效果。核心程序采用详细中文注释,涉及MIMO系统中关键的MMSE和量化预编码技术。MMSE准则追求信号估计的准确性,通过利用信道状态信息优化发射,减少干扰,适合高容量需求;而量化准则结合格雷码量化,将连续信号映射至离散集合,简化硬件实现,适用于功耗敏感场景,但会引入量化误差。两者权衡了性能与实现复杂度。
|
4天前
|
机器学习/深度学习 算法 计算机视觉
通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法
摘要: 使用MATLAB2022a对比了二进制编码与实数编码的遗传优化算法,关注最优适应度、平均适应度及运算效率。二进制编码适用于离散问题,解表示为二进制串;实数编码适用于连续问题,直接搜索连续空间。两种编码在初始化、适应度评估、选择、交叉和变异步骤类似,但实数编码可能需更复杂策略避免局部最优。选择编码方式取决于问题特性。
|
2月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度

热门文章

最新文章