【优化求解】基于遗传算法求解列车交路方案matlab代码

本文介绍了城市轨道交通中多交路列车开行方案的重要性,针对高峰期大客流问题,传统单一交路模式存在的不足。通过遗传算法进行优化,以随机生成的OD矩阵为基础,设定遗传参数,通过初始化种群、计算适应度、选择、交叉和变异等步骤进行迭代优化。最终,展示了最优解及其参数变化,并通过仿真结果验证了优化效果。
摘要由CSDN通过智能技术生成

1 简介

列车开行方案是城轨系统正常运行的基础,可有效保障路网整体运输效率及城轨系统的服务水平。随着城市轨道交通的快速发展,客流分布呈现出多样性、复杂性和时变性等特征,客流需求与运输能力的矛盾亦愈加显著,为运输组织带来了巨大挑战。常见的列车开行模式为单一交路运营模式,一般以客流 OD 数据为基础,进而确定轨道交通的分时段断面客流量[1],设定线路的运输能力高于最大断面客流量,后固定列车的发车频率及编组配置。但对于高峰期大客流车站的客流运送与疏解,单一交路开行方案显然存在一定弊端: 若在高峰期缩短发车间隔,实行较大开行密度以缓解拥堵,易导致高峰期高客流区间与低客流区间满载率分布不均、运能浪费的现象; 若开行密度过小,则不能满足通勤者的出行需求。在此背景下,多交路的列车开行方案应运而生,给城市轨道交通运输组织模式带来新的思考。

2 部分代码

clear;clc;close all;

%% 生成随机OD矩阵

%od()

%%遗传参数设置

NUMPOP=200;%初始种群大小

irange_l=1; %问题解区间

irange_r=35; 

LENGTH=24; %二进制编码长度

ITERATION = 10000;%迭代次数

CROSSOVERRATE = 0.8;%杂交率

SELECTRATE = 0.4;%选择率

VARIATIONRATE = 0.2;%变异率

OD = xlsread('OD.xlsx');% 苏州地铁2号线调查问卷OD出行矩阵

h = xlsread('区间运行时间.xlsx'); % 苏州地铁2号线区间长度及运行时分

%初始化种群

pop=m_InitPop(NUMPOP,irange_l,irange_r);

pop_save=pop;

fitness_concat = [];

best_solution = [];

%开始迭代

for time=1:ITERATION

    %计算初始种群的适应度

    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

% set(gca,'looseInset',[0 0 0 0]);

set(gcf,'outerposition',get(0,'screensize'));

loglog(1:ITERATION, fitness_concat, 'Blue*-','linewidth',2)

legend('{\bf最优适应度值}');

xlabel('{\bf进化代数}','fontsize',30);

ylabel('{\bf最优适应度}','fontsize',30);

set(gca,'FontSize',20,'Fontname', 'Times New Roman');

set(get(gca,'XLabel'),'Fontsize',20,'Fontname', '宋体');

set(get(gca,'YLabel'),'Fontsize',20,'Fontname', '宋体');

set(get(gca,'legend'),'Fontsize',20,'Fontname', '宋体');

set(get(gca,'title'),'Fontsize',20,'Fontname', '宋体');

set(gca,'linewidth',2); 

print(gcf,'-dpng','-r300','最优适应度值-进化代数');

figure

% set(gca,'looseInset',[0 0 0 0]);

set(gcf,'outerposition',get(0,'screensize'));

semilogx(1 : ITERATION, best_solution,'linewidth',4)

legend('{\bf大小交路折返站a}','{\bf大小交路折返站b}','{\bf大交路发车频率f_1}','{\bf小交路发车频率f_2}');

% text(6, 0.3, '$\leftarrow  y= 2^{-x}$', 'HorizontalAlignment', 'left', 'Interpreter', 'latex', 'FontSize', 15);

xlabel('{\bf进化代数}','fontsize',15);

ylabel('{\bf参数各代最优值}','fontsize',15);

set(gca,'FontSize',20,'Fontname', 'Times New Roman');

set(get(gca,'XLabel'),'Fontsize',20,'Fontname', '宋体');

set(get(gca,'YLabel'),'Fontsize',20,'Fontname', '宋体');

set(get(gca,'legend'),'Fontsize',20,'Fontname', '宋体');

set(get(gca,'title'),'Fontsize',20,'Fontname', '宋体');

set(gca,'linewidth',2); 

print(gcf,'-dpng','-r300','参数各代最优值-进化代数');

3 仿真结果

4 参考文献

[1]周琛琛. 基于Matlab遗传算法工具箱的函数优化问题求解[J]. 现代计算机:上下旬, 2006(12):84-84.​

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值