ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:69.71KB ,
资源ID:7470733      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7470733.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数学建模用matlAB编程实现的.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数学建模用matlAB编程实现的.docx

1、数学建模用matlAB编程实现的机械优化设计课 程 报 告专 业 机械设计及其自动化 班 级 0820132 学 号 02 07 44 学 生 张成顺 胡梦旭 庞显宏时 间 2011-10-21 题目:基于双种群遗传算法的公交路线查询问题1. 具体问题第29届奥运会于2008年8月在北京举行,届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公共交通工具(简称公汽,包括公汽、地铁等)出行. 北京市的公汽线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题. 针对市场需求,某公司准备研制开发一个解决公汽线路选择问题的自主查询计算机系统. 为了设计这样一个系统(核

2、心是线路选择的模型与算法),从实际情况出发,满足查询者的各种不同需求. 需要研究的问题如下:问题一:只考虑公汽线路情况,给出任意两公汽站点之间线路选择问题的一般数学模型与算法. 并根据基本参数设定中的数据,利用其模型与算法,求出6对起始站终到站之间的最佳路线,并要有清晰的评价说明. 见下表:123456起始站S3359S1557S0971S0008S0148S0087终点站S1828S0481S0485S0073S0485S3676其中基本参数设定:相邻公汽站平均行驶时间(包括停站时间):3分钟相邻地铁站平均行驶时间(包括停站时间):2.5分钟公汽换乘公汽平均耗时:5分钟(其中步行时间2分钟)

3、地铁换乘地铁平均耗时:4分钟(其中步行时间2分钟)地铁换乘公汽平均耗时:7分钟(其中步行时间4分钟)公汽换乘地铁平均耗时:6分钟(其中步行时间4分钟)公汽票价:分为单一票价与分段计价两种,标记于线路后;其中分段计价的票价为:020站:1元;2140站:2元;40站以上:3元地铁票价:3元(无论地铁线路间是否换乘)注:以上参数均为简化问题而作的假设,未必与实际数据完全吻合. 二、模型的假设1. 转车的次数控制在2次以内;2. 相邻公汽站平均行驶时间(包括停站时间):3分钟;3. 相邻地铁站平均行驶时间(包括停站时间):2.5分钟;4. 公汽换乘公汽平均耗时:5分钟(其中步行时间2分钟);5. 地

4、铁换乘地铁平均耗时:4分钟(其中步行时间2分钟);6. 地铁换乘公汽平均耗时:7分钟(其中步行时间4分钟);7. 公汽换乘地铁平均耗时:6分钟(其中步行时间4分钟);8. 公汽票价:分为单一票价与分段计价两种,标记于线路后,其中分段计价的票价为:020站:1元,2140站:2元,40站以上:3元;9. 地铁票价:3元(无论地铁线路间是否换乘);10. 知道所有站点之间的步行时间.三、符号说明C:只考虑公汽线路的情况下,每个个体对应路线总长;D:考虑公汽和地铁线路的情况下,每个个体对应路线部长;:相邻公汽站平均行驶时间(包括停站时间);:相邻地铁站平均行驶时间(包括停站时间);:第k个个体所对应

5、的适应度值;A:每个个体所对应的适应度比例;P:每个个体所对应的选择概率(适应度比例);:所有站点之间的步行时间;:表示转车换乘所耗时间之和.2. 解决方法 1.1 问题分析该问题是一个组合优化问题. 对于此类问题,只有当其规模较小时,才能求其精确解. 在本文中公汽路线总数与站点数是成指数型增长的,所以一般很难精确地求出其最优解,因而寻找出有效的近似求解算法就具有重要意义. 由于L406公汽线路的路线是环形的,而数据中没有标示出来,所以我们用相邻站点整体路线也相邻,判断出该公汽线路是环行的,所以应当作环行处理. 对于该问题,我们先求出其站点与站点之间的邻接矩阵(权用时间表示),其矩阵大小为,数

6、据量太多,不能输出,只能把放在内存中. 许多智能算法被用于求解两点间线路问题. 如禁忌搜索、模拟退火、蚁群算法等. 其中遗传算法是被研究最多的一种算法. 但标准遗传算法容易陷入局部极值解,出现“早熟收敛”现象. 为此人们提出了多种改进方法,如将遗传算子中的交叉算子进行改进,应用单亲遗传算法,将遗传算子与启发式算法结合等. 遗传算法的核心思想为自然选择,适者生存. 遗传算法作为一种模拟生物进化的一种算法,提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,具有自组织、自适应和自学习性. 其也是一种迭代算法,从选定的初始解出发,通过不断地迭代,逐步改进当

7、前解,直到最后搜索到最优解或满意解,其迭代过程是从一组初始解(群体)出发,采用类似于自然选择和有性繁殖的方法,在继承原有优良基因的基础上生成具有更好性能的下一代解的群体. 遗传算法的流程图见下图: 遗传算法流程图标准遗传算法是针对一个宏观的种群进行选择、交叉、变异三种操作. 双种群遗传算法是一种并行遗传算法,它使用多种群同时进化,并交换种群之间优秀个体所携带的遗传信息,以打破种群内的平衡态达到更高的平衡态,跳出局部最优. 在双种群遗传算法中,每一种群都是按照标准算法进行操作. 在操作时,首先建立两个遗传算法群体,即种群A和种群B,分别独立地进行选择、交叉、变异操作,且交叉概率、变异概率不同.

8、当每一代运行结束以后,产生一个随机数n,分别从A,B中选出最优染色体和n个染色体进行杂交,以打破平衡态. 因为在双种群遗传算法中,每一种群都是按照标准算法进行操作的. 由上分析,对于本问题,我们釆用双种群遗传(double populations genetic algorithm)在选择公汽路线问题中的应用. 遗传算法的创始人美国著名学者、密西根大学教授John H.Holland认为,可以用一组编码来模拟一组计算机程序,并且定义了一个衡量每个“程序”的度量:“适应值”. Holland模拟自然选择机制对这组“程序”进行“进化”,直到最终得到一个正确的“程序”为止. 编码方式有:二进制编码、

9、十进制编码和符号编码等方法. 整数编码与符号编码一般用于与顺序有关的组合优化方面的问题. 根据公汽路线的特点,本文的工作采用整数. 染色体长度与公汽路线结点个数相同,染色体的每个基因的编码即为公汽路线结点的编号. 因此,每条染色体由1到n(3957)的一个全排列组成. 在对染色体进行时,考虑到适应度比例法(轮盘赌选择法)与最佳个体保留法各自的优缺点,差异性较大,依据选择性集成思想,表现好的个体学习器越精确、差异越大,集成后可以获得的结果越好. 而竞争选择法集成了上述两种的优点克服了它们的缺点,因此本文釆用竞争选择法. 其中竞争选择法是釆用适应度比例法进行选择,交叉后产生下一代,再利用最佳个体保

10、留法将上一代的最佳个体直接保存下来,然后从新群体中淘汰一个适应度最差的个体,提高了问题求解的收敛速度,体现了遗传算法自适应环境的能力. 在对染色体进行交叉时,对于由整数编码的染色体,交叉操作会形成染色体中的非法基因,即重复基因. 所以实现染色体交叉要将重复的基因清除. 只使用一种交叉方法容易引起过早收敛,即“早熟”. 依据选择性集成思想 ,等概率使用两点交叉法和区域交叉法这两种交叉方法,扩大遗传算法的搜索范围,避免过早收敛. 在染色体的变异中,与交叉方法一样,如果使用一种变异方法,同样可能会引起“早熟”. 为了避免过早收敛,依据选择性集成思想选择邻居交换变异和两点交换变异这两种个性好且差异性较

11、大的变异方法,等概率使用以扩大搜索范围. 1.2 模型建立1.2.1 从起点站到终点站不转车,则双种群遗传算法的流程如下:(1)产生邻接矩阵 邻接矩阵的MATLAB程序实现见附件一. (2)基于站点序号的编码 一般来说种群规模越大越容易收敛到最优解,但是要保证其初始种群中的每个个体都是互异的,m不能设置过大,否则无法产生初始种群,且m过大其收敛速度必然降低,也会消耗更多的计算资源,并基于一般遗传算法中初始群体大小的选择,本文中取m=30. 公汽路线问题中每一种起点站到终点站的方案对应于解空间的一个解 ,解空间中的数据是遗传算法的表现形式,从表现到基因型的映射称为编码. 最初遗传算法是采用二进制

12、编码方法,但在大量实际问题中,二进制编码操作不简便,不易进行变异交叉操作,易产生大量非可行解,所以针对特殊的问题,可以灵活采用不同的编码方法. 本文在公汽线路求解中,采用基于站点序号的实数编码,将染色体定义为公汽线路的一条解路线中的站点号序列,在MATLAB中为一个没有重复数字的行向量来表示. 设有n个站点的某个全排列为,则个体的染色体表示为,n=3957. (3)产生初始群体种群中每一个体为n(3957)个站点的一个全排列,随机生成m(m=30)个1n 的随机排列,得到m个个体的初始种群,m为种群大小,n为染色体长度. 生成初始群体的具体算法的MATLAB程序实现见附件二. A、B初始群体的

13、数据矩阵为,由于数据太多,文中就不给出数据(其结果可运行程序得出). (4)适应度函数与染色体的选择在遗传算法进行搜索时只以适应度函数为依据,利用种群中个体每个的适应度值来进行搜索,适应度值是进化时优胜劣汰的依据,应用中总是根据问题的优化指标来定义. 对于公汽线路问题,以个体对应路线所发的时间之和作为个体适应度,其适应度越小,表明该个体越优. 则该个体对应为:其中(3(分钟)表示相邻公汽站平均行驶时间(包括停站时间),表示站点和之间的距离,表示起始点与终点站之间的距离.一般来说,选择算子设计使得个体被选中并遗传到下一代群体中的概率与该个体的适应度大小有关. 适应度是越高越好,而在公汽线路问题中

14、,如果适应度是所经过的对应路线所花的时间之和,路线所花时间之和是越小越好,为了使公汽线路问题的适应度与一般遗传算法中的适应度一致. 这里用选择概率来进行衡量. 则每个个体的选择概率(适应度比例)就是每个个体的适应度与所有个体适应度的总和之比,即:其中表示所有个体适应度的总和. 但当路径所花时间非常大(例如:10000),这样其适应度比例的最高数据位将在小数点后的第四位,这样不利于计算,为此要进行尺度变换. 为确保适应度有两位整数,此处将适应度放大倍数L(本题中 L=lOOO) 因此适应度比例的表达式为:遗传算法中选择算子设计经典的是用适应度成比例的概率方法 ,但是这里存在的问题是由于许多个体的

15、适应度比例很小几乎没有机会复制个体,从而被过早地淘汰. 这样整个群体多样性就无法得到保证,这里采用一种新的赌轮选择算子离散赌轮选择,将有效地避免了这个问题. 在本题中是由30个个体构成初始群体,即:,其所占的适应度比例分别是,在保持这个比例的情况下对这个取值范围放大1000倍. 按照顺序在11000内分别占不同的区间,当随机函数产生11000以内的时,即使是适应度比例最小的也有可能被选中,从而较好的保持了群体的多样性. 由上所述则可选择出适应力强的,淘汰适应力弱的个体从而得到总体适应能力强的群体. 经过选择算子得出总体适应能力强的A、B群体数据矩阵为,因数据量太大,文中就不给出具体数据. (5

16、)交叉重组依据选择性集成思想 ,等概率使用两点交叉法和区域交叉法这两种差异性较大的交叉方法,扩大遗传算法的搜索范围,避免过早收敛. 其中,两点交叉法是先随机设定两个基因交叉位置,将父辈两个个体在这两个交叉点之间的基因链码相互交换,从而形成新的个体;区域交叉法是随机在染色体中选择一个交叉区域,将第二条染色体的交叉区域加在第一条染色体的前面,第一条染色体的交叉区域加在第二条染色体的前面,在交叉区域后依次删除与交叉区域相同的基因,得到最后的两条子染色体. 将第(3)步得到的关于A,B种群的数据分别用两种交叉算法来实现操作. 其中一半数据用两点交叉法,另一半的数据用区域交叉法来进行染色体的交叉重组.

17、其具体算法的MATLAB程序实现见附件四. 经过交叉重组得出的A、B群体数据矩阵为,因数据量太大,文中就不给出具体数据. (6)染色体的变异为了避免过早收敛,依据选择性集成思想选择邻居交换变异和两点交换变异这两种个性好且差异性较大的变异方法,等概率使用以扩大搜索范围. 其中,邻居交换变异是产生一个随机数,将该数对应的基因和其后的基因交换;若该数对应的基因是染色体中的最后一个基因,则将该基因与染色体的第一个基因交换;两点交换变异是先产生两个不同的随机数,确定两个交换点,然后对个体在此两点的基因进行交换. 经过染色体变异得出的A、B群体数据矩阵为,因数据量太大,文中就不给出具体数据. (7)种群交

18、叉将两个种群中的最优解取出,再在每个种群中随机选取n个染色体,将这n+1个染色体互换,进入对方种群. 经过种群交叉得出的A、B群体数据矩阵为,因数据量太大,文中就不给出具体数据. (8)最佳个体保留法 要把群体中适应度最高的个体不经过配对交叉直接复制到下一代中,然后从新群体中淘汰一个适应度最差的个体. 分别对A、B进行独立的操作. 经过最佳保留法选择后得出的A、B群体数据矩阵为,因数据量太大,文中就不给出具体数据. (9)迭代的结束条件 在本文中,采用进化的代数N作为循环迭代过程的结束,如果等于N,则算法结束,输出适应值最高的解;否则,继续重复上述过程. 重复步骤(3),(4),(5),(6)

19、,(7),(8)依次进行循环迭代,本题中设定迭代次数为N=1000. 最后得到30个近似的最优解. 以上(2)(9)流程的MATLAB程序实现见附件二. (10)结果选出这30个近似最优解中以时间作为权值最小的那一组解作为题设中要求的近似最优解. 其中满足要求的基因链码(站点数)的顺序即是顾客所需从起始点到终点站的路线1.2.2 从起点站到终点站转一次车从起点站到终点站转一次车遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与从起点站到终点站不转车相同. 只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为:其中5(分钟)表

20、示公汽换乘公汽一次耗时(其中步行时间2分钟).除这之外,这一流程中的其他的原理没变. 1.2.3 从起点站到终点站转两次车从起点站到终点站转两次车遗传算法流程中基于站点序号的编码,交叉重组,染色体的变异,种群交叉,迭代的结束条件和结果的原理与从起点站到终点站不转车相同. 只有在适应度函数与选择流程中每一个个体所对应的适应度函数处有所改变,其函数为: 其中(分钟)表示公汽换乘公汽两次耗时(其中步行时间分钟).除这之外,这一流程中的其他的原理没变. 1.3 模型求解1.3.1从起点站到终点站不转车 由程序运行最终得出:找不一条路线使从起点站到终点站不转车. 1.3.2 从起点站到终点站转一次车起始

21、站第一次路线中转站第二次路线终点站S3359L436S3695L217S1828S0008L200S3092L282S0073S0971L013S2607L377S0485S0087-L454S1893L209S36761.3.3从起点站到终点站转两次车起始站路线一中转站一路线二中转站二路线三终点站S1557L084S1919L417S0871L447S0481S0148L308S1419L166S0248L469S04853. 程序代码 程序一%产生邻接矩阵clear;clc;load bssj;i3=zeros(3958,3958);for i1=1:520 for i2=2:87 for

22、 i4=2:90 a1=data(find(data(:,1)=i1)+2),i4); a2=data(find(data(:,1)=i1)+2,i2); if a1=0 & (i4-i2)=0 %a1不为空值时,把i3矩阵赋值 i3(a2,a1)=0; elseif a1=0 & (i4-i2)=1 i3(a2,a1)=3; elseif a1=0 & (i4-i2)1 i3(a2,a1)=inf; elseif a1=0 break end a3=data(find(data(:,1)=i1)+3),i4); a4=data(find(data(:,1)=i1)+3,i2); if a3=

23、0 & (i4-i2)=0 %a1不为空值时,把i3矩阵赋值 i3(a3,a4)=0; elseif a3=0 & (i4-i2)=1 i3(a3,a4)=3; elseif a3=0 & (i4-i2)1 i3(a3,a4)=inf; elseif a3=0 break end end endendfor j1=1:3958 for j2=1:3958 if j1=j2 & i3(j1,j2)=3 i3(j1,j2)=inf; elseif j1=j2 i3(j1,j2)=0; end endend 程序二%遗传算法流程实现%yic.mclear;clc;M=30;num=3957;popm

24、1=zeros(M,num); %生成初始群体1for k1=1:M popm1(k1,:)=randperm(num); %随机产生一个由自然数1到num 组成的全排列endpopm2=zeros(M,num); %生成初始群体2for k2=1:M popm2(k2,:)=randperm(num); %随机产生一个由自然数1到num 组成的全排列enda1=3395;a2=1828;a3=;a4=;for k3=1:30a3(k3)=abs(find(popm1(k3,:)=a1)-find(popm1(k3,:)=a2);%群体1中,不同个体a1和a2的站点差a4(k3)=abs(fi

25、nd(popm2(k3,:)=a1)-find(popm2(k3,:)=a2);%群体2中,不同个体a1和a2的站点差enda5=3.*a3+3956*3;%种群1的不同个体适应度a6=3.*a4+3956*3;%种群1的不同个体适应度a7=;a8=;a7=(a5./sum(a5).*1000;%种群1的不同个体选择概率a8=(a6./sum(a6).*1000;%种群2的不同个体选择概率a11=0;a12=;for k4=1:30 a11=a11+a7(k4);%种群1累加区间 a12(k4)=a11;enda13=0;a14=;for k5=1:30 a13=a13+a8(k5);%种群2

26、累加区间 a14(k5)=a13;enda15=unifrnd(1,1000,1,30);%种群1产生30个1-1000的均匀分布的随机数a16=unifrnd(1,1000,1,30);%种群2产生30个1-1000的均匀分布的随机数a17=;%种群1for k6=1:30if a15(k6)=a12(1) a17(k6)=1;elseif a12(1)(a15(k6) &(a15(k6)=a12(2) a17(k6)=2;elseif a12(2)(a15(k6) & (a15(k6)=a12(3) a17(k6)=3;elseif a12(3)(a15(k6) & (a15(k6)=a1

27、2(4) a17(k6)=4;elseif a12(4)(a15(k6) & (a15(k6)=a12(5) a17(k6)=5;elseif a12(5)(a15(k6) & (a15(k6)=a12(6) a17(k6)=6;elseif a12(6)(a15(k6) & (a15(k6)=a12(7) a17(k6)=7;elseif a12(7)(a15(k6) & (a15(k6)=a12(8) a17(k6)=8;elseif a12(8)(a15(k6) & (a15(k6)=a12(9) a17(k6)=9;elseif a12(9)(a15(k6) & (a15(k6)=a1

28、2(10) a17(k6)=10;elseif a12(10)(a15(k6) & (a15(k6)=a12(11) a17(k6)=11;elseif a12(11)(a15(k6) & (a15(k6)=a12(12) a17(k6)=12; elseif a12(12)(a15(k6) & (a15(k6)=a12(13) a17(k6)=13;elseif a12(13)(a15(k6) & (a15(k6)=a12(14) a17(k6)=14;elseif a12(14)(a15(k6) & (a15(k6)=a12(15) a17(k6)=15;elseif a12(15)(a1

29、5(k6) & (a15(k6)=a12(16) a17(k6)=16;elseif a12(16)(a15(k6) & (a15(k6)=a12(17) a17(k6)=17;elseif a12(17)(a15(k6) & (a15(k6)=a12(18) a17(k6)=18;elseif a12(18)(a15(k6) & (a15(k6)=a12(19) a17(k6)=19;elseif a12(19)(a15(k6) & (a15(k6)=a12(20) a17(k6)=20;elseif a12(20)(a15(k6) & (a15(k6)=a12(21) a17(k6)=21

30、;elseif a12(21)(a15(k6) & (a15(k6)=a12(22) a17(k6)=22;elseif a12(22)(a15(k6) & (a15(k6)=a12(23) a17(k6)=23;elseif a12(23)(a15(k6) & (a15(k6)=a12(24) a17(k6)=24;elseif a12(24)(a15(k6) & (a15(k6)=a12(25) a17(k6)=25;elseif a12(25)(a15(k6) & (a15(k6)=a12(26) a17(k6)=26;elseif a12(26)(a15(k6) & (a15(k6)=a12(27) a17(k6)=27;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1