版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
%粒子群算法求解旅行商问题%BylReijcloseall;clearall;PopSize=500;%种群大小CityNum=14;%城市数OldBestFitness=0;%旧的最优适应度值Iteration=0;%迭代次数MaxIteration=2000;%最大迭代次数IsStop=0;%程序停止标志Num=0;%取得相同适应度值的迭代次数c1=0.5;%认知系数c2=0.7;%社会学习系数w=0.96-Iteration/MaxIteration;%惯性系数,随迭代次数增加而递减%节点坐标node=[16.4796.10;16.4794.44;20.0992.54;22.3993.37;25.2397.24;...22.0096.05;20.4797.02;17.2096.29;16.3097.38;14.0598.12;...16.5397.38;21.5295.59;19.4197.13;20.0994.55];%初始化各粒子,即产生路径种群Group=ones(CityNum,PopSize);fori=1:PopSizeGroup(:,i)=randperm(CityNum)';endGroup=Arrange(Group);%初始化粒子速度(即交换序)Velocity=zeros(CityNum,PopSize);fori=1:PopSizeVelocity(:,i)=round(rand(1,CityNum)'*CityNum);%round取整end%计算每个城市之间的距离CityBetweenDistance=zeros(CityNum,CityNum);fori=1:CityNumforj=1:CityNumCityBetweenDistance(i,j)=sqrt((node(i,1)-node(j,1))^2+(node(i,2)-node(j,2))^2);endend%计算每条路径的距离fori=1:PopSizeEachPathDis(i)=PathDistance(Group(:,i)',CityBetweenDistance);endIndivdualBest=Group;%记录各粒子的个体极值点位置,即个体找到的最短路径IndivdualBestFitness=EachPathDis;%记录最佳适应度值,即个体找到的最短路径的长度[GlobalBestFitness,index]=min(EachPathDis);%找出全局最优值和相应序号%初始随机解figure;subplot(2,2,1);PathPlot(node,CityNum,index,IndivdualBest);title('随机解');%寻优while(IsStop==0)&(Iteration<MaxIteration)%迭代次数递增Iteration=Iteration+1;%更新全局极值点位置,这里指路径fori=1:PopSizeGlobalBest(:,i)=Group(:,index);end%求pij-xij,pgj-xij交换序,并以概率c1,c2的保留交换序pij_xij=GenerateChangeNums(Group,IndivdualBest);pij_xij=HoldByOdds(pij_xij,c1);pgj_xij=GenerateChangeNums(Group,GlobalBest);pgj_xij=HoldByOdds(pgj_xij,c2);%以概率w保留上一代交换序Velocity=HoldByOdds(Velocity,w);Group=PathExchange(Group,Velocity);%根据交换序进行路径交换Group=PathExchange(Group,pij_xij);Group=PathExchange(Group,pgj_xij);fori=1:PopSize%更新各路径总距离EachPathDis(i)=PathDistance(Group(:,i)',CityBetweenDistance);endIsChange=EachPathDis<IndivdualBestFitness;%更新后的距离优于更新前的,记录序号IndivdualBest(:,find(IsChange))=Group(:,find(IsChange));%更新个体最佳路径IndivdualBestFitness=IndivdualBestFitness.*(~IsChange)+EachPathDis.*IsChange;%更新个体最佳路径距离[GlobalBestFitness,index]=min(EachPathDis);%更新全局最佳路径,记录相应的序号ifGlobalBestFitness==OldBestFitness%比较更新前和更新后的适应度值;Num=Num+1;%相等时记录加一;elseOldBestFitness=GlobalBestFitness;%不相等时更新适应度值,并记录清零;Num=0;endifNum>=20%多次迭代的适应度值相近时程序停止IsStop=1;endBestFitness(Iteration)=GlobalBestFitness;%每一代的最优适应度end%最优解subplot(2,2,2);PathPlot(node,CityNum,index,IndivdualBest);title('优化解');%进化曲线subplot(2,2,3);plot((1:Iteration),BestFitness(1:Iteration));gridon;title('进化曲线');%最小路径值GlobalBestFitnessfunctionGroup=Arrange(Group)[xy]=size(Group);[NO1,index]=min(Group',[],2);%找到最小值1fori=1:ypop=Group(:,i);temp1=pop([1:index(i)-1]);temp2=pop([index(i):x]);Group(:,i)=[temp2'temp1']';endfunctionChangeNums=GenerateChangeNums(Group,BestVar);[xy]=size(Group);ChangeNums=zeros(x,y);fori=1:ypop=BestVar(:,i);%从BestVar取出一个顺序pop1=Group(:,i);%从粒子群中取出对应的顺序forj=1:x%从BestVar的顺序中取出一个序号NoFromBestVar=pop(j);fork=1:x%从对应的粒子顺序中取出一个序号NoFromGroup=pop1(k);if(NoFromBestVar==NoFromGroup)&&(j~=k)%两序号同且不在同一位置ChangeNums(j,i)=k;%交换子pop1(k)=pop1(j);pop1(j)=NoFromGroup;endendendendfunctionHold=HoldByOdds(Hold,Odds)[x,y]=size(Hold);fori=1:xforj=1:yifrand>OddsHold(i,j)=0;endendendfunctionSumDistance=PathDistance(path,CityBetweenDistance)L=length(path);%path为一个循环的节点顺序SumDistance=0;fori=1:L-1SumDistance=SumDistance+CityBetweenDistance(path(i),path(i+1));endSumDistance=SumDistance+CityBetweenDistance(path(1),path(L));%加上首尾节点的距离functionGroup=PathExchange(Group,Index)[xy]=size(Group);fori=1:ya=Index(:,i);%取出其中一组交换序pop=Group(:,i);%取出对应的粒子forj=1:x%取出其中一个交换算子作交换ifa(j)~=0pop1=pop(j);pop(j)=pop(a(j));pop(a(j))=pop1;endendGroup(:,i)=pop;endfunctionPathPlot(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026黑龙江大庆市林甸县招聘公益性岗位人员7人备考题库附答案详解(达标题)
- 2026江苏省人民医院神经内科医师助理岗位招聘2人备考题库附参考答案详解(夺分金卷)
- 2026神农集团服务部经理专项招聘备考题库带答案详解(a卷)
- 2026福建中医药大学高层次人才招聘71人备考题库含答案详解(突破训练)
- 某衡器厂设备报废处理办法
- 2026福建莆田市第一医院南日分院(秀屿区南日镇卫生院)第三轮编外人员招聘1人备考题库附参考答案详解ab卷
- 某模具厂模具车间管理方案
- 2026湖北事业单位联考松滋市招聘203人备考题库完整答案详解
- 2026江苏南京大学哲学学院博士后招聘备考题库1人备考题库及答案详解(基础+提升)
- 某轮胎厂轮胎气密性能测试办法
- 村卫生室安全管理制度
- 智能客户服务实务(第三版)课件 项目三 掌握客户服务沟通技巧
- 认知障碍患者进食问题评估及处理
- 肺癌术后并发症的护理
- 高三数学二轮复习计划的个性化调整
- 气瓶使用登记管理规定手册
- 模型思维(中文版)
- 协会办公室工作计划
- 大气课程设计:某燃煤采暖锅炉房烟气除尘系统设计
- 宠物医疗服务标准制定
- 喉阻塞病人护理PPT
评论
0/150
提交评论