基于MATLAB的遗传算法的旅行商(TSP)问题求解
TSP问题:有一个推销员,要到n个城市推销商品,他要找出一个包含所有n个城市的具有最短路程的环路。
遗传算法的特点:
1遗传算法从问题解的中集开始嫂索,而不是从单个解开始。
2遗传算法求解时使用特定问题的信息极少,容易形成通用算法程序。
3遗传算法有极强的容错能力。
4遗传算法中的选择、交叉和变异都是随机操作,而不是确定的精确规则。
5遗传算法具有隐含的并行性。
function [Bestone,Length,Fitness]=GA_tsp_solving(distmatrix,Generations,err)
%distmatrix 是邻接矩阵
%Generations是限定的循环周期,超出周期循环结束
%err是适应度函数允许的误差,小于误差循环结束
[CityNumber CityNumber]=size(distmatrix);%根据邻接矩阵的维数得到城市数目
pop=Gen_Initial_Group(CityNumber); %生成原始的基因
Length=zeros(1,CityNumber); %初始化路径长度数组
Fitness=zeros(1,CityNumber); %初始化适应度数组
premax=0; %初始化先前的最优适应度
difference=inf; %初始化误差比较
period=0; %初始化循环的次数
%主程序
while(period<=Generations|difference>=err)%判断是否满足循环停止条件
for(i=1:CityNumber) %计算基因组的路径长度和适应度
[Length(i) Fitness(i)]=PathLenFit(pop(i,:),distmatrix);
end
maxfitness=max(Fitness); %保留此版本的基因的最佳适应度
difference=maxfitness-premax; %判断误差函数
premax=maxfitness; %更新premax作为下一次的判断标准
%找出最优的两个染色体
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余4页未读,立即下载