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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数学建模结课论文Word文档下载推荐.docx

1、3、求出给定租赁点的系统的自行车调度方案。4、在给定约束下求租赁点的数目和位置。解决以上三个问题,本题所要求的问题就可以解决了。三、模型假设和符号说明3.1模型假设1、每个租赁点调度需求量为负,有多余的自行车可以提供给调度车则为正数;2、假设两个停车场就在某两个租赁点上,则选取的两个租赁点必须是有自行车盈余的点,并且调度车出发后,车上装载的自行车的数量就是租赁点的调度量。由于每个租赁点的自行车最大分配量小于调度车的最大装载量,所以总是能够将盈余量全部装在调度车上;3、每辆调度车从固定的某租赁点出发,最后又回到原来的点,以方便下次调度但是回到原点的时间可以不计。因为只有在调度完成后才会回到原点,

2、此时不需要调度,不再受时间限制;4、同一辆调度车只能经过同一个租赁点一次(除了作为车站的租赁点);5、每次到达下一个租赁点时,调度车上的自行车数量满足该租赁点需求,即对于需求点来说,只需用调度一次就完成调度;对于盈余点来说,调度车到达这些点要尽量多装。如果未达到调度车的限量就将该租赁点所有的盈余自行车装载,如果多出,则装满。3.2符号系统G-租赁点的集合-调度总时间(不包括完成调度后调度车返回原点的时间)。-调度车编号-租赁点间的最短距离-第k辆车调度完i后是否再调度j-是否使用调度车k-租赁点j的需要调度的量-i和j间的距离是否大于M千米-t时间段内租赁点j的需求量-j点的需求量占总需求量的

3、比例-从i点出发到达j租赁点的自行车数量-i点的单车数量a-建立一个租赁点耗资b-维护每辆自行车耗资p-每一个租赁点的耗资数P-新增租赁点的耗资总数四、模型建立4.1模型分类影响租赁点自行车分配的因素有:各租赁点的需求量、从租赁点离开的自行车、从其他租赁点起来的自行车等。若仅考虑需求量对租赁点分配自行车数目的影响,有如下模型: (1)式确定按照最终的需求量,以按比例分配的方式确定租赁点的分配量。(2)式给出需求量占总需求量的比例。以仅考虑需求量的方式确定的分配方式显然不是最佳方案。分配方案还和租赁点之间的距离有关。由题意可知,从在某个租赁点还车的概率与租车点和还车点的距离成反比,且假设居民的骑

4、行距离不超过M km,由此可得出下式:式(4-2-3)首先按照(4-2-1)式的方式产生一组分配方案,然后让其按照自行车间行驶的规则再次分配,产生新的一组分配方案,然后用(4-2-4)式校正,最终得到优化了的分配方案。4.3.1一辆调度车调度方案 在我们的求解问题中,第一问中调度车辆问2辆,为了问题是建模化简,我们先考虑调度车为一辆的情况,然后推广到多量的情况,这样就可以给对第一问和第三问的调度问题建立实际的解题模型。设拥有最大负荷为Q的调度车从指定的节点出发,对集合为G的节点进行调度。完成任务后返回原点。调度需求量和租赁点间的距离已经求得。整个调度方案可以由下列一组方程和约束条件确定:(4-

5、3-1)式为目标函数,求出最短距离;(4-3-2)确定了出发点,即必须从出发点出发,然后再回到出发点;(4-3-3)-(4-3-4)确定了调度车对特定节点只能调度1次,不能重复经过一个节点;(4-3-5)式保证调度车调度时调度车上的数量能够满足任意节点的调度需求量,同时装载量不能超过调度车的最大载重;(4-3-6)式确定了某一节点的总需求量就是从该租赁点离开去往其他租赁点的自行车的数量之和;(4-3-7)式确定了每一节点的调度量;(4-3-8)式给出总需求量、分配量、调度量从该节点出发的自行车数目和到达该节点的自行车的数量之间的关系。4.3.2多辆调度车调度方案设拥有最大负荷为Q的k调度车从指

6、定的节点出发,对集合为G的节点进行调度。(3-4-9)式为目标函数,求出最短距离;(3-4-10)式确定调度车的数目;(3-4-11)确定了出发点;(3-4-12)-(3-4-13)确定了每辆调度车对特定节点只能调度1次,不能重复经过一个节点;(3-4-14)式保证每次调度时调度车上的数量能够满足任意节点的调度需求量,同时装载量不能超过调度车的最大载重;(3-4-15)式确定了某一节点的总需求量就是从该租赁点离开去往其他租赁点的自行车的数量之和;(3-4-16)式确定了每一节点的调度量;(3-4-17)式给出总需求量、分配量、调度量从该节点出发的自行车数目和到达该节点的自行车的数量之间的关系。

7、(3-4-18)式保证不同的调度车不能再同一时刻到达同一个租赁点。根据以上一组方程和约束条件,就可以将调度问题相对完整的描述出来。这是一个优化问题,在求解过程中由众多的算法可以采用,但是考虑到算法的复杂性可标称的简洁性,我们采用的算法是启发式算法,这将在模型求解中详细讨论。 题目中新增的租赁点是在已知的若干点中选取的,因此,分析清楚选取租赁点的约束条件,就可以从最优解的角度得到新增的节点。建立租赁点时首先考虑的是各个点的需求量(已知),由于在不同时段的需求量不同,所以应当考虑平均需求、不同时段需求。所以首先我们应当确定加权平均比例,一保证确定的租赁点在全天达到最优。在这里引入一个加权平均比,取

8、决于我们实际问题的要求和调度问题的特点。首先将数据加权平均,有:再将每一个租赁点的耗资数额按照公式(4-4-1)求出最后将耗资数额加和,即求得满足式(5-2-2)的最大k值。考虑了需求量对新租赁点的影响之后,我们还需要考虑骑行规律对租赁点选取的影响。所谓运输规律就是:居民可以在任意一个租赁点还车,在某个租赁点还车的概率与租车点和还车点的距离成反比,且假设居民的骑行距离不超过M。于是仅考虑运输规律,我们引入一个方便因数,定义如下:Con用来衡量新设置的租赁点的合理程度,它与租赁点的分配量、常数、的乘积之和有关,其中,常数的定义如下:表示i租赁点能够到达其他节点的数目之和,越大表明该节点的辐射能力

9、越强,也越合理。在路程不超过M的范围内,租赁点i能够到达的节点越多,则常数越大。还要保证新增的节点数k尽可能地少。在新增租赁点的过程中不考虑随后的调度方案,因此在总建设经费的限制下,可以按照优化的方法求出方便因数的最小值。 在三期建设中,为了实现经开区更大的网点覆盖面积,进一步增设站点,新增了一批租赁站点并购进自行车。然而,更多的站点可能会导致部分租赁点的自行车短缺或堆积现象,从而降低了资源利用效率。为了探讨这个问题,我们必须对现有调度方案进行检验和矫正,更好的实现资源利用最大化。故对调度时间进行了计算,发现用两辆调度车进行自行车调度很难满足调度需求,调配时间超过限制时间,必须购置更多的调度车

10、辆,虽然会增加一定成本,但对整体的统筹有很大的意义。 将原有的站点与新增站点进行混合,重新根据密集度,自行车需求量等因素进行分组,根据分组情况配备调度车辆。若所分组数增多,则增加调度车辆的数目可以更快捷地实现调度需求。然后对每一组的调度方案进行独立分析,即求解则总调度时间:(k代表组数)具体建模思想与第一问的求解相似。Floyd算法的描述如下:设为从i到j的只以集合中的节点为中间节点的最短路径的长度。若最短路径经过点k,则;若最短路径不经过点k,则。因此, if () 综上,最短路径矩阵为:(单位:km) if elsek=k+1;根据反比例关系不难得出每个租赁点向2km内的各个租赁点发送的单

11、车数量为:根据归一化条件:综上可得出求得2km内的概率系数K的算法:s=0;if ;K=K s;根据各个租赁点发送出的单车概率可求得运行一次后的各个租赁点单车数目:据此可得出求解运行一次后的各个租赁点单车数目的算法:t=0;5.4 求解调度方案的启发式算法5.4.1算法简介启发式算法是依据有限的知识在短时间内找到问题解决方案的一种技术。在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解。在搜寻问题中,每个节点都有b个选择以及到达目标的深度d,一个毫无技巧的算法通常都要搜寻bd个节点才能找到答案。启发式算法借由使用某种切割机制降低了分叉率(branching fac

12、tor)以改进搜寻效率,由b降到较低的b分叉率可以用来定义启发式算法的偏序关系,例如:若在一个n节点的搜寻树上,h1(n)的分叉率较h2(n)低,则 h1(n) h2(n)。启发式为每个要解决特定问题的搜寻树的每个节点提供了较低的分叉率,因此它们拥有较佳效率的计算能力。我们主要应用启发式算法的这个优点来解决本题的调度问题。算法的流程图如下:图5-4-35.4.2算法内容以指定租赁店点为初始站点,对该租赁点的下一租赁点,搜索路径,搜索规则如下:(1)查找与初始点距离最近的N个租赁点(N值按照题目适当确定),并且按照距离由小到大的规律排序;(2)依次遍历排好序这N个租赁点,如果这个租赁点为需求点且

13、需求量大于车上的剩余自行车(无法满足一次性完成调配),则删除该节点,并重新得到新的N个租赁点。(3)计算每一层的自行车调度数量(取绝对值)和走过的距离,并求出两者的比值。(4)以搜索到的满足条件的N个租赁点分别为初始点,重复第(1)-(3)步。搜索深度为N。(5)求出每一次搜索路径自行车调度数量和走过距离的比值后,求和,选取比值之和最大的那条路径,则这条路径中初始节点对应的下一节点为调度方案的下一个调度点。(6)以下一个点为起始点,重复第(1)-(5)步,直到所有的车辆都被搬运完毕。算法如图所示:1、综合考虑租赁点的数目,搜索深度根据不同分组的站点数目N取35。2、如果租赁点是调度需求点,则调

14、度车上的自行车数目必须满足需求,一次性完成该租赁点的需求;如果该点是盈余点,则在不超过调度车最大负载的情况下,调度车要尽可能地多装;3、 调度的出发点选为某一个租赁点,从这一点出发完成调度后,需要返回原来的租赁点,但是返回租赁点的耗时不必计入总耗时;4、 两辆调运车不能同时到达一个租赁点。5.4.4算法流程图该算法的程序流程图如下:图5-4-1启发式算法能够解决在租赁点确定后的调度问题,在第一问、第三问中应用。5.5租赁点位置因为建立租赁点时应当考虑平均需求、最大需求两点,所以首先我们应当确定加权平均比例,我们认为,在两者比较中更加重要的是平均需求量,而最大需求量次之。我们经过查资料得知,有一

15、些类似的问题多采用0.6与0.4的比例,但是我们认为此次问题的影响因素中平均值的价值不仅仅为0.6。经过我们的讨论,我们决定采用0.65与0.35的比例六、模型检验1. 问题一中求解最短路径采用Floyd-Warshall算法,以动态规划为手段,解决任意两点间的最短路径,并通过Matlab求解;2. 问题一求解最短调度时间采用启发式算法,通过C+程序设计穷举算法,并搜索最佳调度方案,由于上述结果是通过穷举得到的,必然全局最优;3. 问题二引入方便因数,全面综合各方面因素,所以得到的站点分配为最优解。4. 问题三的方法与问题一和问题二相似,故所求调度方案为最佳调度方案。七、模型优缺点以及改进在确

16、定自行车的分配方案和调度方案时,这个问题是在已知节点具体的位置的条件下求解两个问题。我们对两个问题分开求解,即先确定最分配方案,再根据最优分配方案确定对应的最优调度方案。然而根据数学模型和实际情况得这两者并不是相互独立的,即问题最优解并非简单地两者最优解的结合。因此,我们的最优结果可能和实际情况存在偏差。为了方便问题的求解,我们做出了一些假设,比如假设每辆调度车从固定的某租赁点出发,最后又回到原来的点,而实际情况中会更局具体情况选择车辆停靠点。这些假设方便了求解,但实际上简化了问题的复杂度。7.1分配方案的优点租赁点自行车分配中,我们采用了一种创新的分配方案,在分配中不仅考虑了需求量对分配的影

17、响,而且还按照动态的目光,先给出合理的分配初值,然后让其按照自行车的骑行规律(即在某个租赁点还车的概率与租车点和还车点的距离成反比)自动分配若干次,每一次得出一个新的分配方案后和原来的方案比较,然后做出调整,最终得出最优的分配方案。这个分配方案的优点是突出的,主要体现在以下几点:1、 首先考虑了需求量对分配方案的影响,使之从一开始就是合理的,兼顾重要因素。2、 由于即在某个租赁点还车的概率是一个常数,所以常数因子对分配方案的影响可以通过一次优化最终补偿,最终的结果是形成的调度方案是满足骑行规律的最优解。3、 这个模型还有一个优点是,在校正后,能够使得需要调度的自行车数目达到最小,从而在计算调度

18、量时,为最优解提供保证。7.2调度方案的缺优点调度方案的优点是在租赁点不大的情况下,按照启发式算法一次性可以把相对来说最优的调度方案解出来,建模简单,求解也相对比较容易。调度方案的缺点重要体现在算法的局限性上。而启发式算法则试图一次提供全部目标。例如通常能发现很不错的解,但是也没办法证明它不会得到较坏的解;它通常可在合理时间解出答案,但也没办法知道它是否每次都可以这样的速度求解。总的来说,启发式算法有一定的不稳定性。可以用性能更好的遗传算法或者退火算法解决。7.3新增节点模型的优缺点在求解新增节点时,我们巧妙地引入了一个“方便因数”,用来衡量新增的租赁点的合理程度,用求解最优解的思路来求解新增

19、的租赁点和分配的自行车数目,模型简单明了,容易用现成的算法实现。但是方便因数并没有将影响新增租赁点的所有的因素都考虑进去,仅仅考虑了分配值、节点数、和邻近该租赁点的其他租赁点的数目。其他因素如是否能达到调配量最小等因素没有考虑,其次定义的一些量如不尽合理,原因是只考虑了新增加的单个节点所收到的影响,不没有考虑新增的节点间的相互影响,因此所得的结果有可能和最优解有一定的差距。7.4模型和算法的改进7.4.1算法的改进由于启发式算法的局限性,可以采用收敛速度更快的遗传算法(Genetic Algorithm,简称GA)和退火算法(Stimulated Annealing,简称SA)。与启发式算法相

20、比较其优点有:计算过程简单,通用,鲁棒性强,适用于并行处理,可用于求解复杂的非线性优化问题。在本题中,由于数据量相对较小,启发式算法还能够满足要求,为了使结果更加稳定,可以考虑退火算法和遗传算法。7.4.2模型的改进我们可以把调度问题看成一个赋有权值的图G,先要求出图G的最小生成树,使树上各边的总权和达到最小。然后基于最早生成树生成一个可行的最短行车路径。对上述30个租赁点重新编号,依次为1-30,用集合R表示。我们用0-1变量来表示公交车是否从租赁点i到租赁点j,即目标函数为寻找一条从起始点开始到各个节点生成的最优树,要求各条线路的权值和最小,即约束方程为:求解最小生成树的方法有破圈法、避圈

21、法、Dijkstra算法等。这里我们用避圈法求解,避圈法是指将图G中的边按照权数大小逐条考察,按不构成圈的原则加入到T(树)中,直到为止,即T的边数=G的顶点数-1为止。避圈法的算法是:1. 把G的边按权的大小整理成令.2.若含圈,则转3,否则转4.3令,若则转2;否则停止,G不存在最小生成树。4.令,5.若,结束,是最小生成树;否则转3.八、参考文献1 Clarke G and Wright J. Scheduling vehicles from a central depot to number of delivery pointsJ. Operations research, 1964,

22、 12(4): 12-182 刘登涛, 方文道, 章坚民, 等. 公共自行车交通系统调度算法J. 计算机系统应用, 2011, 20(9): 112-116.3 崔宏志, 龚加安. 带时间窗车辆路径问题的改进节约算法J. 纯粹数学与应用数学, 2011, 27(5): 688-693.4 柳祖鹏, 丁卫东, 程逸旻. 公共自行车系统站间调度优化研究J. 城市公共交通, 2011 (1): 39-42.5肖华勇.实用数学建模与软件应用.西安:西北工业大学出版社 2008.11附录距离计算:distance=zeros(53);for i=1:1:53 k=1; for j=1:53 if i=j

23、 distance(i,k)=abs(x1(i,1)-x1(j,1)+abs(x1(i,2)-x1(j,2); end k=k+1;end概率系数计算:K=; s=0; if z(i,j)=0 s=s+1/z(i,j);%输出概率的K s=1/s; K=K s;分块距离矩阵计算:distanceMb=zeros(20);2020 distanceMb(i,k)=abs(x1(Mb(i),1)-x1(Mb(j),1)+abs(x1(Mb(i),2)-x1(Mb(j),2);启发式算法代码:#includecmathfstreamstdlib.h#define ZD 20/定义站点数 ZD = Z

24、han Dian#define DE 3/搜索深度using namespace std;int numZD;/各个站点相应的多余、缺少的车辆的数目int route10*ZD; /车行走的路径bool IsEnd(int num)/判断是否所有的车都已经调度完毕 int i; for(i=0; iZD; i+) if(numi!=0) return false; else return true;int Pathfinding(int first,int vol,int depth)/寻路 找到下一个路径最优的站点 double distanceZDZD; /各个站点之间的距离 if(depth =0) return -1; int temp_distanceZD; int i,j,k;ii+) temp_distancei = i;/存储站点号码 for(j=i;jdistancefirsttemp_distancej) k = temp_distancei; temp_distancei = temp_distancej; temp_distancej = k; /排序 保留的是距离从小到大的站点号码 int bound = DE;/设置

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2