河南理工大学2015年数学建模竞赛论文(范文样本)答卷编号(竞赛组委会填写):题目编号:(A)论文题目:基于双种群遗传算法的公交路线查询问题参赛队员信息(必填):姓名专业班级联系电话队员1张三XXXXXXXXXXXXXXX队员2李四XXXXXXXXXXXXXXX队员3王五XXXXXXXXXXXXXXX答卷编号(竞赛组委会填写):评阅情况(学校评阅专家填写):评阅1.评阅2.评阅3.1基于双种群遗传算法的公交路线查询问题摘要本文探讨的是公交路线选择而开发的查询系统.以两站点之间所花时间的最小值作为主要目标函数,利用双种群遗传算法的原理建立公交路线选择数学模型,再通过MATLAB程序来实现整个流程和迭代,最终求出全局近似最优解,即最优权重线路,以起点和终点查询到近似的最优公交路线,并进行了误差分析,模型的评价与推广.问题一:仅考虑公汽线路,对数据进行初步分析和处理后,考虑到数据的复杂性和数据搜索范围的广度,我们应用比较成熟的双种群遗传算法建立数学模型.通过MATLAB强大的矩阵运算功能得到站点之间的邻接矩阵,用时间加权.其流程思想为基于双种群初始群体A、B,对染色体进行整数编码,用竞争选择法选择出较优个体作为繁殖下一代的母体,依据选择性集成思想,等概率使用两点交叉法和区域交叉法对染色体进行交叉操作与使用邻居交换变异和两点交换变异进行染色体变异操作,并结合MATLAB反复迭代,最终给出了六对起始站与终点站的六条近似最优路线.该法扩大遗传算法的搜索范围,避免过早收敛.问题二:在数据处理上用时间加权把地铁站点和汽车站点统一化,可得所有站点之间的邻接矩阵.其求解原理与问题一相似,但由转车方式的不同生成了8种不同的适应度函数,再根据适应度函数来进行问题的求解.问题三:我们将任意两个站点之间的步行时间作为矩阵中相应位置的权,这时构建的邻接矩阵中的权就由两站点之间公汽到公汽的时间,公汽到地铁的时间,地铁到公汽的时间,地铁到地铁的时间和两点之间的步行时间构成.但其求解原理与问题一相似,但由转车方式的不同就会生成不同的适应度函数,再根据适应度函数来进行问题的求解.双种群遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,具有自组织、自适应和自学习性.关键词双种群遗传算法;竞争选择法;离散赌轮选择算子;选择性集成思想.2一、问题的重述第29届奥运会明年8月将在北京举行,届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公共交通工具(简称公汽,包括公汽、地铁等)出行.北京市的公汽线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题.针对市场需求,某公司准备研制开发一个解决公汽线路选择问题的自主查询计算机系统.为了设计这样一个系统(核心是线路选择的模型与算法),从实际情况出发,满足查询者的各种不同需求.需要研究的问题如下:问题一:只考虑公汽线路情况,给出任意两公汽站点之间线路选择问题的一般数学模型与算法.并根据基本参数设定中的数据,利用其模型与算法,求出6对起始站→终到站之间的最佳路线,并要有清晰的评价说明.见下表:123456起始站S3359S1557S0971S0008S0148S0087终点站S1828S0481S0485S0073S0485S3676问题二:同时考虑公汽与地铁线路,解决以上问题.问题三:假设知道所有站点之间的步行时间,给出任意两站点之间线路选择问题的数学模型.其中基本参数设定:相邻公汽站平均行驶时间(包括停站时间):3分钟相邻地铁站平均行驶时间(包括停站时间):2.5分钟公汽换乘公汽平均耗时:5分钟(其中步行时间2分钟)地铁换乘地铁平均耗时:4分钟(其中步行时间2分钟)地铁换乘公汽平均耗时:7分钟(其中步行时间4分钟)公汽换乘地铁平均耗时:6分钟(其中步行时间4分钟)公汽票价:分为单一票价与分段计价两种,标记于线路后;其中分段计价的票价为:0~20站:1元;21~40站:2元;40站以上:3元地铁票价:3元(无论地铁线路间是否换乘)注:以上参数均为简化问题而作的假设,未必与实际数据完全吻合.公汽线路及相关信息见数据文件B2007data.rar.二、模型的假设1.转车的次数控制在2次以内;2.相邻公汽站平均行驶时间(包括停站时间):3分钟;3.相邻地铁站平均行驶时间(包括停站时间):2.5分钟;4.公汽换乘公汽平均耗时:5分钟(其中步行时间2分钟);5.地铁换乘地铁平均耗时:4分钟(其中步行时间2分钟);6.地铁换乘公汽平均耗时:7分钟(其中步行时间4分钟);7.公汽换乘地铁平均耗时:6分钟(其中步行时间4分钟);8.公汽票价:分为单一票价与分段计价两种,标记于线路后,其中分段计价的票价为:0~20站:1元,21~40站:2元,40站以上:3元;9.地铁票价:3元(无论地铁线路间是否换乘);10.知道所有站点之间的步行时间.3三、符号说明C:只考虑公汽线路的情况下,每个个体对应路线总长;D:考虑公汽和地铁线路的情况下,每个个体对应路线部长;1T:相邻公汽站平均行驶时间(包括停站时间);2T:相邻地铁站平均行驶时间(包括停站时间);()kfX:第k个个体所对应的适应度值;A:每个个体所对应的适应度比例;P:每个个体所对应的选择概率(适应度比例);abT:所有站点之间的步行时间;u:表示转车换乘所耗时间之和.四、模型的建立与求解(一)问题一1.1问题分析该问题是一个组合优化问题.对于此类问题,只有当其规模较小时,才能求其精确解.在本文中公汽路线总数与站点数是成指数型增长的,所以一般很难精确地求出其最优解,因而寻找出有效的近似求解算法就具有重要意义.由于L406公汽线路的路线是环形的,而数据中没有标示出来,所以我们用相邻站点整体路线也相邻,判断出该公汽线路是环行的,所以应当作环行处理.对于该问题,我们先求出其站点与站点之间的邻接矩阵(权用时间表示),其矩阵大小为39573957´,数据量太多,不能输出,只能把放在内存中.许多智能算法被用于求解两点间线路问题.如禁忌搜索、模拟退火、蚁群算法等.其中遗传算法是被研究最多的一种算法.但标准遗传算法容易陷入局部极值解,出现“早熟收敛”现象.为此人们提出了多种改进方法,如将遗传算子中的交叉算子进行改进,应用单亲遗传算法,将遗传算子与启发式算法结合等.遗传算法的核心思想为自然选择,适者生存.遗传算法作为一种模拟生物进化的一种算法,提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,具有自组织、自适应和自学习性.其也是一种迭代算法,从选定的初始解出发,通过不断地迭代,逐步改进当前解,直到最后搜索到最优解或满意解,其迭代过程是从一组初始解(群体)出发,采用类似于自然选择和有性繁殖的方法,在继承原有优良基因的基础上生成具有更好性能的下一代解的群体.遗传算法的流程图见下图:4遗传算法流程图标准遗传算法是针对一个宏观的种群进行选择、交叉、变异三种操作.双种群遗传算法是一种并行遗传算法,它使用多种群同时进化,并交换种群之间优秀个体所携带的遗传信息,以打破种群内的平衡态达到更高的平衡态,跳出局部最优.在双种群遗传算法中,每一种群都是按照标准算法进行操作.在操作时,首先建立两个遗传算法群体,即种群A和种群B,分别独立地进行选择、交叉、变异操作,且交叉概率、变异概率不同.当每一代运行结束以后,产生一个随机数n,分别从A,B中选出最优染色体和n个染色体进行杂交,以打破平衡态.因为在双种群遗传算法中,每一种群都是按照标准算法进行操作的.由上分析,对于本问题,我们釆用双种群遗传[5]算法(doublepopulationsgeneticalgorithm)在选择公汽路线问题中的应用.遗传算法的创始人美国著名学者、密西根大学教授JohnH.Holland认为,可以用一组编码来模拟一组计算机程序,并且定义了一个衡量每个“程序”的度量:“适应值”.Holland模拟自然选择机制对这组“程序”进行“进化”,直到最终得到一个正确的“程序”为止.编码方式有:二进制编码、十进制编码和符号编码等方法.整数编码与符号编码一般用于与顺序有关的组合优化方面的问题.根据公汽路线的特点,本文的工作采用整数[6]编码.染色体长度与公汽路线结点个数相同,染色体的每个基因的编码即为公汽路线结点的编号.因此,每条染色体由1到n(3957)的一个全排列组成.在对染色体进行[6]选择时,考虑到适应度比例法(轮盘赌选择法)与最佳个体保留法各自的优缺点,差异性较大,依据选择性集成思想,表现好的个体学习器越精确、差异越大,集成后可以获得的结果越好.而竞争选择法集成了上述两种的优点克服了它们的缺点,因此本文釆用竞争选择法.其中竞争选择法是釆用适应度比例法进行选择,交叉后产生下一代,再利用最佳个体保留法将上一代的最佳个体直接保存下来,然后从新群开始初始化群体是否满足条件选择退出算法交叉变异否个体评价是5体中淘汰一个适应度最差的个体,提高了问题求解的收敛速度,体现了遗传算法自适应环境的能力.在对染色体进行交叉[6]操作时,对于由整数编码的染色体,交叉操作会形成染色体中的非法基因,即重复基因.所以实现染色体交叉要将重复的基因清除.只使用一种交叉方法容易引起过早收敛,即“早熟”.依据选择性集成思想,等概率使用两点交叉法和区域交叉法这两种交叉方法,扩大遗传算法的搜索范围,避免过早收敛.在染色体的变异[6]操作中,与交叉方法一样,如果使用一种变异方法,同样可能会引起“早熟”.为了避免过早收敛,依据选择性集成思想选择邻居交换变异和两点交换变异这两种个性好且差异性较大的变异方法,等概率使用以扩大搜索范围.1.2模型建立1.2.1从起点站到终点站不转车,则双种群遗传算法的流程如下:(1)产生邻接矩阵邻接矩阵的MATLAB程序实现见附件一.(2)基于站点序号的编码一般来说种群规模越大越容易收敛到最优解,但是要保证其初始种群中的每个个体都是互异的,m不能设置过大,否则无法产生初始种群,且m过大其收敛速度必然降低,也会消耗更多的计算资源,并基于一般遗传算法中初始群体大小的选择,本文中取m=30.公汽路线问题中每一种起点站到终点站的方案对应于解空间的一个解,解空间中的数据是遗传算法的表现形式,从表现到基因型的映射称为编码.最初遗传算法是采用二进制编码方法,但在大量实际问题中,二进制编码操作不简便,不易进行变异交叉操作,易产生大量非可行解,所以针对特殊的问题,可以灵活采用不同的编码方法.本文在公汽线路求解中,采用基于站点序号的实数编码,将染色体定义为公汽线路的一条解路线中的站点号序列,在MATLAB中为一个没有重复数字的行向量来表示.设有n个站点的某个全排列为12(,,,)nxxx,则个体的染色体表示为12(,,,)nXxxx=,n=3957.(3)产生初始群体种群中每一个体为n(3957)个站点的一个全排列,随机生成m(m=30)个1~n的随机排列,得到m个个体的初始种群,m为种群大小,n为染色体长度.生成初始群体的具体算法的MATLAB程序实现见附件二.A、B初始群体的数据矩阵为303957´,由于数据太多,文中就不给出数据(其结果可运行程序得出).(4)适应度函数与染色体的选择在遗传算法进行搜索时只以适应度函数为依据,利用种群中个体每个的适应度值来进行搜索,适应度值是进化时优胜劣汰的依据,应用中总是根据问题的优化指标来定义.对于公汽线路问题,以个体对应路线所发的时间之和作为个体适应度,其适应度越小,表明该个体越优.则该个体对应[7]适应度值为:11111()()(1)niniikxxxxfXTCC-=+=+å其中1T(3(分钟))表示相邻公汽站平均行驶时间(包括停站时间),baxxC表示站点ax和bx之间的距离,1nxxC表示起始点与终点站之间的距离.一般来说,选择算子设计使得个体被选中并遗传到下一代群体中的概率与该个体的适应度大小有关.适应度是越高越好,而在公汽线路问题中,如果适应度是所经过的对应路线所花的时间之和,路线所花时间之和是越小越好