数学建模论文范本电气学院.docx
《数学建模论文范本电气学院.docx》由会员分享,可在线阅读,更多相关《数学建模论文范本电气学院.docx(38页珍藏版)》请在冰豆网上搜索。
![数学建模论文范本电气学院.docx](https://file1.bdocx.com/fileroot1/2023-4/20/2a863856-e591-4761-b3c1-ba488c9107fb/2a863856-e591-4761-b3c1-ba488c9107fb1.gif)
数学建模论文范本电气学院
论文题目:
基于双种群遗传算法的公交路线查询问题
姓名
学号
专业班级
1
基于双种群遗传算法的公交路线查询问题
摘要
本文探讨的是公交路线选择而开发的查询系统.以两站点之间所花时间的最小值作为主要目标函数,利用双种群遗传算法的原理建立公交路线选择数学模型,再通过MATLAB程序来实现整个流程和迭代,最终求出全局近似最优解,即最优权重线路,以起点和终点查询到近似的最优公交路线,并进行了误差分析,模型的评价与推广.
问题一:
仅考虑公汽线路,对数据进行初步分析和处理后,考虑到数据的复杂性和数据搜索范围的广度,我们应用比较成熟的双种群遗传算法建立数学模型.通过MATLAB强大的矩阵运算功能得到站点之间的邻接矩阵,用时间加权.其流程思想为基于双种群初始群体A、B,对染色体进行整数编码,用竞争选择法选择出较优个体作为繁殖下一代的母体,依据选择性集成思想,等概率使用两点交叉法和区域交叉法对染色体进行交叉操作与使用邻居交换变异和两点交换变异进行染色体变异操作,并结合MATLAB反复迭代,最终给出了六对起始站与终点站的六条近似最优路线.该法扩大遗传算法的搜索范围,避免过早收敛.
问题二:
在数据处理上用时间加权把地铁站点和汽车站点统一化,可得所有站点之间的邻接矩阵.其求解原理与问题一相似,但由转车方式的不同生成了8种不同的适应度函数,再根据适应度函数来进行问题的求解.
问题三:
我们将任意两个站点之间的步行时间作为矩阵中相应位置的权,这时构建的邻接矩阵中的权就由两站点之间公汽到公汽的时间,公汽到地铁的时间,地铁到公汽的时间,地铁到地铁的时间和两点之间的步行时间构成.但其求解原理与问题一相似,但由转车方式的不同就会生成不同的适应度函数,再根据适应度函数来进行问题的求解.
双种群遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,具有自组织、自适应和自学习性.
关键词
双种群遗传算法;竞争选择法;离散赌轮选择算子;选择性集成思想.
一、问题的重述
第29届奥运会明年8月将在北京举行,届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公共交通工具(简称公汽,包括公汽、地铁等)出行.北京市的公汽线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题.针对市场需求,某公司准备研制开发一个解决公汽线路选择问题的自主查询计算机系统.
为了设计这样一个系统(核心是线路选择的模型与算法),从实际情况出发,满足查询者的各种不同需求.需要研究的问题如下:
问题一:
只考虑公汽线路情况,给出任意两公汽站点之间线路选择问题的一般数学模型与算法.并根据基本参数设定中的数据,利用其模型与算法,求出6对起始站→终到站之间的最佳路线,并要有清晰的评价说明.见下表:
1
2
3
4
5
6
起始站
S3359
S1557
S0971
S0008
S0148
S0087
终点站
S1828
S0481
S0485
S0073
S0485
S3676
问题二:
同时考虑公汽与地铁线路,解决以上问题.
问题三:
假设知道所有站点之间的步行时间,给出任意两站点之间线路选择问题的数学模型.
其中基本参数设定:
相邻公汽站平均行驶时间(包括停站时间):
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.知道所有站点之间的步行时间.
三、符号说明
C:
只考虑公汽线路的情况下,每个个体对应路线总长;
D:
考虑公汽和地铁线路的情况下,每个个体对应路线部长;
:
相邻公汽站平均行驶时间(包括停站时间);
:
相邻地铁站平均行驶时间(包括停站时间);
:
第k个个体所对应的适应度值;
A:
每个个体所对应的适应度比例;
P:
每个个体所对应的选择概率(适应度比例);
:
所有站点之间的步行时间;
:
表示转车换乘所耗时间之和.
四、模型的建立与求解
(一)问题一
1.1问题分析
该问题是一个组合优化问题.对于此类问题,只有当其规模较小时,才能求其精确解.在本文中公汽路线总数与站点数是成指数型增长的,所以一般很难精确地求出其最优解,因而寻找出有效的近似求解算法就具有重要意义.
由于L406公汽线路的路线是环形的,而数据中没有标示出来,所以我们用相邻站点整体路线也相邻,判断出该公汽线路是环行的,所以应当作环行处理.对于该问题,我们先求出其站点与站点之间的邻接矩阵(权用时间表示),其矩阵大小为
,数据量太多,不能输出,只能把放在内存中.
许多智能算法被用于求解两点间线路问题.如禁忌搜索、模拟退火、蚁群算法等.其中遗传算法是被研究最多的一种算法.但标准遗传算法容易陷入局部极值解,出现“早熟收敛”现象.为此人们提出了多种改进方法,如将遗传算子中的交叉算子进行改进,应用单亲遗传算法,将遗传算子与启发式算法结合等.
遗传算法的核心思想为自然选择,适者生存.遗传算法作为一种模拟生物进化的一种算法,提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,具有自组织、自适应和自学习性.其也是一种迭代算法,从选定的初始解出发,通过不断地迭代,逐步改进当前解,直到最后搜索到最优解或满意解,其迭代过程是从一组初始解(群体)出发,采用类似于自然选择和有性繁殖的方法,在继承原有优良基因的基础上生成具有更好性能的下一代解的群体.遗传算法的流程图见下图:
遗传算法流程图
标准遗传算法是针对一个宏观的种群进行选择、交叉、变异三种操作.
双种群遗传算法是一种并行遗传算法,它使用多种群同时进化,并交换种群之间优秀个体所携带的遗传信息,以打破种群内的平衡态达到更高的平衡态,跳出局部最优.在双种群遗传算法中,每一种群都是按照标准算法进行操作.在操作时,首先建立两个遗传算法群体,即种群A和种群B,分别独立地进行选择、交叉、变异操作,且交叉概率、变异概率不同.当每一代运行结束以后,产生一个随机数n,分别从A,B中选出最优染色体和n个染色体进行杂交,以打破平衡态.因为在双种群遗传算法中,每一种群都是按照标准算法进行操作的.
由上分析,对于本问题,我们釆用双种群遗传
(doublepopulationsgeneticalgorithm)在选择公汽路线问题中的应用.
遗传算法的创始人美国著名学者、密西根大学教授JohnH.Holland认为,可以用一组编码来模拟一组计算机程序,并且定义了一个衡量每个“程序”的度量:
“适应值”.Holland模拟自然选择机制对这组“程序”进行“进化”,直到最终得到一个正确的“程序”为止.编码方式有:
二进制编码、十进制编码和符号编码等方法.整数编码与符号编码一般用于与顺序有关的组合优化方面的问题.根据公汽路线的特点,本文的工作采用整数
.染色体长度与公汽路线结点个数相同,染色体的每个基因的编码即为公汽路线结点的编号.因此,每条染色体由1到n(3957)的一个全排列组成.
在对染色体进行
时,考虑到适应度比例法(轮盘赌选择法)与最佳个体保留法各自的优缺点,差异性较大,依据选择性集成思想,表现好的个体学习器越精确、差异越大,集成后可以获得的结果越好.而竞争选择法集成了上述两种的优点克服了它们的缺点,因此本文釆用竞争选择法.其中竞争选择法是釆用适应度比例法进行选择,交叉后产生下一代,再利用最佳个体保留法将上一代的最佳个体直接保存下来,然后从新群体中淘汰一个适应度最差的个体
,提高了问题求解的收敛速度,体现了遗传算法自适应环境的能力.
在对染色体进行交叉
时,对于由整数编码的染色体,交叉操作会形成染色体中的非法基因,即重复基因.所以实现染色体交叉要将重复的基因清除.只使用一种交叉方法容易引起过早收敛,即“早熟”.依据选择性集成思想,等概率使用两点交叉法和区域交叉法这两种交叉方法,扩大遗传算法的搜索范围,避免过早收敛.
在染色体的变异
中,与交叉方法一样,如果使用一种变异方法,同样可能会引起“早熟”.为了避免过早收敛,依据选择性集成思想选择邻居交换变异和两点交换变异这两种个性好且差异性较大的变异方法,等概率使用以扩大搜索范围.
1.2模型建立
1.2.1从起点站到终点站不转车,则双种群遗传算法的流程如下:
(1)产生邻接矩阵
邻接矩阵的MATLAB程序实现见附件一.
(2)基于站点序号的编码
一般来说种群规模越大越容易收敛到最优解,但是要保证其初始种群中的每个个体都是互异的,m不能设置过大,否则无法产生初始种群,且m过大其收敛速度必然降低,也会消耗更多的计算资源,并基于一般遗传算法中初始群体大小的选择,本文中取m=30.
公汽路线问题中每一种起点站到终点站的方案对应于解空间的一个解,解空间中的数据是遗传算法的表现形式,从表现到基因型的映射称为编码.最初遗传算法是采用二进制编码方法,但在大量实际问题中,二进制编码操作不简便,不易进行变异交叉操作,易产生大量非可行解,所以针对特殊的问题,可以灵活采用不同的编码方法.本文在公汽线路求解中,采用基于站点序号的实数编码,将染色体定义为公汽线路的一条解路线中的站点号序列,在MATLAB中为一个没有重复数字的行向量来表示.设有n个站点的某个全排列为
,则个体的染色体表示为
,n=3957.
(3)产生初始群体
种群中每一个体为n(3957)个站点的一个全排列,随机生成m(m=30)个1~n的随机排列,得到m个个体的初始种群,m为种群大小,n为染色体长度.
生成初始群体的具体算法的MATLAB程序实现见附件二.
A、B初始群体的数据矩阵为
,由于数据太多,文中就不给出数据(其结果可运行程序得出).
(4)适应度函数与染色体的选择
在遗传算法进行搜索时只以适应度函数为依据,利用种群中个体每个的适应度值来进行搜索,适应度值是进化时优胜劣汰的依据,应用中总是根据问题的优化指标来定义.
对于公汽线路问题,以个体对应路线所发的时间之和作为个体适应度,其适应度越小,表明该个体越优.则该个体对应
为:
其中
(3(分钟))表示相邻公汽站平均行驶时间(包括停站时间),
表示站点
和
之间的距离,
表示起始点与终点站之间的距离.
一般来说,选择算子设计使得个体被选中并遗传到下一代群体中的概率与该个体的适应度大小有关.适应度是越高越好,而在公汽线路问题中,如果适应度是所经过的对应路线所花的时间之和,路线所花时间之和是越小越好,为了使公汽线路问题的适应度与一般遗传算法中的适应度一致.这里用选择概率来进行衡量.则每个个体的选择概率(适应度比例)就是每个个体的适应度与所有个体适应度的总和之比,即:
其中
表示所有个体适应度的总和.
但当路径所花时间非常大(例如:
10000),这样其适应度比例的最高数据位将在小数点后的第四位,这样不利于计算,为此要进行尺度变换.为确保适应度有两位整数,此处将适应度放大倍数L(本题中L=lOOO)因此适应度比例
的表达式为:
遗传算法中选择算子设计经典的是用适应度成比例的概率方法,但是这里存在的问题是由于许多个体的适应度比例很小几乎没有机会复制个体,从而被过早地淘汰.这样整个群体多样性就无法得到保证,这里采用一种新的赌轮选择算子——离散赌轮选择
,将有效地避免了这个问题.
在本题中是由30个个体构成初始群体,即:
,其所占的适应度比例分别是
,在保持这个比例的情况下对这个取值范围放大1000倍.
按照顺序在1~1000内分别占不同的区间,当随机函数产生1~1000以内的时,即使是适应度比例最小的也有可能被选中,从而较好的保持了群体的多样性.
由上所述则可选择出适应力强的,淘汰适应力弱的个体从而得到总体适应能力强的群体.
经过选择算子得出总体适应能力强的A、B群体数据矩阵为
,因数据量太大,文中就不给出具体数据.
(5)交叉重组
依据选择性集成思想,等概率使用两点交叉法和区域交叉法这两种差异性较大的交叉方法,扩大遗传算法的搜索范围,避免过早收敛.
其中,两点交叉法是先随机设定两个基因交叉位置,将父辈两个个体在这两个交叉点之间的基因链码相互交换,从而形成新的个体;区域交叉法是随机在染色体中选择一个交叉区域,将第二条染色体的交叉区域加在第一条染色体的前面,第一条染色体的交叉区域加在第二条染色体的前面,在交叉区域后依次删除与交叉区域相同的基因,得到最后的两条子染色体.
将第(3)步得到的关于A,B种群的数据分别用两种交叉算法来实现操作.其中一半数据用两点交叉法,另一半的数据用区域交叉法来进行染色体的交叉重组.
其具体算法的MATLAB程序实现见附件四.
经过交叉重组得出的A、B群体数据矩阵为
,因数据量太大,文中就不给出具体数据.
(6)染色体的变异
为了避免过早收敛,依据选择性集成思想选择邻居交换变异和两点交换变异这两种个性好且差异性较大的变异方法,等概率使用以扩大搜索范围.
其中,邻居交换变异是产生一个随机数,将该数对应的基因和其后的基因交换;若该数对应的基因是染色体中的最后一个基因,则将该基因与染色体的
第一个基因交换;两点交换变异是先产生两个不同的随机数,确定两个交换点,然后对个体在此两点的基因进行交换.
经过染色体变异得出的A、B群体数据矩阵为
,因数据量太大,文中就不给出具体数据.
(7)种群交叉
将两个种群中的最优解取出,再在每个种群中随机选取n个染色体,将这n+1个染色体互换,进入对方种群.
经过种群交叉得出的A、B群体数据矩阵为
,因数据量太大,文中就不给出具体数据.
(8)最佳个体保留法
要把群体中适应度最高的个体不经过配对交叉直接复制到下一代中,然后从
新群体中淘汰一个适应度最差的个体.分别对A、B进行独立的操作.
经过最佳保留法选择后得出的A、B群体数据矩阵为
,因数据量太大,文中就不给出具体数据.
(9)迭代的结束条件
在本文中,采用进化的代数N作为循环迭代过程的结束,如果等于N,则算法结束,输出适应值最高的解;否则,继续重复上述过程.
重复步骤(3),(4),(5),(6),(7),(8)依次进行循环迭代,本题中设定迭代次数为N=1000.最后得到30个近似的最优解.
以上
(2)—(9)流程的MATLAB程序实现见附件二.
(10)结果
选出这30个近似最优解中以时间作为权值最小的那一组解作为题设中要求的近似最优解.其中满足要求的基因链码(站点数)的顺序即是顾客所需从起始点到终点站的路线
1.2.2从起点站到终点站转一次车
从起点站到终点站转一次车遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
其中5(分钟)表示公汽换乘公汽一次耗时(其中步行时间2分钟).
除这之外,这一流程中的其他的原理没变.
1.2.3从起点站到终点站转两次车
从起点站到终点站转两次车遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
其中
(分钟)表示公汽换乘公汽两次耗时(其中步行时间
分钟).
除这之外,这一流程中的其他的原理没变.
1.3模型求解
1.3.1从起点站到终点站不转车
由程序运行最终得出:
找不一条路线使从起点站到终点站不转车.
1.3.2从起点站到终点站转一次车
起始站
第一次路线
中转站
第二次路线
终点站
S3359
L436
S3695
L217
S1828
S0008
L200
S3092
L282
S0073
S0971
L013
S2607
L377
S0485
S0087-
L454
S1893
L209
S3676
1.3.3从起点站到终点站转两次车
起始站
路线一
中转站一
路线二
中转站二
路线三
终点站
S1557
L084
S1919
L417
S0871
L447
S0481
S0148
L308
S1419
L166
S0248
L469
S0485
(二)问题二
2.1问题分析
考虑到加入地铁及公汽的交叉通道,在数据处理上用时间加权把地铁站点和汽车站点统一化,可得所有站点之间的邻接矩阵.其求解原理与问题一相似,但由转车方式的不同就会生成相对应的适应度函数,再根据适应度函来对问题求解.
2.2模型建立
2.2.1产生邻接矩阵
首先运用MATLAB强大的矩阵运算功能把其邻接矩阵得出,该矩阵是
由于数据量太大不能把其具体表示出来,只能把所得到的数据放在内存中,在运用的时候再从内存中调用.
2.2.2只坐地铁(不换乘)
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与仅考虑公汽线路从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
其中
表示相邻地铁站平均行驶时间(包括停站时间),
表示站点
和
之间的距离,
表示起始点与终点站之间的距离.
除这之外,这一流程中的其他的原理没变.
2.2.3地铁到地铁(换乘一或两次)
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与仅考虑公汽线路从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
其中
(2.5(分钟))表示相邻地铁站平均行驶时间(包括停站时间),
表示站点
和
之间的距离,
表示起始点与终点站之间的距离,
4(分钟)表示地铁换乘地铁平均耗时(其中步行时间2分钟).
除这之外,这一流程中的其他的原理没变.
2.2.4地铁到公汽
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与仅考虑公汽线路从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
除这之外,这一流程中的其他的原理没变.
2.2.5公汽到地铁
为了简化模型,将地铁换乘公汽平均耗时与公汽换乘地铁平均耗时都假设为7分钟,因为耗时相差不大.则地铁到公汽与公汽到地铁是一样的.
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与仅考虑公汽线路从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
除这之外,这一流程中的其他的原理没变.
2.2.6公汽到地铁再到公汽
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与仅考虑公汽线路从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
除这之外,这一流程中的其他的原理没变.
2.2.7公汽到地铁再到地铁
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与仅考虑公汽线路从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
除这之外,这一流程中的其他的原理没变.
2.2.8地铁到公汽再到公汽
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与仅考虑公汽线路从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
除这之外,这一流程中的其他的原理没变.
2.2.9地铁到公汽再到地铁
对于该问题遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与仅考虑公汽线路从起点站到终点站不转车相同.
只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:
除这之外,这一流程中的其他的原理没变.
2.3模型求解
2.3.1只坐地铁
由程序运行最终得出:
对六对起点到终点找不一条路线为只做地铁.
2.3.2地铁到地铁
由程序运行最终得出:
对六对起点到终点找不一条路线地铁到地铁.
2.3.3地铁到公汽
由程序运行最终得出:
对六对起点到终点找不一条路线为地铁到公汽.
2.3.4公汽到地铁
由程序运行最终得出:
对六对起点到终点找不一条路线为公汽到地铁.
2.3.5公汽到公汽
1.换一次车
起始站
第一次路线
中转站
第二次路线
终点站
S3359
L436
D12
L217
S1828
S0008
L200
D15
L282
S0073
S0971
L013
D08
L377
S0485
S0087-
L454
D24
L209
S3676
2.换两次车
起始站
路线一
中转站一
路线二
中转站二
路线三
终点站
S1557
L084
D35
L417
D01
L447
S0481
S0148
L308
D28
L166
D32
L469
S0485
2.3.6公汽到地铁再到地铁
由程序运行最终得出:
对六对起点到终点找不一条路线为公汽到地铁再到地铁.
2.3.7地铁到公汽再到公汽
由程序运行最终得出:
对六对起