基于自适应交叉概率和变异概率遗传算法的地铁车辆使用寿命和璇修次数优化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

相关推荐
yugi9878389 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
IT猿手17 小时前
基于强化学习的多算子差分进化路径规划算法QSMODE的机器人路径规划问题研究,提供MATLAB代码
算法·matlab·机器人
fie888921 小时前
基于MATLAB的转子动力学建模与仿真实现(含碰摩、不平衡激励)
开发语言·算法·matlab
机器学习之心1 天前
基于GRU门控循环单元的轴承剩余寿命预测MATLAB实现
深度学习·matlab·gru·轴承剩余寿命预测
简简单单做算法1 天前
基于FFT粗估计和LS最小二乘法精估计的正弦信号参数估计和检测matlab仿真
matlab·最小二乘法·参数估计·fft粗估计·ls最小二乘法
kaikaile19951 天前
基于MATLAB的滑动轴承弹流润滑仿真程序实现
开发语言·matlab
Not Dr.Wang4221 天前
FIR数字滤波器设计的两种实现
matlab
3GPP仿真实验室1 天前
【MATLAB源码】CORDIC-QR :基于Cordic硬件级矩阵QR分解
开发语言·matlab·矩阵
民乐团扒谱机2 天前
【微实验】机器学习之集成学习 GBDT和XGBoost 附 matlab仿真代码 复制即可运行
人工智能·机器学习·matlab·集成学习·xgboost·gbdt·梯度提升树
Evand J2 天前
TDOA(到达时间差)的GDOP和CRLB计算的MATLAB例程,论文复现,附参考文献。GDOP:几何精度因子&CRLB:克拉美罗下界
开发语言·matlab·tdoa·crlb·gdop