首页 > 其他分享 >基于GA遗传优化的列车交路方案matlab仿真

基于GA遗传优化的列车交路方案matlab仿真

时间:2023-04-20 23:23:38浏览次数:39  
标签:交路 变异 pop 个体 适应度 matlab GA 最优

1.算法描述

        列车交路是指列车在规定的运行线路上往返运行的方式,规定了列车运行区段、折返车站以及按不同交路运行的列车对数.

 

       机车交路并不是完全意义的指标或标准,但在运输体系中是一个体现模式作用对运输组织工作重要的技术经济课题。对于新建铁路或进行技术改造的既有线路,选择优化的机车交路方案,不但可以使整个设计方案更加合理,节省投资,而且能够在以后的运营中获得更好的运输效益。

 

       对于既有线路,正在进行机务生产力布局调整,而机务生产力布局调整的基础是经过优化的机车交路。我国铁路的机车交路是从蒸汽机车的短小交路延续过来的,在过去的年代里,由于交路短小,机务段布局过密,不但浪费了资源,制约了运输效率的提高,而且还将制约现代化技术装备优势的发挥。我们主张推行机车长交路,是基于优化机车交路布局有利于提高运输效率,优化运输设备布局,为推进铁路发展创造条件。优化机车交路布局是一项复杂的工作,它需要综合路网结构、编组站的分布和分工、线路纵断面、行车组织的特点、技术装备的水平和基础设备的技术条件等多种因素,运用现代化的管理理念精心进行编制。

 

       遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。

 

       其主要步骤如下:

 

1.初始化

 

       选择一个群体,即选择一个串或个体的集合bi,i=1,2,...n。这个初始的群体也就是问题假设解的集合。一般取n=30-160。

 

       通常以随机方法产生串或个体的集合bi,i=1,2,...n。问题的最优解将通过这些初始假设解进化而求出。

 

2.选择

 

      根据适者生存原则选择下一代的个体。在选择时,以适应度为选择原则。适应度准则体现了适者生存,不适应者淘汰的自然法则。

 

给出目标函数f,则f(bi)称为个体bi的适应度。以

 

为选中bi为下一代个体的次数。

 

显然.从式(3—86)可知:

 

(1)适应度较高的个体,繁殖下一代的数目较多。

 

(2)适应度较小的个体,繁殖下一代的数目较少;甚至被淘汰。

 

这样,就产生了对环境适应能力较强的后代。对于问题求解角度来讲,就是选择出和最优解较接近的中间解。

 

3.交叉

 

       对于选中用于繁殖下一代的个体,随机地选择两个个体的相同位置,按交叉概率P。在选中的位置实行交换。这个过程反映了随机信息交换;目的在于产生新的基因组合,也即产生新的个体。交叉时,可实行单点交叉或多点交叉。

 

4.变异

 

       根据生物遗传中基因变异的原理,以变异概率Pm对某些个体的某些位执行变异。在变异时,对执行变异的串的对应位求反,即把1变为0,把0变为1。变异概率Pm与生物变异极小的情况一致,所以,Pm的取值较小,一般取0.01-0.2。

 

例如有个体S=101011。

 

对其的第1,4位置的基因进行变异,则有

 

S'=001111

 

        单靠变异不能在求解中得到好处。但是,它能保证算法过程不会产生无法进化的单一群体。因为在所有的个体一样时,交叉是无法产生新的个体的,这时只能靠变异产生新的个体。也就是说,变异增加了全局优化的特质。

 

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

3.MATLAB核心程序

 

%初始化种群
pop=m_InitPop(NUMPOP,irange_l,irange_r);
pop_save=pop;
fitness_concat = [];
best_solution = [];
%开始迭代
for time=1:ITERATION
    time
    
    %计算初始种群的适应度
    fitness=m_Fitness(pop, OD, h);
    fitness_concat = [fitness_concat;max(fitness)];
    pop_T = pop';
    [m,index] = max(m_Fitness(pop, OD, h));
   best_solution = [best_solution;pop(:,index)'];
    %选择
    pop=m_Select(fitness,pop,SELECTRATE);
    %编码
    binpop=m_Coding(pop,LENGTH,irange_l);
    %交叉
    kidsPop = crossover(binpop,NUMPOP,CROSSOVERRATE);
    %变异
    kidsPop = Variation(kidsPop,VARIATIONRATE);
    %解码
    kidsPop=m_Incoding(kidsPop,irange_l);
    %更新种群
    pop=[pop kidsPop];
end
 
disp(['最优解:' num2str(min(m_Fx(pop,OD))) '分钟']);
disp(['最优解对应的各参数:' num2str(pop(1,1)) ',' num2str(pop(2,1)) ',' num2str(pop(3,1)) ',' num2str(pop(4,1)) ]);
disp(['最大适应度:' num2str(max(m_Fitness(pop, OD, h)))]);   
    
figure
plot(1:ITERATION, smooth(fitness_concat,64), 'b','linewidth',2)
title('最优适应度值');
xlabel('进化代数');
ylabel('最优适应度');
 
 
figure
subplot(221)
plot(1 : ITERATION, smooth(best_solution(:,1),64),'linewidth',2)
xlabel('进化代数');
ylabel('参数各代最优值');
title('大小交路折返站');
 
 
subplot(222)
plot(1 : ITERATION, smooth(best_solution(:,2),64),'linewidth',2)
xlabel('进化代数');
ylabel('参数各代最优值');
title('大小交路折返站');
 
 
subplot(223)
plot(1 : ITERATION, smooth(best_solution(:,3),64),'linewidth',2)
xlabel('进化代数');
ylabel('参数各代最优值');
title('大交路发车频率');
 
subplot(224)
plot(1 : ITERATION, smooth(best_solution(:,4),64),'linewidth',2)
xlabel('进化代数');
ylabel('参数各代最优值');
title('小交路发车频率');

 

  

 

标签:交路,变异,pop,个体,适应度,matlab,GA,最优
From: https://www.cnblogs.com/51matlab/p/17338737.html

相关文章

  • m通过手动提取图像特征点实现医学图像配准和拼接matlab仿真
    1.算法描述       图像配准(imageregistration)是对同一场景在不同条件下得到的两幅或多幅图像进行对准、叠加的过程。同一场景的多幅图像会在分辨率、成像模式、灰度属性、位置(平移和旋转)、比例尺度、非线性变形及曝光时间等方面存在很多差异。概括来说,图像配准问题是以在......
  • opengauss高可用之远程访问、建库建用户
    一、概述先配置远程访问,再配置keepalived,是因为keepalived脚本检测opengauss重启不存活就会挂掉二、配置远程访问gs_gucset-Iall-Nall-c"listen_addresses='0.0.0.0'"gs_gucset-Iall-Nall-h"hostallall0.0.0.0/0sha256"gs_om-trestart#第一条配置是为了后续......
  • opengauss高可用之keepalived配置
    一、安装keepalivedyuminstall-ykernel-devel(安装kernerl-devel,目的是给keepalived提供和LVS搭配使用)yuminstall-yopenssl-devel(HTTPS服务的时候要用到此模块)yuminstallgccgcc-c++make-y(提供编译工具)tar-xfkeepalived-2.0.12.tar.gz-C/usr/local/src/c......
  • 龙芯(Loongarch64),在Linux虚拟一个龙芯OS体验下
    前言想体验下龙芯OS,但是又没有龙芯开发板或者龙芯实体机。手头上只有一个X64环境的Linux发行版,应该怎么做呢?概括其实非常简单,可以通过Chroot命令和Qemu在X64的指令集系统上模拟龙芯OS,然后虚拟出一个龙芯的系统,简单的体验下。具体如下:1.首先下载一个CLFS的Lonngarch64System......
  • 【RDH隐藏】基于减少直方图移位中像素的无效移位的可逆数据隐藏附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • opengauss Need repair修复
     问题描述:opengauss集群在做切换的时候,或者增删节点的时候,很容易发生节点repair,找不到主库的情况,这种情况需要把主库使用primary角色启动,然后build重建从库,就可以恢复集群 1.集群状态[omm@db01~]$gs_om-tstatus--detail[CMServerState]node......
  • 每个节点上的cadvisor采集数据后通过aggregate api将转换交给 metric-server
    metric-server主要用来通过aggregateapi向其它组件(kube-scheduler、HorizontalPodAutoscaler、Kubernetes集群客户端等)提供集群中的pod和node的cpu和memory的监控指标,弹性伸缩中的podautoscaler就是通过调用这个接口来查看pod的当前资源使用量来进行pod的扩缩容的。需要注意的是......
  • java.lang.IllegalArgumentException: Illegal group reference
    评:在使用String的replaceFirst(regex,replacement)的时候出现java.lang.IllegalArgumentException:Illegalgroup原因是第一个参数支持正则表达式,replacement中出现“$”,会按照$1$2的分组模式进行匹配,当编译器发现“$”后跟的不是整数的时候,就会抛出“非法的组引用”的异常......
  • 再获殊荣!华为云GaussDB喜提“科技进步一等奖”
    摘要:近日,中国电子学会科学技术奖励大会颁发了2021-2022年度中国电子学会科学技术奖获奖项目,华为云主导的“GaussDB智能云原生分布式数据库”项目荣获“科技进步一等奖”。本文分享自华为云社区《再获殊荣!华为云GaussDB喜提“科技进步一等奖”》,作者:GaussDB数据库。近日,中国电......
  • CDGA|浅谈“以治促用,以用促治”的数据治理战略
    数据治理夯实企业数字化转型基础。采取“以治促用,以用促治”的数据治理战略,可以充分释放了企业核心运行要素的活力。“以治促用”是指通过建立在数据治理链路及用户多维评估系统的基础上,对数据资产重新进行价值识别,推进高价值数据资产应用和中低价值资产的优化,从而提高数据资产的可......