200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【优化求解】基于matlab遗传算法求解列车交路方案优化问题【含Matlab源码 1361期】

【优化求解】基于matlab遗传算法求解列车交路方案优化问题【含Matlab源码 1361期】

时间:2023-08-27 15:29:06

相关推荐

【优化求解】基于matlab遗传算法求解列车交路方案优化问题【含Matlab源码 1361期】

一、遗传算法简介

1 引言

2 遗传算法理论

2.1 遗传算法的生物学基础

2.2 遗传算法的理论基础

2.3 遗传算法的基本概念

2.4 标准的遗传算法

2.5 遗传算法的特点

2.6 遗传算法的改进方向

3 遗传算法流程

4 关键参数说明

二、部分源代码

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];endMu = 26;sigma = 10;N = round(normrnd(Mu, sigma, [35 35]));N = N + abs(min(N));sum(sum(N))if sum(sum(N)) > 35000 ;if sum(sum(N)) < 40000;xlswrite('test.xlsx',N,'Sheet1')endendfunction fitness=m_Fitness(pop, OD, h)%% Fitness Functionfor n=1:size(pop,2)a = pop(1,n);b = pop(2,n);f1 = pop(3,n);f2 = pop(4,n);%% 约束条件,不满足约束则适应度值无穷小 %% 1) a,b,f1,f2 不能为0if a == 0 || b == 0 || f1 == 0 || f2 == 0fitness(n) = 1/1000000000;continue;end%% 2) a,b,f1,f2 不能超过35if a > 35 || b > 35 || f1 >35 || f2 >35 fitness(n) = 1/1000000000;continue;end%% 3) 列车数量约束if (sum(h) * 120 + 1170) *( f1 - 16) + (sum(h(a: b-1)) + (b - a + 1) * 30 + 120) * f2 > 0fitness(n) = 1/1000000000;continue;end%% 4) 满载率约束 %constraint2 = [];%for j = 2:33% constraint2(j) = (sum(sum(OD(1:j, j+1:35)))/(f1+f2)) * (sum(sum(OD(j+1:35,1:j)))/(f1+f2));%end%if max(constraint2) > 1 * 1460% fitness(n) = 1/1000000000;% continue;%end%% 5) 最小追踪间隔if f1 + f2 > 30fitness(n) = 1/1000000000;continue;end %% 5) 最小发车间隔 if f1 < 12fitness(n) = 1/1000000000;continue;end%% 主要适应度函数,设置为目标函数的倒数,即目标函数要求最小,那么越小,适应度就越大 fitness(n)= 1/m_Fx(pop(:,n), OD);endfunction y=m_Fx(x, OD)%% 要求解的函数%% Z = Q1 * t1d + Q2 * t2dy = (sum(sum(OD)) - sum(sum(OD(x(1):x(2),x(1):x(2))))) * (30/x(3)) + sum(sum(OD(x(1):x(2),x(1):x(2)))) * (30/(x(3)+x(4)));end

三、运行结果

四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。