基于自适应交叉概率和变异概率遗传算法的地铁车辆使用寿命和璇修次数优化matlab仿真

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

5.完整程序


1.程序功能描述

基于自适应交叉概率和变异概率遗传算法的地铁车辆使用寿命和璇修次数优化。对比传统的遗传优化算法和自适应交叉概率和变异概率遗传算法对地铁车辆使用寿命和璇修次数的优化结果。

2.测试软件版本以及运行结果展示

MATLAB2022A/MATLAB2024B版本运行

3.核心程序

复制代码
....................................................
%%
while gen < MAXGEN;   
    %遗传算法选择交叉变异
    if gen <= 1
      Pe0 = 0.975;
      pe1 = 0.025; 
    else
      Pe0 = 1/(1+exp(-0.65*df));
      pe1 = 1-Pe0; 
    end

      FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,Pe0);   
      Selch=mut( Selch,pe1);   
      phen1=bs2rv(Selch,FieldD);   

      for a=1:1:NIND  
          Sh_{a}       = phen1(a,1:2*Cnums);
          Sd_{a}       = phen1(a,2*Cnums+1:4*Cnums);
          Qr_{a}       = phen1(a,4*Cnums+1:6*Cnums);
          D_{a}        = phen1(a,6*Cnums+1:8*Cnums);
          %计算对应的目标值
          [epls,Couts] = func_obj(Sh_{a},Sd_{a},Qr_{a},D_{a},Sdr,Sdp);
          E            = epls;
          JJ(a,1)      = E;
          JJc(a,1)     = Couts;
      end 
      
      Objvsel=(JJ);    
      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen=gen+1; 

      %保存参数收敛过程和误差收敛过程以及函数值拟合结论
      index1     = isnan(JJ);
      index2     = find(index1 == 1);
      JJ(index2) = [];
      Error2(gen) = min(JJ);
      [VV,II]=min(JJ);
      df = max(Objvsel) - mean(Objvsel);
end
%根据优化结果得到优化的参数数据获得优化后的待优化变量值
[VV,II] = min(JJ);
Lsh_opt = Sh_{II}(1:Cnums);
Rsh_opt = Sh_{II}(Cnums+1:2*Cnums);
Lsd_opt = Sd_{II}(1:Cnums);
Rsd_opt = Sd_{II}(Cnums+1:2*Cnums);
Lqr_opt = Qr_{II}(1:Cnums);
Rqr_opt = Qr_{II}(Cnums+1:2*Cnums);
LD_opt  = D_{II}(1:Cnums);
RD_opt  = D_{II}(Cnums+1:2*Cnums);
SM(mtkl)= min(JJ);
SM2(mtkl)= JJc(II);
end 
EL(timdx)  = R/Len*mean(SM)/NLc;
ELc(timdx) = mean(SM2);
end
%计算得到使用寿命
ELs(cl)    = 1e1*mean(EL);
%期望镟修次数
NELs(cl)   = round(5e3*mean(ELc)/NLc/Sdr);
end

subplot(312);
plot(ELs,'b-*');
grid on
ylabel('期望使用寿命');

subplot(313);
plot(NELs,'b-*');
grid on
ylabel('期望璇修次数');

save R22.mat ELs NELs

forcast;
16_074m

4.本算法原理

传统遗传算法中交叉概率和变异概率通常是固定的,而自适应遗传算法则根据种群中个体的适应度值动态调整这两个概率。在优化初期,为了广泛探索解空间,适应度较差的个体采用较高的交叉率和变异率,以增加新个体的产生和多样性;在接近最优解时,适应度较高的个体采用较低的变异率,以保护优良基因,同时也能进行局部精细搜索,避免错过最优解。这种自适应调整可以在全局搜索和局部搜索之间取得平衡,提高算法的优化效率和精度,避免早熟收敛。

自适应交叉率根据个体的适应度值进行调整。如果两个个体的适应度较差,则使用较高的交叉率增加探索范围;如果两个个体的适应度较好,则降低交叉率以保留优良个体。

变异率同样根据个体的适应度进行动态调整。适应度较差的个体采用较高的变异率,适应度较高的个体采用较低的变异率,以保护优秀基因。

一般情况下,当交叉概率的值较大的时候,那么种群中新的个体的诞生速度较快,从而使得种群具有多样性;而当交叉概率的值较小的时候,则种群中新的个体诞生的速度较慢。通过上面的分析可知,交叉概率和变异概率是影响遗传算法性能的主要因素。通过自适应调整的方式来获得交叉概率和变异概率从而保证种群中各个个体的多样性:

根据以上原理和步骤,以及各个个体染色体的基本情况,通过自适应调整的方式进行交叉概率以及变异概率的调整。其中,在遗传算法中,对交叉和变异方式的判断,其主要通过每个个体的染色体最大适应度值以及平均适应度的差值来计算.

5.完整程序

VVV

相关推荐
北漂老男孩17 分钟前
在 Linux 上安装 MATLAB:完整指南与疑难解决方案
linux·运维·matlab
tyatyatya3 小时前
神经网络在MATLAB中是如何实现的?
人工智能·神经网络·matlab
思茂信息4 小时前
CST软件对OPERA&CST软件联合仿真汽车无线充电站对人体的影响
c语言·开发语言·人工智能·matlab·汽车·软件构建
tyatyatya6 小时前
MATLAB 神经网络的系统案例介绍
开发语言·神经网络·matlab
tyatyatya6 小时前
MATLAB 自然语言处理入门教程
开发语言·matlab·自然语言处理
tyatyatya7 小时前
MATLAB的神经网络工具箱
开发语言·神经网络·matlab
t198751288 小时前
基于MATLAB-GUI图形界面的数字图像处理
人工智能·计算机视觉·matlab
Matlab仿真实验室1 天前
基于Matlab实现图像透明叠加程序
人工智能·计算机视觉·matlab
机器学习之心1 天前
贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现
支持向量机·matlab·transformer·多变量时间序列预测