基于线性规划的汽车租赁调度————7组路勇超郝遥迪孙娜报告梗概一.问题阐述二.问题分析三.问题算法设计四.实现结果五.模型评价一.问题阐述某城市有一家汽车租赁公司,该公司年初在全市有379辆可供租赁的汽车,这些汽车分布于20个代理点中。每个代理点的位置都以坐标形式给出,单位为千米。每两个代理点之间的距离约为其直线距离的1.2倍。根据给出的相关数据解决以下四个问题:1.在尽量满足需求的前提下,使总的转运费用最低,计算未来四周的调度方案;2.在实际过程中,由于汽车数量不足会带来的一部分的经济损失,给出使未来四周总的转运费用及短缺损失最低的汽车调度方案;3.全面对问题进行考虑,从公司获利、转运费用以及短缺损失等方面考虑,确定未来四周的汽车调度方案;4.从年度总获利最大方面考虑,分析该公司是否需要买新车;如果购买的话,假设只购买一款车型,考虑到购买数量与价格优惠幅度之间的关系,确定购买计划。简意在题设条件下:问题1:使总转运费最低,并尽量满足需求问题2:使总转运费和短缺费用最低问题3:在问题2基础上考虑租赁获利,使总获利最大问题4:确定购买新车计划,使年度总获利最大二.问题分析问题一分析:在尽量满足各代理点需求量的前提下,使总的转运费用最低,来考虑未来四周内每天调度方案。需考虑因素:各代理点当天供应量和需求量各代理点之间转运距离与转运费用各天之间的关系目标:总体最优模型选择:线性规划算法设计思想目标函数:29201201minnjinijnijijxmDZ:各点的转运距离Dijnijm:各点之间转运费用nijx:第n天从第i个代理点转运到第j个代理点的汽车数目约束条件:(1)第n天总需求大于379:使每一个站点实际供应量小于需求量——保证满足最大需求,每辆车都能被利用第n天总需求小于379:使每一站点需求量小于实际量,保证最大需求(2)每个站点每天实际车辆和为379(3)各个站点每天调运量小于实际量(4)每个站点调运后的车量等于现有量加上调进量,减去调出量——循环条件(5)车量的整数约束第二问分析:综合考虑转运费用和缺损费用,保证转运和缺损总费用最低。考虑因素:在第一问基础上考虑各站点缺损车辆数和单位缺损费用目标:总体费用最低模型选择:多目标规划最优化模型算法及设计思想约束条件:(2)每个站点每天实际车辆和为379(3)各个站点每天调运量小于实际量(4)每个站点调运后的车量等于现有量加上调进量,减去调出量——循环条件(5)车量的整数约束(1)第n天总需求大于379:使每一个站点实际量小于需求量——保证满足最大需求,每辆车都能被利用第n天总需求小于379:使每一站点需求量小于实际量,保证最大需求目标函数:nininieqP29120129201201njinijnijijxmDZ)min(ZPniq:第n个站点短缺量nie:第n个站点每辆车转运过程中的损失费第三问:分析:求总利润最大考虑因素:在问题二基础上引入租赁收益每个站点租赁量各站点单位租赁盈利目标:总体最优模型选择:多目标规划最优模型算法设计思想目标函数:PZCWmax2011291201jjinniiacC29201201njinijnijijamDZnininieqP291201表示公司的净收入第i个代理点的租赁收益,每辆车每日在第i个代理点的租出的汽车数目为,则总租赁收益用表示。WicnijaC约束条件:同问题二第四问分析:求年度总获利最大考虑因素:每辆车每天租赁收入买哪一款车以及数量全年租车总量购车费和保险费目标:年度总获利最大模型选择:MATLAB拟合曲线得盈利与新车数的关系,求最大值及最大值点算法设计思想每辆车每天租赁收入的一个平均值V:各个代理点租赁收入与租赁百分比进行加权平均,即V=0.3946万元。综合考虑购买价格及维修费用,购进新车时购进第八款车。年度盈利额=1/8[0.3946*全年租出车的总量*8—(购车费+保险维修费)*m]。多取几个m,求出相应的W用MATLAB拟合曲线,求最大值和最大值点MATLAB拟合曲线购买计划是买入24辆第八款车。算法实现及结果问题一二三均采用lingo来实现,lingo源代码在论文及附件中已有呈现,在此不再详列,以下是我们程序运行结果:问题一解:解得最优解为40.5187万元,调运方案为解的X部分问题二解:最优解为70.58544万元,调运方案为解中X部分问题三解:最优解为4040.111万元,调运方案为解中X部分模型评价优点:思路简洁,化繁为简利用数学工具matlab和lingo严格地对模型进行求解,更加科学缺点:模型较为单一第四问取点不够规范严密问题三部分程序代码:sets:point/1..20/:s,k;day/1..28/;link1(point,point):m,d;link2(day,point):Q,P,h,z;link3(day,point,point):x;endsetsdata:d=m=Q=s=k=max=@sum(link2(n,i):z(n,i)*k(i))-@sum(link3(n,i,j):x(n,i,j)*d(i,j)*m(i,j))-@sum(link2(n,i):h(n,i));P(1,1)=22;P(1,2)=18;P(1,3)=19;P(1,4)=18;P(1,5)=24;P(1,6)=16;P(1,7)=19;P(1,8)=17;P(1,9)=22;P(1,10)=15;P(1,11)=18;P(1,12)=23;P(1,13)=14;P(1,14)=18;P(1,15)=18;P(1,16)=17;P(1,17)=21;P(1,18)=23;P(1,19)=18;P(1,20)=19;@for(link2(n,i)|n#lt#28:p(n+1,i)=(p(n,i)-@sum(point(j):x(n,i,j))+@sum(point(j):x(n,j,i))));@for(link2(n,i):h(n,i)=@if((Q(n,i)-P(n,i))#le#0,0,Q(n,i)-P(n,i))*s(i));@for(link2(n,i):z(n,i)=@if(Q(n,i)#ge#P(n,i),P(n,i),Q(n,i)));@for(day(n):@sum(point(i):P(n,i))=379);@for(link3(n,i,j):(p(n,i)-x(n,i,j))=0);@for(link2(n,i):@gin(P(n,i)));@for(link3(n,i,j):@gin(x(n,i,j)));end