遗传算法matlab程序代码
遗传算法程序的源代码,自己做数模时候的资料,给大家分享了
function [R,Rlength]= GA_TSP(xyCity,dCity,Population,nPopulation,pCrossover,percent,pMutation,generation,nR,rr,rangeCity,rR,moffspring,record,pi,Shock,maxShock)
clear all
A=load('d.txt');
A
xyCity=[A(1,:);A(2,:)]; %x,y为各地点坐标
xyCity
figure(1)
grid on
hold on
scatter(xyCity(1,:),xyCity(2,:),'b+')
grid on
nCity=50;
nCity
for i=1:nCity %计算城市间距离
for j=1:nCity
dCity(i,j)=abs(xyCity(1,i)-xyCity(1,j))+abs(xyCity(2,i)-xyCity(2,j));
end
end %计算城市间距离
xyCity; %显示城市坐标
dCity %显示城市距离矩阵
%初始种群
k=input('取点操作结束'); %取点时对操作保护
disp('-------------------')
nPopulation=input('种群个体数量:'); %输入种群个体数量
if size(nPopulation,1)==0
nPopulation=50; %默认值
end
for i=1:nPopulation
Population(i,:)=randperm(nCity-1); %产生随机个体
end
Population %显示初始种群
pCrossover=input('交叉概率:'); %输入交叉概率
percent=input('交叉部分占整体的百分比:'); %输入交叉比率
pMutation=input('突变概率:'); %输入突变概率
nRemain=input('最优个体保留最大数量:');
pi(1)=input('选择操作最优个体被保护概率:');
%输入最优个体被保护概率
pi(2)=input('交叉操作最优个体被保护概率:');
pi(3)=input('突变操作最优个体被保护概率:');
maxShock=input('最大突变概率:');
if size(pCrossover,1)==0
遗传算法程序的源代码,自己做数模时候的资料,给大家分享了
pCrossover=0.85;
end
if size(percent,1)==0
percent=0.5;
end
if size(pMutation,1)==0
pMutation=0.05;
end
Shock=0;
rr=0;
Rlength=0;
counter1=0;
counter2=0;
R=zeros(1,nCity-1);
[newPopulation,R,Rlength,counter2,rr]=select(Population,nPopulation,nCity,dCity,Rlength,R,counter2,pi,nRemain);
R0=R;
record(1,:)=R;
rR(1)=Rlength;
Rlength0=Rlength;
generation=input('算法终止条件A.最多迭代次数:');
%输入算法终止条件
if size(generation,1)==0
generation=200;
end
nR=input('算法终止条件B.最短路径连续保持不变代数:');
if size(nR,1)==0
nR=10;
end
while counter1<generation&counter2<nR
if counter2<nR*1/5
Shock=0;
elseif counter2<nR*2/5
Shock=maxShock*1/4-pMutation;
elseif counter2<nR*3/5
Shock=maxShock*2/4-pMutation;
elseif counter2<nR*4/5
Shock=maxShock*3/4-pMutation;
else
Shock=maxShock-pMutation;
end
counter1
newPopulation
遗传算法程序的源代码,自己做数模时候的资料,给大家分享了
offspring=crossover(newPopulation,nCity,pCrossover,percent,nPopulation,rr,pi,nRemain); offspring
moffspring=Mutation(offspring,nCity,pMutation,nPopulation,rr,pi,nRemain,Shock);
[newPopulation,R,Rlength,counter2,rr]=select(moffspring,nPopulation,nCity,dCity,Rlength,R,counter2,pi,nRemain);
counter1=counter1+1;
rR(counter1+1)=Rlength;
record(counter1+1,:)=R;
end
R0;
Rlength0;
R;
Rlength;
minR=min(rR);
disp('最短路经出现代数:')
rr=find(rR==minR)
disp('最短路经:')
record(rr,:);
mR=record(rr(1,1),:)
disp('终止条件一:')
counter1
disp('终止条件二:')
counter2
disp('最短路经长度:')
minR
disp('最初路经长度:')
rR(1)
figure(2)
plotaiwa(xyCity,mR,nCity)
figure(3)
i=1:counter1+1;
plot(i,rR(i))
grid on
function
[newPopulation,R,Rlength,counter2,rr]=select(Population,nPopulation,nCity,dCity,Rlength,R,counter2,pi,nRemain)
Distance=zeros(nPopulation,1); %零化路径长度
Fitness=zeros(nPopulation,1); %零化适应概率
Sum=0; %路径长度
遗传算法程序的源代码,自己做数模时候的资料,给大家分享了
for i=1:nPopulation %计算个体路径长度
for j=1:nCity-2
Distance(i)=Distance(i)+dCity(Population(i,j),Population(i,j+1));
end %对路径长度调整,增加起始点到路径首尾点的距离
Distance(i)=Distance(i)+dCity(Population(i,1),nCity)+dCity(Population(i,nCity-1),nCity);
Sum=Sum+Distance(i); %累计总路径长度
end %计算个体路径长度
if Rlength==min(Distance)
counter2=counter2+1;
else
counter2=0;
end
Rlength=min(Distance); %更新最短路径长度
Rlength;
rr=find(Distance==Rlength);
R=Population(rr(1,1),:); %更新最短路径
for i=1:nPopulation
Fitness(i)=(max(Distance)-Distance(i)+0.001)/(nPopulation*(max(Distance)+0.001)-Sum);
适应概率=个体/总和。。。已作调整,大小作了调换
end
Fitness %显示适应概率
sFitness=zeros(nPopulation,1); %累积概率
sFitness(1)=Fitness(1);
for i=2:nPopulation
sFitness(i)=sFitness(i-1)+Fitness(i);
end
sFitness %显示累积概率
newPopulation=zeros(nPopulation,nCity-1); %零化新种群
for i=1:nPopulation %甩随机数
a=rand;
a %显示甩出的随机数
for j=1:nPopulation
if a<sFitness(j)
newPopulation(i,:)=Population(j,:);
break
end
end
end
for i=1:size(rr,1)
if rand<pi(1)&&i<=nRemain
newPopulation(rr(i,1),:)=Population(rr(i,1),:); %
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




