物流实验软件课程设计 孙茹雪概论.docx
《物流实验软件课程设计 孙茹雪概论.docx》由会员分享,可在线阅读,更多相关《物流实验软件课程设计 孙茹雪概论.docx(24页珍藏版)》请在冰豆网上搜索。
![物流实验软件课程设计 孙茹雪概论.docx](https://file1.bdocx.com/fileroot1/2023-1/26/c26d2400-52d6-4995-851d-f0c32dbae5fc/c26d2400-52d6-4995-851d-f0c32dbae5fc1.gif)
物流实验软件课程设计孙茹雪概论
物流管理专业
物流实验软件课程设计
班级物流121
学号201222281
姓名孙茹雪
指导老师房庆军
2016.01
该问题属于VRP(vehicleroutingproblem)模型。
在该模型中,基本条件为:
有m辆相同的车辆停靠在一个共同的源点v0,需要给24个顾客提供货物,顾客为v1,v2,…v24。
模型目标为:
确定所需要的车辆的数目N,并指派这些车辆到一个回路中,同时包括回路内的路径安排和调度,使得运输总费用C最小。
题目中给了两种车型,依维柯(载货容量为200,平均成本为2元/件.公里)和大货车(载货容量300,平均成本为3元/件.公里)。
因为每种车型并无固定成本的限制,所以在行驶路程和载货量相等的情况下,运输总费用和平均成本成正相关。
所以选择平均成本较小的依维柯。
解题思路:
首先按照配送频率,将24个便利店分为4组。
①一周一配:
1,2,3,4,5,6
②一周两配:
7,8,9,10,11,12
③两周一配:
13,14,15,16,17,18
④一月一配:
19,20,21,22,23,24
四组便利店中,最长配送周期为一月一配,所以以一个月为周期,研究所有便利店的配送路线和方案。
在一个月内,以周为单位,研究各周的配送方案。
因为存在一周两配的情况,在此默认为第二次配送在半周时进行,即第0.5周时配送。
第一周:
需要对所有便利店进行配送,即实施包括①,②,③,④四组便利店的配送方案,将此方案命名为A。
因为存在一周两配的便利店,只需对第②组便利店进行配送,即实施只包括②组便利店的配送方案,将此方案命名为B
第二周:
需要对①,②两组便利店进行配送,即实施包括①,②组便利店的配送方案,将此方案命名为C。
第三周:
需要对①,②,③三组便利店进行配送,即实施包括①,②,③组便利店的配送方案,将此方案命名为D。
第四周:
需要对①,②两组便利店进行配送,所以选择C方案。
以上为以一月为周期内的各周需采用的配送方案,分为A,B,C,D四种。
在A,B,C,D四种方案中,每种方案包含的便利店小组都不同。
为方便计算,将24个便利店虚化为坐标中24个点,并分别编号为v1----v24。
然后在各个方案中,先用扫描算法将该方案中所有的点进行分组,然后在每个小组内进行路线安排。
这样每个小组就形成独立的TSP模型,可以用lingo进行计算。
扫描算法的基本步骤:
①以起始点为极坐标系的原点,并以连通图中的任意一顾客和原点的连线定义为角度零,建立极坐标系。
然后对所有的顾客所在的位置,进行极坐标系的变换,全部都转换为极坐标系。
②分组。
从最小角度的顾客开始,建立一个组,按逆时针方向,将顾客逐个加入到组中,直到顾客的需求总量超出了负载限制。
然后建立一个新的组,继续按照逆时针方向,全部都转换为极坐标系。
③重复②的过程,直到所有的顾客都被分类为止。
④路径优化。
各个分组内的顾客点,就是一个个TSP模型的线路优化问题,采用适当的方法,对结果进行优化,选择一个合理的路线。
一.分组
A方案:
A方案涵盖了所有的需求点,先以扫描算法将需求点分组,然后用最近插入法计算每组的最优配送路线。
忽略各组配送频率的差别,将所有点按照扫描算法进行分组。
以(0,0)为原点,按逆时针方向扫描。
下面为依次扫描到的点及需求量。
序号
编号
X值
Y值
需求量
序号
编号
X值
Y值
需求量
1
V19
5
1
50
13
V16
-8
-5
28
2
V4
4
5
51
14
V21
-3
-2
40
3
V5
6
9
46
15
V18
-10
-7
32
4
V7
3
5
86
16
V17
-8
-9
35
5
V1
1
2
50
17
V9
-2
-3
73
6
V6
-1
6
43
18
V15
-2
-9
41
7
V3
-2
3
31
19
V12
-1
-6
51
8
V14
-7
9
34
20
V2
1
-3
81
9
V22
-5
4
7
21
V10
4
-5
36
10
V23
-9
6
17
22
V11
8
-9
80
11
V20
-3
1
6
23
V13
6
-5
30
12
V24
-6
-1
22
24
V8
7
-3
81
选择的车辆类型为依维柯,载货量为200。
从第一个点v19开始,需求量为50,第二个点v4,需求量为51,总需求=50+51=101<200,继续扫描。
第三个点v5需求量为46,总需求=50+51+46=147<200,继续扫描。
第四个点为v7,需求量为86,总需求量=50+51+46+86=233>200,所以舍弃第四个点。
所以第一组包含v19,v4,v5三个点。
第一组:
v19(5,1),v4(4,5),v5(6,9)三个点。
第二组:
v7(3,5),v1(1,2),v6(-1,6)三个点。
第三组:
v3(-2,3),v14(-7,9),v22(-5,4),v23(-9,6),v20(-3,1),v24(-6,-1),v16(-8,-5),v21(-3,-2)八个点。
第四组:
v18(-10,-7),v17(-8,-9),v9(-2,-3),v15(-2,-9)四个点。
第五组:
v12(-1,-6),v2(1,-3),v10(4,-5)三个点。
第六组:
v11(8,-9),v13(6,-5),v8(7,-3)三个点。
B方案:
B方案仅包括第二组需求点。
用扫描算法排列各点。
序号
1
2
3
4
5
6
编号
V7
V9
V12
V10
V11
V8
X值
3
-2
-1
4
8
7
Y值
5
-3
-6
-5
-9
-3
需求量
86
73
51
36
80
81
第一组为v7(3,5)一个点。
第二组为v9(-2,-3),v12(-1,-6),v10(4,-5)三个点。
第三组为v11(8,-9),v8(7,-3)两个点。
C方案
用扫描算法排序的结果为
序号
编号
X值
Y值
需求量
序号
编号
X值
Y值
需求量
1
V4
4
5
51
7
V9
-2
-3
73
2
V5
6
9
46
8
V12
-1
-6
51
3
V7
3
5
86
9
V2
1
-3
81
4
V1
1
2
50
10
V10
4
-5
36
5
V6
-1
6
43
11
V11
8
-9
80
6
V3
-2
3
31
12
V8
7
-3
81
第一组:
v4(4,5),v5(6,9),v7(3,5)三个点。
第二组:
v1(1,2),v6(-1,6),v3(-2,3),v9(-2,-3)四个点。
第三组:
v12(-1,-6),v2(1,-3),v10(4,-5)三个点。
第四组:
v11(8,-9),v8(7,-3)两点。
D方案
D方案包括1,2,3三组需求点。
扫描算法结果为:
序号
编号
X值
Y值
需求量
序号
编号
X值
Y值
需求量
1
V4
4
5
51
10
V17
-8
-9
35
2
V5
6
9
46
11
V9
-2
-3
73
3
V7
3
5
86
12
V15
-2
-9
41
4
V1
1
2
50
13
V12
-1
-6
51
5
V6
-1
6
43
14
V2
1
-3
81
6
V3
-2
3
31
15
V10
4
-5
36
7
V14
-7
9
34
16
V11
8
-9
80
8
V16
-8
-5
28
17
V13
6
-5
30
9
V18
-10
-7
32
18
V8
7
-3
81
第一组:
v4(4,5),v5(6,9),v7(3,5)三点。
第二组:
v1(1,2),v6(-1,6),v3(-2,3),v14(-7,9),v16(-8,-5)五个点。
第三组:
v18(-10,-7),v17(-8,-9),v9(-2,-3),v15(-2,-9)四个点。
第四组:
v12(-1,-6),v2(1,-3),v10(4,-5)三个点。
第五组:
v11(8,-9),v3(6,-5),v8(7,-3)三个点。
A,B,C,D方案共分出19个小组。
下面针对这19个小组,用lingo分别计算出每组的最优配送路线。
二.Lingo计算过程
Lingo要求用距离矩阵进行计算,首先用excel计算出24个点的距离矩阵。
元素
A1
A2
A3
A4
A5
A6
B1
B2
B3
B4
B5
B6
C1
C2
C3
C4
C5
C6
D1
D2
D3
D4
D5
D6
A1
0
5
3.2
4.2
8.6
4.5
3.6
7.8
5.8
7.6
13
8.2
8.6
10.6
11.4
11.4
14.2
14.2
4.1
4.1
5.7
6.3
10.8
7.6
A2
0
6.7
8.5
13
9.2
8.2
6
3
3.6
9.2
3.6
5.4
14.4
6.7
9.2
10.8
11.7
5.7
5.7
4.1
9.2
13.5
7.3
A3
_
_
0
6.3
10
3.2
5.4
10.8
6
10
15.6
9.1
11.3
7.8
12
10
13.4
12.8
7.3
2.2
5.1
3.2
7.6
5.7
A4
_
_
_
0
4.5
5.1
1
8.5
10
10
14.6
12.1
10.2
11.7
15.2
15.6
18.4
18.4
4.1
8.1
9.9
9.1
13
11.7
A5
_
_
_
_
0
7.6
5
12
14.4
14.1
18.1
16.6
14
13
19.7
19.8
22.8
22.6
8.1
12
14.2
12.1
15.3
15.6
A6
_
_
_
_
_
0
4.1
12
9.1
12.1
17.5
12
13
6.7
15
13
16.6
15.8
7.8
5.4
8.2
4.5
8
8.6
B1
_
_
_
_
_
_
0
8.9
9.4
10
14.9
11.7
10.4
10.8
14.9
14.9
17.8
17.7
4.5
7.2
9.2
8.1
12
10.8
B2
_
_
_
_
_
_
_
0
9
3.6
6.1
8.5
2.2
18.4
10.8
15.1
16.2
17.5
4.5
10.8
10
13.9
18.4
13.2
B3
_
_
_
_
_
_
_
_
0
6.3
11.7
3.2
8.2
13
6
6.3
8.5
8.9
8.1
4.1
1.4
7.6
11.4
4.5
B4
_
_
_
_
_
_
_
_
_
0
5.7
5.1
2
17.8
7.2
12
12.6
14.1
6.1
9.2
7.6
12.7
17
10.8
B5
_
_
_
_
_
_
_
_
_
_
0
9.5
4.5
23.4
10
16.5
16
18.1
10.4
14.9
13
18.4
22.7
16.1
B6
_
_
_
_
_
_
_
_
_
_
0
7.1
16.2
3.2
7.1
7.6
9.1
9.2
7.3
4.5
10.8
14.4
7.1
C1
_
_
_
_
_
_
_
_
_
_
_
_
0
19.1
8.9
14
14.6
16.1
6.1
10.8
9.5
14.2
18.6
12.6
C2
_
_
_
_
_
_
_
_
_
_
_
_
_
0
18.7
14
18
16.3
14.4
8.9
11.7
5.4
3.6
10
C3
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
7.2
6
8.2
12.2
10
7.1
13.3
16.6
8.9
C4
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
4
2.8
14.3
7.8
5.8
9.5
11
4.5
C5
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
2.8
16.4
11.2
8.6
13.3
15
8.2
C6
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
17
10.6
8.6
12.1
13
7.2
D1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
8
8.5
10.4
14.9
11.2
D2
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
3
3.6
7.8
3.6
D3
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
6.3
10
3.2
D4
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
4.5
5.1
D5
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
7.6
D6
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0
Lingo运行代码:
MODEL:
SETS:
CUST/1..6/:
U;
LINK(CUST,CUST):
DIST,X;
ENDSETS
DATA:
DIST=
0986712
906151816
8601487
615140410
7188406
121671060;
ENDDATA
N=@SIZE(CUST);
MIN=@SUM(LINK:
DIST*X);
@FOR(CUST(K):
@SUM(CUST(I)|I#NE#K:
X(I,K))=1;
@SUM(CUST(J)|J#NE#K:
X(K,J))=1;
@FOR(CUST(J)|J#GT#1#AND#J#NE#K:
U(J)>=U(K)+X(K,J)-
(N-2)*(1-X(K,J))+
(N-3)*X(J,K)
);
);
@FOR(LINK:
@BIN(X));
@FOR(CUST(K)|K#GT#1:
U(K)<=N--(N-2)*X(K,1);
U(K)>=1+(N-2)*X(K,1)
);
END
A方案:
第一组:
v19,v4,v5
距离矩阵:
V0
V19
V4
V5
V0
----
5.1
6.4
10.82
V19
----
4.1
8.1
V4
----
4.5
V5
----
Lingo运算结果如下:
最优路线为1-3-4-2-1,对应表中的v0-v4-v5-v19。
最短距离为:
24.1
运输费用:
2*(51+46+50)*6.4+2*(46+50)*4.5+2*50*8.1=3588
考虑到需求量,v0-v19-v4-v5显然更优。
最短距离:
5.1+4.1+4.5+10.82=24.52
运输费用:
2*(50+51+46)*5.1+2*(51+46)*4.1+2*46*4.5=2708.8
第二组:
V7,v1,v6
距离矩阵为:
V0
V7
V1
V6
V0
----
5.83
2.24
6.08
V7
----
3.6
4.1
V1
----
4.5
V6
----
lingo运算结果为
最优路线为1-3-4-2-1,对应表中的v0-v1-v6-v7-v0
最短距离为16.67
运输费用:
2*(50+43+86)*2.24+2*(43+86)*4.5+2*86*5.83=2965.68
考虑到需求量,V0-v1-v7-v6-v0更优。
距离:
2.24+3.6+4.1+6.08=16.02
2*(50+43+86)*2.24+2*(43+86)*3.6+2*43*4.1=2083.32
以下不再重复lingo运行过程,只给出最终结果。
第三组:
v3,v14,v22,v23,,v20,v24,v16,v21
距离矩阵为:
V0
V3
V14
V22
V23
V20
V24
V16
V21
V0
----
3.61
11.4
6.4
10.82
3.16
6.08
9.43
3.61
V3
----
7.8
3.2
7.6
2.2
5.7
10
5.1
V14
----
5.4
3.6
8.9
10
14
11.7
V22
----
4.5
3.6
5.1
9.5
6.3
V23
----
7.8
7.6
11
10
V20
----
3.6
10
3
V24
----
4.5
3.2
V16
----
5.8
V21
----
lingo运算结果为:
最优路线:
1-9-8-7-5-3-4-2-6-1,对应表中的v0-v21-v16-v24-v23-v14-v22-v3-v20-v0。
最短距离:
39.07。
运输费用:
2*(40+28+22+17+34+7+31+6)*3.61+2*(28+22+17+34+7+31+6)*5.8+2*(22+17+34+7+31+6)*4.5+2*(17+34+7+31+6)*7.6+2*(34+7+31+6)*3.6+2*(7+31+6)*5.4+2*(31+6)*3.2+2*6*2.2=6814.7
第四组:
v18,v17,v9,v15
距离矩阵为
V0
V18
V17
V9
V5
V0
----
12.21
12.04
3.61
10.82
V18
----
2.8
8.9
22.6
V17
----
8.5
6
V9
----
6
V5
----
lingo运算结果为:
最优路线:
1-4-5-3-2-1,对应表中的v0-v9-v5-v17-v18-v0
最短路径:
30.62。
运输费用:
2*(73+46+35+32)*3.61+2*(46+35+32)*6+2*(35+32)*6+2*32*2.8=3682.12
第五组:
v12,v2,v10
距离矩阵为
V0
V12
V2
V10
V0
----
6.08
3.16
6.4
V12
----
3
5.1
V2
----
3.6
V10
----
lingo运算结果:
最优路线为1-4-2-3-1,对应表中的v0-v10-v12-v2-v0
最短距离为17.66。
运输费用:
2*(36+51+81)*6.4+2*(51+81)*5.1+2*81*3=3982.8
考虑到需求量,v0-v12-v10-v0更优。
距离=3.16+3+5.1+6.4=17.66
运输费用=2*(81+51+36)*3.16+2*(51+36)*3+2*36*5.1=1950.96
第六组:
v11,v13,v8
距离矩阵为:
V0
V11
V13
V8
V0
----
12.04
7.81
7.62
V11
----
4.5
6.1
V13
----
2.2
V8
----
lingo运算结果为:
最优路线为1-3-2-4-1,对应表中的v0-v13-v11-v8-v0
最短距离为26.03。
运输费用:
2*(30+80+81)*7.81+2*(80+81)*4.5+2*81*6.1=5420.62
考虑到需求量,v0-v8-v13-v11-v0更优。
距离:
7.62+2.2+4.5+12.04=26.36
运输成本:
2*(81+30+80)*7.62+2*(30+80)*2.2+2*80*4.5=4114.84
B方案:
第一组:
v7
该组只有一个点,无需排序。
距离为:
8
运输费用:
2*4*86=686
第二组:
v9,v12,v10
距离矩阵为
V0
V9
V12
V10
V0
----
3.61
6.08
6.4
V9
----
8.5
3.2
V12
----
5.1
V10
----
lingo运算结果为:
最优路线为:
1-4-3-2-1,对应表中的v0-v10-v12-v9-v0
最优距离为18.3
运输费用:
2*(36+51+73)*6.4+2*(51+73)*5.1+2*73*3.61=3839.86
考虑到需求量,v0-v9-v10-v12-v0更优。
距离:
3.61+3.2+5.1+6.08=17.99
运输费用:
2*(