大家好,今天给各位分享遗传算法tsp的一些知识,其中也会对遗传算法解决TSP问题进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
遗传算法在很多领域都得到应用;从神经网络研究的角度上考虑,最关心的是遗传算法在神经网络的应用。在遗传算法应用中,应先明确其特点和关键问题,才能对这种算法深入了解,灵活应用,以及进一步研究开发。
1.遗传算法从问题解的中集开始嫂索,而不是从单个解开始。
这是遗传算法与传统优化算法的极大区别。传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。遗传算法从串集开始搜索,复盖面大,利于全局择优。
2.遗传算法求解时使用特定问题的信息极少,容易形成通用算法程序。
由于遗传算法使用适应值这一信息进行搜索,并不需要问题导数等与问题直接相关的信息。遗传算法只需适应值和串编码等通用信息,故几乎可处理任何问题。
遗传算法的初始串集本身就带有大量与最优解甚远的信息;通过选择、交叉、变异操作能迅速排除与最优解相差极大的串;这是一个强烈的滤波过程;并且是一个并行滤波机制。故而,遗传算法有很高的容错能力。
4.遗传算法中的选择、交叉和变异都是随机操作,而不是确定的精确规则。
这说明遗传算法是采用随机方法进行最优解搜索,选择体现了向最优解迫近,交叉体现了最优解的产生,变异体现了全局最优解的复盖。
遗传算法的基础理论是图式定理。它的有关内容如下:
一个基因串用符号集{0,1,*}表示,则称为一个因式;其中*可以是0或1。例如:H=1x x 0 x x是一个图式。
图式中0和1的个数称为图式的阶,并用0(H)表示。图式中第1位数字和最后位数字间的距离称为图式的长度,并用δ(H)表示。对于图式H=1x x0x x,有0(H)=2,δ(H)=4。
低阶,短长度的图式在群体遗传过程中将会按指数规律增加。当群体的大小为n时,每代处理的图式数目为0(n3)。
遗传算法这种处理能力称为隐含并行性(Implicit Parallelism)。它说明遗传算法其内在具有并行处理的特质。
遗传算法在应用中最关键的问题有如下3个
这本质是问题编码。一般把问题的各种参数用二进制编码,构成子串;然后把子串拼接构成“染色体”串。串长度及编码形式对算法收敛影响极大。
适应函数(fitness function)也称对象函数(object function),这是问题求解品质的测量函数;往往也称为问题的“环境”。一般可以把问题的模型函数作为对象函数;但有时需要另行构造。
遗传算法自身参数有3个,即群体大小n、交叉概率Pc和变异概率Pm。
群体大小n太小时难以求出最优解,太大则增长收敛时间。一般n=30-160。交叉概率Pc太小时难以向前搜索,太大则容易破坏高适应值的结构。一般取Pc=0.25-0.75。变异概率Pm太小时难以产生新的基因结构,太大使遗传算法成了单纯的随机搜索。一般取Pm=0.01—0.2。
三、遗传算法在神经网络中的应用
遗传算法在神经网络中的应用主要反映在3个方面:网络的学习,网络的结构设计,网络的分析。
在神经网络中,遗传算法可用于网络的学习。这时,它在两个方面起作用
用遗传算法对神经网络学习规则实现自动优化,从而提高学习速率。
用遗传算法的全局优化及隐含并行性的特点提高权系数优化速度。
用遗传算法设计一个优秀的神经网络结构,首先是要解决网络结构的编码问题;然后才能以选择、交叉、变异操作得出最优结构。编码方法主要有下列3种:
这是把神经网络结构直接用二进制串表示,在遗传算法中,“染色体”实质上和神经网络是一种映射关系。通过对“染色体”的优化就实现了对网络的优化。
参数化编码采用的编码较为抽象,编码包括网络层数、每层神经元数、各层互连方式等信息。一般对进化后的优化“染色体”进行分析,然后产生网络的结构。
这种方法不是在“染色体”中直接编码神经网络的结构,而是把一些简单的生长语法规则编码入“染色体”中;然后,由遗传算法对这些生长语法规则不断进行改变,最后生成适合所解的问题的神经网络。这种方法与自然界生物地生长进化相一致。
遗传算法可用于分析神经网络。神经网络由于有分布存储等特点,一般难以从其拓扑结构直接理解其功能。遗传算法可对神经网络进行功能分析,性质分析,状态分析。
遗传算法虽然可以在多种领域都有实际应用,并且也展示了它潜力和宽广前景;但是,遗传算法还有大量的问题需要研究,目前也还有各种不足。首先,在变量多,取值范围大或无给定范围时,收敛速度下降;其次,可找到最优解附近,但无法精确确定最扰解位置;最后,遗传算法的参数选择尚未有定量方法。对遗传算法,还需要进一步研究其数学基础理论;还需要在理论上证明它与其它优化技术的优劣及原因;还需研究硬件化的遗传算法;以及遗传算法的通用编程和形式等。
C语言实现遗传算法解决TSP问题,带完整代码,应用最基础的遗传算法思想。带实验报告,并在实验报告中与模拟退火算法进行对比。
const int MAXN= 50;//最大城市个数
const int population= 100;//种群个体数
const int MAXpopulation= 100;//最大种群个数 const double mutation_rate= 0.4;//变异率
const double crossover_rate= 0.65;//交配率
const int iter= 200;//迭代次数
double D[MAXN][MAXN];//存储城市之间的长度 city bcity[MAXN];//存储最优路径的各个城市 path bpath[MAXpopulation];//存储种群所有个体
double fitness[MAXpopulation];//存储种群个体的适应度
TSP,只是一个普通但很经典的NP-C问题。具有大的难以想象的解空间。一般的branch-and-bound算法是很难搞定的。于是,人们尝试智能算法,包括遗传算法,蚁群算法,粒子群算法等。遗传算法和蚁群算法都是基于种群的。但是这两个算法有着本质区别。遗传算法的进化机制是基于个体竞争,而蚁群算法的搜索机制则是蚂蚁之间的信息素传导机制下的群体合作。因此,蚁群算法,粒子群算法,人工鱼群算法等,被归纳为群智能算法,成为了一个有别于遗传算法的另一个进化计算领域的分支。由于搜索机制的不同,这两种算法对于不同的问题,具有不同的效率。就拿标准遗传算法和标准蚁群算法来说,应该是蚁群算法更适合求解TSP。然而,无论是遗传算法还是蚁群算法,都有大量的变种算法或者称为改进算法,所以很难简单的说谁更适合TSP。
把下面的(1)-(7)依次存成相应的.m文件,在(7)的m文件下运行就可以了
function fitness=fit(len,m,maxlen,minlen)
fitness(i,1)=(1-(len(i,1)-minlen)/(maxlen-minlen 0.0001)).^m;
(2)个体距离计算函数 mylength.m
elseif((L/10)-floor(L/10))>=rand&&L>10
[A(1,p i-1),B(1,p i-1)]=exchange(A(1,p i-1),B(1,p i-1));
[A(1,x),B(1,y)]=exchange(A(1,x),B(1,y));
%fprintf('index1=%d',index1);
%fprintf('index2=%d',index2);
scatter(a(:,1),a(:,2),'rx');
plot([a(R(1),1),a(R(length(R)),1)],[a(R(1),2),a(R(length(R)),2)]);
%%%%%%%%%%%%%%%输入参数%%%%%%%%
m=2;%%适应值归一化淘汰加速指数
dis=(pos(i,1)-pos(j,1)).^2 (pos(i,2)-pos(j,2)).^2;
%%如果城市之间的距离矩阵已知,可以在下面赋值给D,否则就随机生成
scatter(pos(:,1),pos(:,2),'rx');
plot_route(pos,R);%%画出种群各城市之间的连线
len(i,1)=myLength(D,popm(i,:));
fitness=fit(len,m,maxlen,minlen);
distance_min=zeros(C 1,1);%%各次迭代的最小的种群的距离
fprintf('迭代第%d次\n',C);
len_1(i,1)=myLength(D,popm(i,:));
popm_sel=[popm_sel;popm(len_index,:)];
popm_sel(i,:)=Mutation(popm_sel(i,:));
len(i,1)=myLength(D,popm_sel(i,:));
fitness=fit(len,m,maxlen,minlen);
fprintf('minlen=%d\n',minlen);
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!
大家好,今天给各位分享遗传算法tsp的一些知识,其中也会对遗传算法解决TSP问题进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!一、遗传算法解决TSP问题遗传算法在很多领域都得到应用;从神经网络
大家好,今天给各位分享遗传算法tsp的一些知识,其中也会对遗传算法解决TSP问题进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!一、遗传算法解决TSP问题遗传算法在很多领域都得到应用;从神经网络
大家好,今天给各位分享遗传算法tsp的一些知识,其中也会对遗传算法解决TSP问题进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!一、遗传算法解决TSP问题遗传算法在很多领域都得到应用;从神经网络
大家好,今天给各位分享遗传算法tsp的一些知识,其中也会对遗传算法解决TSP问题进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!一、遗传算法解决TSP问题遗传算法在很多领域都得到应用;从神经网络
大家好,今天给各位分享遗传算法tsp的一些知识,其中也会对遗传算法解决TSP问题进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!一、遗传算法解决TSP问题遗传算法在很多领域都得到应用;从神经网络