当前位置:文档之家› 旅游线路优化设计【文献综述】

旅游线路优化设计【文献综述】

毕业设计文献综述计算机科学与技术旅游线路优化设计一、前言部分:遗传算法(Genetic Algorithm)是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它是有美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Holland教授所提出的GA通常为简单遗传算法(SGA)[1-3]。

遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。

每个个体实际上是染色体(chromosome)带有特征的实体。

染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。

因此,在一开始需要实现从表现型到基因型的映射即编码工作。

由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。

这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。

二、主题部分旅游线路优化设计是一个旅行商问题,通过c++,matlab等多种软件对于初始数据进行分析运算,并将其合理运用以建立模型,最后采用遗传算法对数据进行运算。

旅游线路优化也叫巡回旅行商问题(Traveling Salesman Proble- m,TSP),也称为货郎担问题[4]。

它是一个较古老的问题,最早可以追溯到1759年Euler提出的骑士旅行问题。

货郎担问题可以解释为,一位推销员从自己所在城市出发,必须遍访所有城市且每个城市只能访问一次之后又返回到原来的城市,求使其旅行费用最小(或旅行距离最短)的路径。

1948年,由美国兰德公司推动,TSP成为近代组合优化领域的一个典型难题。

它是一个具有广泛应用背景和重要理论价值的组合优化问题。

TSP的搜索空间随着城市规模数n的增加而增大,这类组合优化问题称之为NP完全问题。

在如此庞大的搜索空间中寻求近似最优解,对于常规方法和现有的计算工具而言,存在着诸多的计算困难。

因此,借助遗传演化算法,模仿大自然界生物的繁殖、杂交及其变异的演化过程来解决TSP问题,显得非常必要。

基于以上原因,本人采用经典遗传算法理论及个体实数编码方法设计了此算法,试图进一步探索TSP 组合优化问题的有效解决方案。

解的表示任何单个的n个城市的排列表示一个解(对n个城市的完全旅行),近似最优解是旅行费用最小的n个城市的排列。

若旅行采用二进制编码表示,对TSP问题的解决没有任何的优点。

相反,若采用二进制代码表示,还要求有特殊的修补算法,因为单个位的变化可能引起一个非法的旅行。

于是,本算法中对解(群体中的个体)的表示统一采用整数编码的方法。

如:“1—3—2—5—4—9—7—8—6”表示一个染色体(个体或路径),每一个整数代表一个顶点(城市)的编号。

算法参数设置复制概率:PR=0.2 杂交概率:PC=0.7 变异概率:PM=0.1遗传操作包括以下三个基本遗传算子(genetic operator):选择(selection);交叉(crossover);变异(mutation)。

选择从群体中选择优胜的个体,淘汰劣质个体的操作叫选择[5,6]。

选择算子有时又称为再生算子(reproduction operator)。

选择的目的是把优化的个体(或解)直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。

选择操作是建立在群体中个体的适应度评估基础上的,目前常用的选择算子有以下几种:适应度比例方法、随机遍历抽样法、局部选择法、局部选择法。

其中轮盘赌选择法(roulette wheel selection)是最简单也是最常用的选择方法。

在该方法中,各个个体的选择概率和其适应度值成比例。

设群体大小为n,其中个体i的适应度为,则i 被选择的概率,为遗传算法显然,概率反映了个体i的适应度在整个群体的个体适应度总和中所占的比例.个体适应度越大。

其被选择的概率就越高、反之亦然。

计算出群体中各个个体的选择概率后,为了选择交配个体,需要进行多轮选择。

每一轮产生一个[0,1]之间均匀随机数,将该随机数作为选择指针来确定被选个体。

个体被选后,可随机地组成交配对,以供后面的交叉操作。

交叉在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异) [7,8]。

同样,遗传算法中起核心作用的是遗传操作的交叉算子。

所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。

通过交叉,遗传算法的搜索能力得以飞跃提高。

交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,期望将有益基因组合在一起。

根据编码表示方法的不同,可以有以下的算法:a)实值重组(real valued recombination)1)离散重组(discrete recombination);2)中间重组(intermediate recombination);3)线性重组(linear recombination);4)扩展线性重组(extended linear recombination)。

b)二进制交叉(binary valued crossover)1)单点交叉(single-point crossover);2)多点交叉(multiple-point crossover);3)均匀交叉(uniform crossover);4)洗牌交叉(shuffle crossover);5)缩小代理交叉(crossover with reduced surrogate)。

最常用的交叉算子为单点交叉(one-point crossover)。

具体操作是:在个体串中随机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体。

下面给出了单点交叉的一个例子:如:两个父代亲体p1,p2(切割点以“|”标记)为:p1=(1 2 3 | 4 5 6 7 | 8 9) p2=(4 5 2 | 1 8 7 6 | 9 3)通过杂交,得两子代亲体o1,o2为:o1=(2 1 8 | 4 5 6 7 | 9 3) o2=(3 4 5 | 1 8 7 6 | 9 2)变异变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动[9,10]。

依据个体编码表示方法的不同,可以有以下的算法:a)实值变异;b)二进制变异。

一般来说,变异算子操作的基本步骤如下:a)对群中所有个体以事先设定的编译概率判断是否进行变异;b)对进行变异的个体随机选择变异位进行变异。

遗传算法导引入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。

当遗传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加速向最优解收敛。

显然,此种情况下的变异概率应取较小值,否则接近最优解的积木块会因变异而遭到破坏。

二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。

此时收敛概率应取较大值。

遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能力而作为辅助算子。

遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备兼顾全局和局部的均衡搜索能力。

所谓相互配合.是指当群体在进化中陷于搜索空间中某个超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。

所谓相互竞争,是指当通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。

如何有效地配合使用交叉和变异操作,是目前遗传算法的一个重要研究内容。

基本变异算子是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座的基因值做变动(以变异概率P.做变动),(0,1)二值码串中的基本变异操作如下: 基因位下方标有*号的基因发生变异。

变异率的选取一般受种群大小、染色体长度等因素的影响,通常选取很小的值,一般取0.001-0.1。

如:两个父代亲体p1,p2(以“||”标记所选择的个体中的元):p1=(1 2 |3| 4 5 6 7 |8| 9) p2=(4 |5| 2 1 8 7 |6| 9 3)通过变异,得两子代亲体o1,o2:o1=(1 2 |8| 4 5 6 7 |3| 9) o2=(4 |6| 2 1 8 7 |5| 9 3)终止条件当最优个体的适应度达到给定的阀值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止[11]。

预设的代数一般设置为100-500代。

遗传算法的基本运算过程如下:a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。

b)个体评价:计算群体P(t)中各个个体的适应度。

c)选择运算:将选择算子作用于群体。

选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。

选择操作是建立在群体中个体的适应度评估基础上的。

d)交叉运算;将交叉算子作用于群体。

所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。

遗传算法中起核心作用的就是交叉算子。

e)变异运算:将变异算子作用于群体。

即是对群体中的个体串的某些基因座上的基因值作变动。

群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t 1)。

f)终止条件判断:若tT,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算[12-14]。

三、小结本毕业设计是实现旅游线路优化。

根据一个区域里的所有景点的地理分布,让旅客的旅行开销达达最小。

由于传统搜索方法难以解决所以运用遗传算法(GA)这一随机搜索算法。

它让我进一步的熟悉遗传算法的基本方法,并让我研究出了适用于旅游线路优化这一具体问题的遗传算法。

在旅游线路优化的遗传算法中,有许多的方法是行不通的,这个叫我从这些方法中选择出最好的方法进行设计。

在进行程序设计时,我们要确定交叉率、变异率、种群长度、染色体长度等。

在选择的时候要根据基因的适应度进行优胜劣汰的选择,去除掉那些适应度低的,保留适应度高的基因,让它们进行交叉或变异操作。

相关主题