提请大家注意:摘要应该是一份简明扼要的详细摘要(包括关键词),在整篇论文评阅中占有重要权重,请认真书写(注意篇幅不能超过一页,且无需译成英文)。
本文探讨的是公交线选择而开发的查询系统.以两站点之间所花时间的最小值作为主要目标函数,利用双种群遗传算法的原理建立公交线选择数学模型,再通过MATLAB程序来实现整个流程和迭代,最终求出全局近似最优解,即最优权重线,以起点和终点查询到近似的最优公交线,并进行了误差分析,模型的评价与推广.
问题一:仅考虑公汽线,对数据进行初步分析和处理后,考虑到数据的复杂性和数据搜索范围的广度,我们应用比较成熟的双种群遗传算法建立数学模型. 通过
MATLAB强大的矩阵运算功能得到站点之间的邻接矩阵,用时间加权. 其流程思想为基于双种群初始群体A、B,对染色体进行整数编码,用竞争选择法选择出较优个体作为繁殖下一代的母体,依据选择性集成思想,等概率使用两点交叉法和区域交叉法对染色体进行交叉操作与使用邻居交换变异和两点交换变异进行染色体变异操作,并结合
MATLAB反复迭代,最终给出了六对起始站与终点站的六条近似最优线. 该法扩大遗传算法的搜索范围,避免过早.
问题二:在数据处理上用时间加权把地铁站点和汽车站点统一化,可得所有站点之间的邻接矩阵. 其求解原理与问题一相似,但由转车方式的不同生成了8种不同的适应度函数,再根据适应度函数来进行问题的求解.
问题三:我们将任意两个站点之间的步行时间作为矩阵中相应的权,这时构建的邻接矩阵中的权就由两站点之间公汽到公汽的时间,公汽到地铁的时间,地铁到公汽的时间,地铁到地铁的时间和两点之间的步行时间构成. 但其求解原理与问题一相似,但由转车方式的不同就会生成不同的适应度函数,再根据适应度函数来进行问题的求解.
双种群遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,具有自组织、自适应和自学习性.
第29届奥运会明年8月将在举行,届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公共交通工具(简称公汽,包括公汽、地铁等)出行. 市的公汽线条以上,使得的出行更加通畅、便利,但同时也面临多条线的选择问题. 针对市场需求,某公司准备研制开发一个解决公汽线选择问题的自主查询计算机系统.
为了设计这样一个系统(核心是线选择的模型与算法),从实际情况出发,满足查询者的各种不同需求. 需要研究的问题如下:
问题一:只考虑公汽线情况,给出任意两公汽站点之间线选择问题的一般数学模型与算法. 并根据基本参数设定中的数据,利用其模型与算法,求出6对起始站→终
该问题是一个组合优化问题. 对于此类问题,只有当其规模较小时,才能求其精确解. 在本文中公汽线总数与站点数是成指数型增长的,所以一般很难精确地求出其最优解,因而寻找出有效的近似求解算法就具有重要意义.
由于L406公汽线的线是环形的,而数据中没有标示出来,所以我们用相邻站点整体线也相邻,判断出该公汽线是环行的,所以应当作环行处理. 对于该问题,我们先求出其站点与站点之间的邻接矩阵(权用时间表示),其矩阵大小为3957´3957,数据量太多,不能输出,只能把放在内存中.
许多智能算法被用于求解两点间线问题. 如禁忌搜索、模拟退火、蚁群算法等. 其中遗传算法是被研究最多的一种算法. 但标准遗传算法容易陷入局部极值解,出现“早熟”现象. 为此人们提出了多种改进方法,如将遗传算子中的交叉算子进行改进,应用单亲遗传算法,将遗传算子与式算法结合等.
遗传算法的核心思想为自然选择,适者. 遗传算法作为一种模拟生物进化的一种算法,提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,具有自组织、自适应和自学习性. 其也是一种迭代算法,从选定的初始解出发,通过不断地迭代,逐步改进当前解,直到最后搜索到最优解或满意解,其迭代过程是从一组初始解(群体)出发,采用类似于自然选择和有性繁殖的方法,在继承原有优良基因的基础上生成具有更好性能的下一代解的群体. 遗传算法的流程图见下图:
双种群遗传算法是一种并行遗传算法,它使用多种群同时进化,并交换种群之间优秀个体所携带的遗传信息,以打破种群内的平衡态达到更高的平衡态,跳出局部最优. 在双种群遗传算法中,每一种群都是按照标准算法进行操作. 在操作时,首先建立两个遗传算法群体,即种群A和种群B,分别地进行选择、交叉、变异操作,且交叉概率、变异概率不同. 当每一代运行结束以后,产生一个随机数n,分别从A,B中选出最优染色体和n个染色体进行杂交,以打破平衡态. 因为在双种群遗传算法中,每一种群都是按照标准算法进行操作的.
遗传算法的创始人美国著名学者、大学教授John H.Holland认为,可以用一组编码来模拟一组计算机程序,并且定义了一个衡量每个“程序”的度量:“适应值”. Holland模拟自然选择机制对这组“程序”进行“进化”,直到最终得到一个正确的“程序”为止. 编码方式有:二进制编码、十进制编码和符号编码等方法. 整数编码与符号编码一般用于与顺序有关的组合优化方面的问题. 根据公汽线的特点,本文的工作采用整数编码[6]. 染色体长度与公汽线结点个数相同,染色体的每个基因的编码即为公汽线结点的编号. 因此,每条染色体由1到n(3957)的一个全排列组成.
在对染色体进行选择[6]时,考虑到适应度比例法(轮盘赌选择法)与最佳个体保留法各自的优缺点,差异性较大,依据选择性集成思想,表现好的个体学习器越精确、差异越大,集成后可以获得的结果越好. 而竞争选择法集成了上述两种的优点克服了它们的缺点,因此本文釆用竞争选择法. 其中竞争选择法是釆用适应度比例法进行选择,交叉后产生下一代,再利用最佳个体保留法将上一代的最佳个体直接保存下来,然后从新群
在对染色体进行交叉操作[6]时,对于由整数编码的染色体,交叉操作会形成染色体中的非法基因,即重复基因. 所以实现染色体交叉要将重复的基因清除. 只使用一种交叉方法容易引起过早,即“早熟”. 依据选择性集成思想 ,等概率使用两点交叉法和区域交叉法这两种交叉方法,扩大遗传算法的搜索范围,避免过早.
在染色体的变异操作[6]中,与交叉方法一样,如果使用一种变异方法,同样可能会引起“早熟”. 为了避免过早,依据选择性集成思想选择邻居交换变异和两点交换变异这两种个性好且差异性较大的变异方法,等概率使用以扩大搜索范围.
一般来说种群规模越大越容易到最优解,但是要其初始种群中的每个个体都是互异的,m不能设置过大,否则无法产生初始种群,且m过大其速度必然降低,也会消耗更多的计算资源,并基于一般遗传算法中初始群体大小的选择,本文中取m=30.
公汽线问题中每一种起点站到终点站的方案对应于解空间的一个解 ,解空间中的数据是遗传算法的表现形式,从表现到基因型的映射称为编码. 最初遗传算法是采用二进制编码方法,但在大量实际问题中,二进制编码操作不简便,不易进行变异交叉操作,易产生大量非可行解,所以针对特殊的问题,可以灵活采用不同的编码方法. 本文在公汽线求解中,采用基于站点序号的实数编码,将染色体定义为公汽线的一条解线中的站点号序列,在MATLAB中为一个没有重复数字的行向量来表示. 设有n个站点的某个全排列为(x1,x2,,xn),则个体的染色体表示为X=(x1,x2,,xn),n=3957.
种群中每一个体为n(3957)个站点的一个全排列,随机生成m(m=30)个1~n 的随机排列,得到m个个体的初始种群,m为种群大小,n为染色体长度.
A、B初始群体的数据矩阵为30´3957,由于数据太多,文中就不给出数据(其结果可运行程序得出).
在遗传算法进行搜索时只以适应度函数为依据,利用种群中个体每个的适应度值来进行搜索,适应度值是进化时优胜劣汰的依据,应用中总是根据问题的优化指标来定义.
对于公汽线问题,以个体对应线所发的时间之和作为个体适应度,其适应度越小,表明该个体越优. 则该个体对应适应度值[7]为:
一般来说,选择算子设计使得个体被选中并遗传到下一代群体中的概率与该个体的适应度大小有关. 适应度是越高越好,而在公汽线问题中,如果适应度是所经过的对应线所花的时间之和,线所花时间之和是越小越好,为了使公汽线问题的适应度
与一般遗传算法中的适应度一致. 这里用选择概率来进行衡量. 则每个个体的选择概率(适应度比例)就是每个个体的适应度与所有个体适应度的总和之比,即:
但当径所花时间非常大(例如:10000),这样其适应度比例的最高数据位将在小数点后的第四位,这样不利于计算,为此要进行尺度变换. 为确保适应度有两位整数,此处将适应度放大倍数L(本题中 L=lOOO) 因此适应度比例函数[8]的表达式为:
遗传算法中选择算子设计经典的是用适应度成比例的概率方法 ,但是这里存在的问题是由于许多个体的适应度比例很小几乎没有机会复制个体,从而被过早地淘汰. 这样整个群体多样性就无法得到,这里采用一种新的赌轮选择算子——离散赌轮选择算子[8],将有效地避免了这个问题.
按照顺序在1~1000内分别占不同的区间,当随机函数产生1~1000以内的时,即使是适应度比例最小的也有可能被选中,从而较好的保持了群体的多样性.
经过选择算子得出总体适应能力强的A、B群体数据矩阵为30´3957,因数据量太大,文中就不给出具体数据.
依据选择性集成思想 ,等概率使用两点交叉法和区域交叉法这两种差异性较大的交叉方法,扩大遗传算法的搜索范围,避免过早.
其中,两点交叉法是先随机设定两个基因交叉,将父辈两个个体在这两个交叉点之间的基因链码相互交换,从而形成新的个体;区域交叉法是随机在染色体中选择一个交叉区域,将第二条染色体的交叉区域加在第一条染色体的前面,第一条染色体的交叉区域加在第二条染色体的前面,在交叉区域后依次删除与交叉区域相同的基因,得到最后的两条子染色体.
将第(3)步得到的关于A,B种群的数据分别用两种交叉算法来实现操作. 其中一半数据用两点交叉法,另一半的数据用区域交叉法来进行染色体的交叉重组.
为了避免过早,依据选择性集成思想选择邻居交换变异和两点交换变异这两种个性好且差异性较大的变异方法,等概率使用以扩大搜索范围.
其中,邻居交换变异是产生一个随机数,将该数对应的基因和其后的基因交换;若该数对应的基因是染色体中的最后一个基因,则将该基因与染色体的第一个基因交换;两点交换变异是先产生两个不同的随机数,确定两个交换点,然后对个体在此两点的基因进行交换.
经过染色体变异得出的A、B群体数据矩阵为30´3957,因数据量太大,文中就不给出具体数据.
将两个种群中的最优解取出,再在每个种群中随机选取n个染色体,将这n+1个染色体互换,进入对方种群.
要把群体中适应度最高的个体不经过配对交叉直接复制到下一代中,然后从 新群体中淘汰一个适应度最差的个体. 分别对A、B进行的操作.
经过最佳保留法选择后得出的A、B群体数据矩阵为30´3957,因数据量太大,文中就不给出具体数据.
在本文中,采用进化的代数N作为循环迭代过程的结束,如果等于N,则算法结束,输出适应值最高的解;否则,继续重复上述过程.
重复步骤(3),(4),(5),(6),(7),(8)依次进行循环迭代,本题中设定迭代次数为N=1000. 最后得到30个近似的最优解.
选出这30个近似最优解中以时间作为权值最小的那一组解作为题设中要求的近似最优解. 其中满足要求的基因链码(站点数)的顺序即是顾客所需从起始点到终点站的线 从起点站到终点站转一次车
从起点站到终点站转一次车遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与从起点站到终点站不转车相同.
从起点站到终点站转两次车遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与从起点站到终点站不转车相同.
考虑到加入地铁及公汽的交叉通道,在数据处理上用时间加权把地铁站点和汽车站点统一化,可得所有站点之间的邻接矩阵. 其求解原理与问题一相似,但由转车方式的不同就会生成相对应的适应度函数,再根据适应度函来对问题求解. 2.2 模型建立
首先运用MATLAB强大的矩阵运算功能把其邻接矩阵得出,该矩阵是3957´3957,由于数据量太大不能把其具体表示出来,只能把所得到的数据放在内存中,在运用的时候再从内存中调用.
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与仅考虑公汽线从起点站到终点站不转车相同.
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与仅考虑公汽线从起点站到终点站不转车相同.
4(分钟)表示地铁换乘地铁平均耗时(其中步行时间2分钟). 除这之外,这一流程中的其他的原理没变.
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与仅考虑公汽线从起点站到终点站不转车相同.
为了简化模型,将地铁换乘公汽平均耗时与公汽换乘地铁平均耗时都假设为7分钟,因为耗时相差不大. 则地铁到公汽与公汽到地铁是一样的.
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与仅考虑公汽线从起点站到终点站不转车相同.
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与仅考虑公汽线从起点站到终点站不转车相同.
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与仅考虑公汽线从起点站到终点站不转车相同.
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与仅考虑公汽线从起点站到终点站不转车相同.
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与仅考虑公汽线从起点站到终点站不转车相同.
由程序运行最终得出:对六对起点到终点找不一条线为公汽到地铁再到地铁. 2.3.7 地铁到公汽再到公汽
由程序运行最终得出:对六对起点到终点找不一条线为地铁到公汽再到公汽. 2.3.8 地铁到公汽再到地铁
由程序运行最终得出:对六对起点到终点找不一条线为地铁到公汽再到地铁. (三)问题三 3.1 问题分析
在该问题中假设知道所有站点之间的步行时间,即任意两个站点之间都是可以到达的,只是以步行的方式来实现. 我们以两个站点之间的步行时间作为矩阵中的权. 这时构建的邻接矩阵中的权由两站点之间公汽到公汽的时间,公汽到地铁的时间,地铁到公汽的时间,地铁到地铁的时间和两点之间的步行时间构成. 3.2 模型建立
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种叉,迭代的结束条件和结果的原理与仅考虑公汽线从起点站到终点站不转车相同.
本文针对公交线问题釆用的是双种群遗传算法,其中运用到的思想为基于双种群初始群体,对染色体进行整数编码,再通过竞争选择法对其染色体进行选择,依据选择性集成思想,等概率使用遗传算子分别对染色体的交叉与变异进行操作,在这之中每一个算法思想均是想尽力扩大其搜索范围,减缓其度. 其中交叉率与变异率不同,就会造成结果与最优解存在不同产差异.
1.1 遗传算法与其他搜索算法相比较:遗传变异法不是直接作用在参变量群上,而是作用在这个群的某种编码上;遗传算法从初始解群体开始搜索,不是从单个解开始搜索,算法具有较高的并行性;遗传算法在搜索过程中只使用适应度函数计算,而不用导数或其他信息,具有较强的通用性;遗传算法使用概率转换规则而不是使用确定性的规则,具有全局寻优的特点.
1.2 本文设计了针对公汽线系统特点的整数编码的遗传算法,基于两个初始种群,运用竞争选择法来对染色体进行选择并保留若干最佳个体,并使用相应的等概率交叉算子和等概率变异算子实现算法,取得了良好的效果.
1.3本文所釆用的双种群遗传算法是一种并行遗传算法,它使用两个种群同时进化,并交换种群之间优秀个体所携带的遗传信息增加个体的多样性,扩展解的搜索空间,以打破种群内的平衡态达到更高的平衡态,跳出局部最优. 时最优结果,所花时间和迭代次数等方面单双种群遗传算法都优于一般遗传算法.
1.4 在进行染色体的选择时,我们采用了一种新的赌轮选择算子——离散赌轮选择算子,将有效地避免了整个群体多样性无法得到问题.
1.5 忽略复杂计算. 例如可以对交叉操作后的修正操作适度简化甚至可以全部去掉,只需要作出遗传可正常进行的操作即可. 2.模型的不足
1.1 在进行染色体变异操作中,在运用等概率变异算子时,可再加入其他的个性好且差异性较大的变异方法,使用以扩大搜索范围.
1.2 在算法实施过程中,初始群体大小,迭代次数,交叉概率,变异概率等参数值的设定对于问题能否找到满意解起着非常重要的作用.如果初始群体大小与迭代次数太小,则不容易找到最优解,反之,则计算时间长. 对于交叉概率来说,如果取值过大,则会以前遗传的结果,因而交叉概率不能取得太大. 对于变异概率,其目的是为了算法对解空间的覆盖,但其太大,会遗传和交叉选出的染色体而变成随机搜索,反之,染色体种群又会过于单调,从而陷入局部极值. 因此在实际计算时,要根据具体问题,来选择合适的参数. 2.模型的推广
解决公汽线问题的算法在对钻孔线方案,物流配送系统,网络布线,铁网优化等问题中有着广泛的应用,所以改进和研究解决公汽线问题的算法对实际的工业生产是有重要意义的.
[2] 赵静,但琦,数学建模与数学实验(第2版)[M],:高等教育出版社,2003. [3] 汪国强,数学建模优秀案例选编[M],广州:华南理工大出版社,2001.
[4] 阎平凡,张长水,人工神经网络与模拟进化计算(第2版)[M],:大学出版社,2005,(549-609).
[5] 李飞,白艳萍,用遗传算法求解旅行商问题[J],中北大学学报(自然科学版),28(1):49-52,2007. [6] 赵燕伟,吴斌,蒋丽,召,王万良,车辆径问题的双种群遗传算法求解法[J],计算机集成制造系统-CIMS, 10(30):303-306,2004.
[7] 蒋望东,林士敏,基于选择性集成的整数编码遗传算法及TSP问题求解[J],计算机与现代化,(5):38-40,2007.
[8] 吴值民,丽,邹赟波,李宏伟,卢厚清,退火单亲求解旅行商问题及MAYLAB实现[J],解放军理工大学学报(自然科学版),8(1):44-48,2007. [9] 周涛,基于改进遗传算法的TSP问题研究[J],微电子学与计算机, 23(10):104-106,2006.
网友评论 ()条 查看