物流配送车辆调度模型

上传人:mg****85 文档编号:34181769 上传时间:2018-02-21 格式:DOC 页数:41 大小:339KB
返回 下载 相关 举报
物流配送车辆调度模型_第1页
第1页 / 共41页
物流配送车辆调度模型_第2页
第2页 / 共41页
物流配送车辆调度模型_第3页
第3页 / 共41页
物流配送车辆调度模型_第4页
第4页 / 共41页
物流配送车辆调度模型_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《物流配送车辆调度模型》由会员分享,可在线阅读,更多相关《物流配送车辆调度模型(41页珍藏版)》请在金锄头文库上搜索。

1、一般配送费用由车辆费用、工资费用、延迟费用和等待费用组成。车辆费用由燃料费、折旧费和维修费等变动费用组成,中心根据经营情况可核算出每车公里应摊的车辆费用。工资费用根据途中工作时间计算,若工作时间超过 8小时,则超时部分应按加班补助计算。客户通常要求货物在一定时间窗范围内送达,否则中心需支付惩罚费用。若提前到达,支付等待费用;若延迟到达,支付延迟费用。设单一配送中心向 l 个客户送货,第 i 个客户货运量 g 为,卸i货时间为 ,时间窗为 , ,每小时延迟费用 ,中心与客户、客户与客iutieti ir户两两间的最短运距、平均车速和车辆费用分别为(i,j=0,1,2,l;0 表示配送中心);可用

2、 m 类卡车送货,第 p 型卡车ijijijrvd和、有 辆,装载容量为 (p=0,1,2,,m);每小时等待费用为 r,行车补助和pnpv加班补助分别为每小时 s 和 es;途中运行到中午 12:00 和下午 6:00 时安排30 分钟吃饭时间,车辆当天返回配送中心,再设 为第 p 类车的第 q 辆配送gn的需一求点数( =0 表示未使用第 p 类车的第 q 辆车),确定车辆调度方案。pgn4.2.2物流配送车辆调度模型根据上述对问题的描述,可以构造数学模型,定义变量: ),(01jipqq经 过 弧 段表 示 车 辆 经 过 弧 段表 示 车 辆送 货不 给 顾 客表 示 车 辆 送 货给

3、 顾 客表 示 车 辆 iyipq得到配送调度模型如下:目标函数: li liiliiljmpmpnq pqpqnqijqij trtr eststxrdMinZpp1 10i11)()0,a( )((4.3)约束条件: liitf1%80)((4.4)pliipqvyg1(4.5)liympnqip, .211(4.6)pqljyqlijpq ;, .10(4.7)pqliyxpqljij ;, .101(4.8)式中:(4.3)为目标函数,即使车辆在完成配送任务时的最小配送费用;(4.4)为顾客满意度约束,即:每一顾客满意度的平均值必须到 80%以上;(4.5)为车辆的能力约束,即:某一车

4、辆所访问的全部客户的需求量不能超过车辆本身的载重量;(4.6)确保顾客 i 仅由第 p 类车的第 q 辆车完成配送任务;(4.7) (4.8) 为到达某一顾客的车辆唯一性约束,即每一顾客仅由一辆车服务;其中, 表示当顾客 i 的开始时间为 时,车辆在顾客 i 处的等待时间:)(itit,j 为 i 的前一个站点,当 include class bookInt smh,smo,lmh,lmo,heavy,s,e,income;Public:Book()smh=0;smo=0;lmh=0;lmo=0;heavy=0;s=0;e=0;income=0;Void setsmh(int sh)smh=s

5、h;Void setsmo(int sh)smo=sh;Void setlmh(int sh)lmh=sh;Void setlmo(int sh)lmo=sh;Void setheavy(int sh)heavy=sh;Void sets(int sh)s=sh;Void sete(int sh)e=sh;Void setincome(int sh)income=sh;Int getsmh()return smh;Int getsmo()return smo;Int getlmh()return lmh;Int getlmo()return lmo;Int getheavy()return h

6、eavy;Int gets()return s;Int gete()return e;Int getincome()return income;/smh 小型重箱子,smo 小型空箱子,lmh 大型重箱子,lmo 大型空箱子,/heavy 总重,s 起始点,e 目的,income 收入Class shipInt maxboxes,maxhboxes,heavy;Public:Ship(int mb,int mhb,int h)maxboxes=mb;maxhboxes=mhb;heavy=h;Int getmaxboxes()returm maxboxes;Int getmaxhboxes()

7、return maxhboxes;Int getheavy()return heavy;/maxboxes 最大集装箱个数;maxhboxes 最大重箱个数;heavy 最大重量/a 点 -1;b 点-2;c 点-3;d 点-4 ;e 点-5 ;f 点-6 ;/carinti10初始点/车编号规则 A 类 1to3;B 类 4to9;C 类 10;void main()Int i=0,j=0,profit=0;int Da33=5,3,2,2,3,4,1,4,5,shipinit10=6,4,1,6,3,1,2,6,5,3;Int db63=5,3,0,4,2,0,4,3,1,5,2,1,4,

8、3,0.5,3,1;Int flag10=0,0,0,0,0,0,0,0,0,0,;Int Dist66=0,50,100,150,200,50,50,0,50,100,150,100,100,50,0,50,100,150,150,100,50,0,50,200,200,150,100,50,0,250,50,100,150,200,250,0;Int Dno108=50,40,0,0,550,2,6,7000,0,0,0,60,0,5,6,3600,75,0,0,0,750,6,3,7500,0,0,80,0,1050,1,6,9600,40,30,0,0,420,6,4,5500,0,0

9、,90,40,1300,3,6,13200,80,0,0,0,810,3,6,8000,0,0,60,30,660,2,6,9000,0,20,50,20,750,4,6,8200,60,0,0,0,630,6,5,6000;Book no2;Ship a(80,50,1000),b(120,80,1500),c(150,100,1800);For(i=1;ia.getmaxhboxes()|(noi-1.getlmh()+noi-1.getlmo()+0.5*noi-1.getsmh()+0.5*noi-1.getsmo()a.getmaxboxes()|3*(noi-1.getlmh()+

10、noi-1.getlmo()+2.5*noi-1.getsmh()+2.5*noi-1.getsmo()+noi-1.getheavy()a.getheavy();ElseIf(noi-1.gets()!=6&(noi-1.gets()=da00|noi-1.gets()=da01|noi-1.gets()=da02)|(noi-1.gets()=6&(noi-1.gete()=da00|noi-1.gete()=da01|noi-1.gete()=da02)flag0=1;printf(no%d aln,i);Else flag0=-1;If(noi-1.gets()!=6&(noi-1.g

11、ets()=da10|noi-1.gets()=da11|noi-1.gets()=da12)|(noi-1.gets()=6&(noi-1.gete()=da10|noi-1.gete()=da11|noi-1.gete()=da12)flag1=1;printf(no%d a2n,i);Else flag1=-1;If(noi-1.gets()!=6&(noi-1.gets()=da20|noi-1.gets()=da21|noi-1.gets()=da22)|(noi-1.gets()=6&(noi-1.gete()=da20|noi-1.gete()=da21|noi-1.gete()

12、=da22)flag2=1;printf(no%d a3n,i);Else flag2=-1;If(noi-1.getsmh()+noi-1.getlmh()b.getmaxhboxes()|(noi-1.getlmh()+noi-1.getlmo()+noi-1.getsmh()+noi-1.getsmo()b.getmaxboxes()|noi-1.getheavy()b.getheavy();ElseIf(noi-1.gets()!=6&(noi-1.gets()=db00|noi-1.gets()=db01|noi-1.gets()=db02)|(noi-1.gets()=6&(noi

13、-1.gete()=db00|noi-1.gete()=db01|noi-1.gete()=db02)flag3=1;printf(no%d bln,i);Else flag3=-1;If(noi-1.gets()!=6&(noi-1.gets()=db10|noi-1.gets()=db11|noi-1.gets()=db12)|(noi-1.gets()=6&(noi-1.gete()=db10|noi-1.gete()=db11|noi-1.gete()=db12)flag4=1;printf(no%d b2n,i);Else flag4=-1;If(noi-1.gets()!=6&(n

14、oi-1.gets()=db20|noi-1.gets()=db21|noi-1.gets()=db22)|(noi-1.gets()=6&(noi-1.gete()=db20|noi-1.gete()=db21|noi-1.gete()=db22)flag5=1;printf(no%d b3n,i);Else flag5=-1;If(noi-1.gets()!=6&(noi-1.gets()=db30|noi-1.gets()=db31|noi-1.gets()=db32)|(noi-1.gets()=6&(noi-1.gete()=db30|noi-1.gete()=db21|noi-1.gete()=da32)flag6=1;printf(no%d b4n,i);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号