遗传算法论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1 引言 (2)
2 问题描述 (2)
3 基于遗传算法TSP算法 (3)
3.1 基于遗传算法的TSP算法总体框架 (3)
3.2 算法的详细设计 (4)
3.2.1 解空间的表示方式 (5)
3.2.2 种群初始化 (5)
3.2.3 适应度函数 (5)
3.2.4 选择操作 (6)
3.2.5 交叉操作 (6)
3.2.6 变异操作 (7)
3.3 实验结果分析 (7)
4遗传算法优缺点 (8)
5结语 (9)
论文题目:基于遗传算法的TSP算法求解20大城市最短旅途
论文摘要:TSP问题为组合优化中的经典的NP完全问题.本论文以为给定20个城市制定最短旅途为例,利用基于遗传算法的TSP算法求解20个点的最短路线问题. 本论文给出了遗传算法中各算子的实现方法,并展示出求解系统的结构和求解系统基于java的实现机制.利用java软件编程,运行出结果,并对基于遗传算法的TSP算法结果描述其优缺点,并选择最为恰当的TSP算法,实现最短旅途的最优解. 关键词:遗传算法;TSP;最短路径;
1 引言
TSP问题为组合优化中的经典问题,已经证明为一NP完全问题,即其最坏情况下的时间复杂性随着问题规模的扩大,按指数方式增长,到目前为止不能找到一个多项式时间的有效算法。TSP问题可描述为:已知n个城市相互之间的距离,某一旅行商从某个城市出发访问每个城市一次且仅一次,最后回到出发城市,如何安排才使其所走路线最短。TSP问题不仅仅是一个简单的组合优化问题,其他许多的NP完全问题可以归结为TSP问题,如邮路问题、装配线上的螺帽问题和产品的生产安排问题等,使得TSP问题的有效求解具有重要的意义。本文中的TSP算法主要采用遗传算法。遗传算法是一种进化算法,其基本原理是仿效生物界中的“物竞天择,适者生存”的演化法则。遗传算法把问题参数编码为染色体,再按照所选择的适应度函数,利用迭代的方式进行选择、交叉以及等运算对个体进行筛选和进化,使适应值大的个体被保留,适应值小的个体被淘汰,新的群体继承了上一代的信息,又优于上一代,这样反复循环,直至满足条件,最后留下来的个体集中分布在最优解的周围,筛选出最优个体作为问题的解。
2 问题描述
本案例为20个城市,分别为1-20,根据全程路径最短为目的,制定最优的顺序依次经过这20个城市。这类问题就由TSP算法来解决,寻找出一条最短遍历这20个城市的路径。随机给出20个城市坐标,下表为这20个城市的位置坐标如表2-1所示。
表2-1 20个城市的位置坐标
城市编号X坐标Y坐标城市编号X坐标Y坐标
1 60 200 11 180 100
2 180 200 12 60 80
3 80 180 13 120 80
4 140 180 14 180 60
5 20 160 15 20 40
6 100 160 16 100 40
7 200 160 17 200 40
8 140 140 18 20 20
9 40 120 19 60 20
10 100 120 20 160 20
3 基于遗传算法TSP算法
3.1 基于遗传算法的TSP算法总体框架
TSP问题的遗传算法包括编码设计、种群初始化、适应度函数选择、变异操作设定、选择操作设定、交叉操作设定以及终止条件设定。为简化TSP问题的求解,假设每个城市和其它任意一个城市之间都直接相连.遗传算法TSP问题的流程图如图2-1所示
开始随机产生初始
种群
执行选择操作
执行交叉操作
MutationRate<0.015
执行变异操作
繁殖代数=100
结束
否
是
是
否
进化种群
图2-1算法流程框架图 3.2 算法的详细设计
3.2.1 解空间的表示方式
遗传算法对解空间的表示大多采用二进制编码形式,但是二进制编码方式不适合TSP问题的解的表示,要是给出城市编号,用十进制数编码来表示解更合适,例如:近邻表示、次序表示和路径表示等等.这里采用了最简单的路径表示法。它是最自然、最接近人类思维的表示法.因此对20个城市依次编号为1-20。例如,下面的路径(闭合的):10-4-2-8-1-7-6-20-16-17-13-11-18-15-14-19-12-9-5-3-10
表示从城市10出发,经过1-20个城市最后回到城市10的一条路径,可以自然地用一维数组来表示:
(10,4,2,8,1,7,6,20,16,17,13,11,18,15,14,19,12,9,5,3,10)
20个旅游城市的TSP问题,如果将种群规模设为50,则解空间就用二维数组来表示:tour[50][20]。
3.2.2 种群初始化
种群的规模选择应适当,盲目的增大种群规模不能使算法得到改进,反而大大增加了计算的开销.20个城市TSP问题,可以选择小规模的种群(例如50),种群初始化时,先产生1,2,…,20的一条规则路径,然后用Collections.shuffle将他们打乱顺序,保证这条路径变成了一条随机的路径,这样产生了一个个体;同样地产生种群里其它的个体.
3.2.3 适应度函数
适应度表明个体或解的优劣性[10],不同的问题,适应度函数的定义
方式也不同,若设K1、K2....K20为一个采用整数编码的染色体,适应度函数为恰好走遍20个城市,在回到出发城市的总距离的倒数。优化的目标就是选择适应度函数值尽可能大的染色体,适应度函数值越大的染色体越优质,反之越劣质。求得种群中所有个体的适应值后,将适应值最大的个体保存起来,到演化完毕时,这个个体就是最后要求的最优解。
3.2.4 选择操作
选择操作的目的是为了从当前群体中以一定的概率选择优良个体到新群体中,将选择算子作用于群体,从而使优化的个体有机会直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代;个体被选中的概率与适应度值有关,适应度值越大,被选中的概率也就越大,而适应度值越大的染色体越优质。本案例中是先产生一个淘汰组,然后随机挑选若干个体加入淘汰组,在淘汰组中直接选择适应值最大的个体。
3.2.5交叉操作
交叉操作是遗传算法中最主要的遗传操作,通过交叉操作可以得到新一代个体,新个体结合了其父辈个体的特性,交叉体现了信息交换的思想。利用不同映射杂交,确定交叉操作的父代,将父代样本两两分组,每组重复以下过程:
Parents