700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【优化调度】基于matlab遗传算法求解公交车调度优化问题【含Matlab源码 040期】

【优化调度】基于matlab遗传算法求解公交车调度优化问题【含Matlab源码 040期】

时间:2024-01-02 19:20:36

相关推荐

【优化调度】基于matlab遗传算法求解公交车调度优化问题【含Matlab源码 040期】

一、遗传算法简介

1 引言

2 遗传算法理论

2.1 遗传算法的生物学基础

2.2 遗传算法的理论基础

2.3 遗传算法的基本概念

2.4 标准的遗传算法

2.5 遗传算法的特点

2.6 遗传算法的改进方向

3 遗传算法流程

4 关键参数说明

二、部分源代码

clear all;close all;clc;%变量初始化populationSize=80; %群体大小 generationSize=800;%进化代数codeLength=35; %编码长度children=zeros(populationSize,7); %存储子代分量及适应度pr=0.15; %复制概率 pm=0.1;%变异概率pc=0.60; %交叉概率E=round(rand(populationSize,codeLength)); %随机产生二进制串%主函数for k=1:1:generationSizefor s=1:1:populationSizex=E(s,:);temp=zeros(1,7);%临时保存子代各分量的十进制值%编码for i=1:35if i<=6temp(1)=temp(1)+x(i)*2^(i-1);elseif i>=7 && i<=13temp(2)=temp(2)+x(i)*2^(i-6-1);elseif i>=14 && i<=19temp(3)=temp(3)+x(i)*2^(i-13-1);elseif i>=20 && i<=25temp(4)=temp(4)+x(i)*2^(i-19-1);elseif i>=26 && i<=30temp(5)=temp(5)+x(i)*2^(i-25-1);elseif i>=31 && i<=35temp(6)=temp(6)+x(i)*2^(i-30-1);endendchildren(s,1)=round(60*temp(1)/(2^6-1));children(s,2)=round(70*temp(2)/(2^7-1));children(s,3)=round(60*temp(3)/(2^6-1));children(s,4)=round(50*temp(4)/(2^6-1));children(s,5)=round(20*temp(5)/(2^5-1));children(s,6)=round(30*temp(6)/(2^5-1));children(s,7)=round(children(s,1)+children(s,2)+children(s,3)+children(s,4)+children(s,5)+children(s,6));while children(s,1)+children(s,6)<60||children(s,1)+children(s,2)<70||children(s,2)+children(s,3)<60||...children(s,3)+children(s,4)<50||children(s,4)+children(s,5)<20||children(s,5)+children(s,6)<30E(s,:)=round(rand(1,codeLength));x=E(s,:);temp=zeros(1,7);for i=1:35if i<=6temp(1)=temp(1)+x(i)*2^(i-1);elseif i>=7 && i<=13temp(2)=temp(2)+x(i)*2^(i-6-1);elseif i>=14 && i<=19temp(3)=temp(3)+x(i)*2^(i-13-1);elseif i>=20 && i<=25temp(4)=temp(4)+x(i)*2^(i-19-1);elseif i>=26 && i<=30temp(5)=temp(5)+x(i)*2^(i-25-1);elseif i>=31 && i<=35temp(6)=temp(6)+x(i)*2^(i-30-1);endendchildren(s,1)=round(60*temp(1)/(2^6-1));children(s,2)=round(70*temp(2)/(2^7-1));children(s,3)=round(60*temp(3)/(2^6-1));children(s,4)=round(50*temp(4)/(2^6-1));children(s,5)=round(20*temp(5)/(2^5-1));children(s,6)=round(30*temp(6)/(2^5-1));children(s,7)=round(children(s,1)+children(s,2)+children(s,3)+children(s,4)+children(s,5)+children(s,6));endend% Step 1 : 确定适应度函数fitness=1./children(:,7); [orderFitness,indexFitness]=sort(fitness);%orderFitness按行从小到大排序的新矩阵,indexFitness元素位置构成的新矩阵 bestFitness=orderFitness(populationSize);%bestFitness=max(fitness)bestS=E(indexFitness(populationSize),:); %bestS 精英保留%Step 2 : 复制操作sumFitness=sum(fitness);fitnessSize=(orderFitness/sumFitness)*populationSize;fitnessSelect=floor(fitnessSize); %朝负无穷大方向取整 kk=1;for i=1:1:populationSizefor j=1:1:fitnessSelect(i) %Select and Reproduce TempE(kk,:)=E(indexFitness(i),:); kk=kk+1; %kk is used to reproduceendend%Step 3 : 交叉操作n=ceil(35*rand);%朝正无穷大方向取整for i=1:2:(populationSize-1)temp=rand;if pc>temp %Crossover Conditionfor j=n:1:35TempE(i,j)=E(i+1,j);TempE(i+1,j)=E(i,j);endendendTempE(populationSize,:)=bestS;E=TempE;%Step 4: 变异操作for i=1:1:populationSize%Mutation Conditionif TempE(i,j)==0TempE(i,j)=1;elseTempE(i,j)=0;endendendendTempE(populationSize,:)=bestS;E=TempE;disp(['第',num2str(k),'代:',num2str(children(populationSize,:))]);enddisp(['二进制编码:',num2str(bestS)]);disp(['最优选择:',num2str(children(populationSize,:))]);

三、运行结果

四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,.

[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,.

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