B林区汽车修理网的布局问题.docx
《B林区汽车修理网的布局问题.docx》由会员分享,可在线阅读,更多相关《B林区汽车修理网的布局问题.docx(16页珍藏版)》请在冰豆网上搜索。
![B林区汽车修理网的布局问题.docx](https://file1.bdocx.com/fileroot1/2023-1/25/edd2c498-00cd-48b5-a61b-03f9fe7b5c10/edd2c498-00cd-48b5-a61b-03f9fe7b5c101.gif)
B林区汽车修理网的布局问题
一、问题重述
在林业生产中,汽车是主要的运输工具。
为了确保汽车在使用中有良好的技术状态和较长的使用寿命,需定期对汽车进行保养与维修,大修是重要的一个环节。
但目前各林业局都设有大修厂,由于厂点多、规模下、技术落后等原因,导致了大修成本高、质量低等问题。
现需对林业区的大修厂作出合理布局,使林区整体经济效益最优。
表一(见附录1)给出了某林区某年各大修厂的厂量及成本。
表二(见附录2)给出了某林区各大修厂的现有生产规模和车辆数。
图1(见附录3)的林区18个林业局的分布图。
各线段上的数字是两林业局的距离(单位:
公里,线的长短和真实的距离不成比例,()里的数字是林业局编号)。
当把一个林业局的汽车送到另一个林业局大修时,每辆车的运送费(双程):
公路每公里6元,铁路每公里5元。
假设每辆汽车一年大修一次;不考虑关闭、扩建大修厂的费用。
分别对以下几种情况求出大修方案,作出大修厂的布局规划。
1.分协作区大修;
2.不分协作区大修(整个林区);
3.拟定对林业局
(2)、(5)、(8)、(14)、(16)大修厂进行扩建,使生产规模分别增加80辆;
4.为了使使林区整体经济效益最优将汽车集中到问题3中拟定的两个厂点大修,给出是厂点和生产规模,并给出更好的建议。
二、模型假设
结合本题的实际,为了确保模型求解的准确性和合理性,我们排除了一些位置因素的干扰,提出以下几点假设:
1.公路与铁路的交叉点有个站台,公路与铁路运输可以随时转换;
2.假设每辆汽车一年只大修一次;
3.不考虑关闭,扩建大修厂的费用;
4.假设每个大修厂的汽车单位维修费都保持不变。
三、符号说明
为了便于问题的求解,我们给出以下符号说明:
(其他未说明的符号在文中第一次出现时会做详细的说明。
)
第j号林业局修理厂的生产规模
第i号林业局的汽车数
第i号林业局的一辆汽车送往第j号林业局修理厂修理上的运输费用(双程)
第i号林业局的汽车送往第j号林业局修理厂修理的汽车总数
第j号林业局修理厂修理一辆汽车的修理费用
第
个大修厂是否建立(0表示关闭,1表示不关闭)
四、问题分析
4.1问题重要性分析
林业生产是以盈利为目标,每个大修厂的单位成本和相应的运费都会对林区的经济效益产生影响,所以,需要将林业区的大修厂作出合理布局并且对不同林区的汽车确定运输费用最少的运输路线。
4.2问题一分析
由于题目要求的是分协作区大修,我们将题目划分的一区、二区、三区、四区、五区分别作为一个整体,每个林业局的汽车只能在对应协作区内进行维修,在不同的协作区内,以整体所需的最少维修费用为目标函数,大修厂的生产规模为约束条件,从而对大修厂进行分配,确定每个林业局的汽车相应的维修点和运输路线。
4.3问题二分析
对于本问题,将整个林区作为一个整体,每个林业局的汽车都可以在任意林业局的大修厂进行维修,然后以整个林区所需的最少维修费用为目标函数,个大修厂的生产规模为约束条件,从而对大修厂进行分配,确定每个林业局的汽车相应的维修点和运输路线。
4.4问题三分析
问题三的思想与问题二相同,也是在不分协作区的情况下进行,只是在问题二的基础上将林业局
(2)、(5)、(8)、(14)、(16)大修厂进行扩建,使生产规模分别增加80辆。
4.5问题四分析
问题四第一小问中,针对
(2),(5),(8),(14),(16)中两个点的情况,因为我们要考虑建和不建的问题,所以在第三问的基础上,引入了0-1规划模型,通过lingo求其最优解,然后与之前的结果进行比较看哪一个更好;而在第二小问中,由于要全局考虑,所以对第一小问中的模型进行改进,考虑全局最优的解,用软件求得最优解,同样与前几个结果进行比较,验证我们所得出方案的正确性。
五、模型的建立与求解
经过以上的分析和准备,我们将逐步建立以下数学模型,进一步阐述模型的实际建立过程。
5.1问题一的模型建立及求解
问题一要求分协作区大修,如题目中的表二所示,十八个林业局被分成五个区:
1、2、3在一区;4、5、6在二区;7、8、9、10、11在三区;12、13、14在四区;15、16、17、18在五区。
以区为单位,区中林业局的汽车只能在所在区的修理厂进行大修。
目标函数为林区所有汽车的修理花费之和,修理花费包括两个部分:
运输费用,修理费用,因此建立模型:
第一区1、2、3号林业局中第i号林业局的一辆汽车送往第j号林业局修理厂修理上的运输费用(双程)如表三所示:
表三
林业局
修理厂
1
2
3
1
0
180
420
2
180
0
240
3
420
240
0
目标函数:
约束条件为:
第二区4、5、6号林业局中第i号林业局的一辆汽车送往第j号林业局修理厂修理上的运输费用(双程)如表四所示:
表四
林业局
修理厂
4
5
6
4
0
300
440
5
300
0
500
6
440
500
0
目标函数:
约束条件为:
第三区7、8、9、10、11号林业局中第i号林业局的一辆汽车送往第j号林业局修理厂修理上的运输费用(双程)如表五所示:
表五
林业局
修理厂
7
8
9
10
11
7
0
300
840
540
600
8
300
0
540
240
300
9
840
540
0
300
840
10
540
240
300
0
540
11
600
300
840
540
0
目标函数:
约束条件为:
第四区12、13、14号林业局中第i号林业局的一辆汽车送往第j号林业局修理厂修理上的运输费用(双程)如表六所示:
表六
林业局
修理厂
12
13
14
12
0
180
240
13
180
0
200
14
240
200
0
目标函数:
约束条件为:
第五区15、16、17、18号林业局中第
号林业局的一辆汽车送往第
号林业局修理厂修理上的运输费用(双程)如表七所示:
表七
林业局
修理厂
15
16
17
18
15
0
320
240
500
16
320
0
120
180
17
240
120
0
300
18
500
180
300
0
目标函数:
约束条件为:
根据以上模型,我们用lingo进行求解(程序见附录),求解所得结果如图2所示:
图2林业局汽车修理分配图
求得各分区最小费用为一区428100元,二区1114000元,三区2075000元,四区1376800元,五区1186900元;整个林区的总费用为6180800元。
5.2问题二的模型建立及求解
问题二将五个区视为一个整的区,建立一个整体规划的模型,其方法与第一问的相同。
在这个整体的区域里,每一辆汽车都可能运送到其它任意修理厂进行修理。
其整体规划的模型如下:
目标函数:
约束条件为:
整个林区中第
号林业局的一辆汽车送往第
号林业局修理厂修理上的运输费用(双程)如附录表8所示。
对以上模型,我们用lingo进行求解(程序见附录),求解所得结果如图3所示:
图3
求得林区所需总的维修费为6133800元。
5.3问题三的模型建立及求解
问题三同样将整个林区作为一个整体,每个林业局的汽车都可以在任意林业局的大修厂进行维修,我们建立以下模型:
目标函数:
约束条件为:
对以上模型,用lingo进行求解,求解所得结果如图4所示:
图4
求得林区所需总的维修费为5861400元。
5.4问题四的模型建立及求解
5.4.1集中到问题三种拟定的两个场点进行大修的问题
第四问是基于第二问和第三问基础上的,要求从第三问的五个修理厂选择两个修理厂,让所有的汽车都到这两个修理厂修理,并且这两个修理厂的生产规模不受限制。
这样用第二问的方法,只要再在第二问的基础上再加一个
规划,建立
规划模型,并且用lingo解。
对18个修理厂进行
规划,当为0表示该修理厂关闭,为1表示该修理厂不关闭。
这样就有16个“0”,2个“1”,二这两个“1”还要在第三问中的五个修理厂中选出,分别为2、5、8、14、16号修理厂。
那么这五个修理厂对应的五个
变量之和为2,目标位选出两个修理厂,使得总的花费最少。
目标函数:
约束条件:
将其用lingo编程计算的到:
最小费用为5771100元。
5.4.2我们建议的最好的方案
纵观整个题目,发现一辆的修理费的差量可以让这辆车开很远,于是大胆猜测修理厂的关闭与不关闭取决于它的修理费的多少。
根据个林业局生产规模与单位成本折线图的进行分析,见下图5所示:
图5
选出了个修理厂:
3、8、14、18。
所有的汽车全部送到这4个修理厂修理,并且以就进原则进行分配。
结果为:
1、2、3、4、5、6号林业局的所有汽车到3号琉璃厂修理;7、8、9、10、11、16号林业局的所有汽车到8号修理厂修理;12、13、14、15、17号林业局的所有汽车都到14号修理厂修理;而18号林业局的汽车就在自己的修理厂进行修理。
因此四个修理厂的生产规模分别为270辆、500辆、345辆、55辆。
在此模型中将3、8、14号修理厂的上产规模从原来的40、200、180增加到270、500、345,而18号修理厂保持不变,这样得到的总费用为5582650元。
以上模型是假设得到的,没有科学依据,要给出最好的方案,那么就要进行全局考虑,还是用0-1规划对18个修理厂进行规定。
当为“0”表示该修理厂关闭,当为“1”表示该修理厂不关闭。
18个修理厂的开关闭不受限制,可能开2个,也可能开5个,取决于最省钱的那一种。
所有的汽车都到不关闭的修两场进行修理,并且这些不关闭的修理厂的生产规模不受限制,建立如下模型:
目标函数:
约束条件:
对以上模型,用lingo进行求解,求解所得结果如图6所示:
求得林区所需总的维修费为5582650元,比集中到两个场点节约188442元。
因此,我们建议采取这种方案。
六、模型评价与改进
6.1模型的评价:
1.模型的优点:
(1)
规划,使得修理厂关闭与不关闭跟好的表示,直观且便于用lingo编程;
(2)用了Flody算法,容易理解,可以算出任意两个节点之间的最小运费,代码编写简单;
(3)用整数规划大方法,变量的值一定要为整数,比较容易地解决大量变量的问题。
2.模型的缺点:
(1)用笔算的方法算出任意两点间的最小运费,若遇到网格状的路线则步伐笔算;
(2)Flody算法的时间复杂度比较高,不适合计算大量数据,对于小量计算还可以。
6.2模型的改进:
在实际问题中,这样的模型就会出现较多的问题,比如说人力资源的管理,修理厂物资的分配,在该模型中都没有考虑到。
这样按第四问的第二小问的方案,得到费用最少的模型,但在这4个修理厂中,除了18号修理厂比较少外,都比较均衡。
考虑到18号修理厂的修理车辆较少,开修理厂需要花费很多的资金,所以建议把18号修理厂关闭,将18号林业局的汽车运送到8号修理厂修理,这样模型应该更加好。
七、模型推广
在生产规模不变,修理厂不扩建的情况下,不分协作区最小费用比分协作区最小费用要小。
分协作区可以减少修理厂的开销,但部分的话就会使得分配过于分散。
一个林业局的汽车分配到多个修理厂修理,这样会消耗大量的人力和物力,不太靠谱。
当全部集中到几个修理费比较便宜的修理厂修理,这样修理厂就会竟来大量工作,则会使得修理厂的管理出现问题,难免会出现修理上的错误,所以修理厂过于集中虽然花费比较少,但是会出现大差错,修理厂还是多点好,那就要推广到更深层次进行分析了。
八、参考文献
[1]谭永基等,数学模型,上海:
复旦大学出版社,1996年;
[2]田志立等,改进的Flody算法及其在交通分配中的应用,清华大学出版社,1994年;
[3]陈光亭等,数学建模,高等教育出版社,2010年;
[4]卓金武,MATLAB在数学建模中的应用,北京航空航天大学出版社,2010年;
九、附录
附录一:
表一
林业局
1
2
3
4
5
6
7
8
9
产量(辆)
5
25
20
10
20
15
40
190
75
单位成本(元/辆)
5700
4850
4300
5500
6400
6500
5500
4500
5800
林业局
10
11
12
13
14
15
16
17
18
产量(辆)
45
25
40
40
130
45
110
50
60
单位成本(元/辆)
6000
6100
7200
5600
4700
5600
5000
5300
5100
附录二:
表二
协作区
一区
二区
三区
四区
五区
林业局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
生产规模(辆)
30
40
40
50
120
60
50
200
90
70
60
70
80
180
50
110
40
60
汽车数(辆))
25
35
30
45
80
55
40
180
70
60
50
60
60
150
40
100
35
55
附录三:
附录四:
表八各林业局运费的最短路径
各林业局之间的赋权图(其中权值为任意两点之间的运费)
附录五:
运行程序:
model:
sets:
zhangdian/1..3/:
m,n,b;
link(zhangdian,zhangdian):
x,a;
endsets
data:
m=304040;
n=253530;
b=570048504300;
a=@ole('F:
\book1.xls','一区a');
@ole('F:
/biao1.xls','一区')=x;
enddata
min=@sum(link:
x*(a+b));
@for(zhangdian(i):
n(i)=@sum(zhangdian(j):
x(i,j)));
@for(zhangdian(j):
@sum(zhangdian(i):
x(i,j))<=m(j));
@for(link(i,j):
@gin(x(i,j)));
End
运行程序:
model:
sets:
zhangdian/1..18/:
m,n,b;
link(zhangdian,zhangdian):
x,a;
endsets
data:
m=@ole('F:
/book2.xls','m');
n=@ole('F:
/book2.xls','n');
b=@ole('F:
/book2.xls','b');
a=@ole('F:
\book1.xls','a');
@ole('F:
/biao2.xls','x')=x;
enddata
min=@sum(link:
x*(a+b));
@for(zhangdian(i):
n(i)=@sum(zhangdian(j):
x(i,j)));
@for(zhangdian(j):
@sum(zhangdian(i):
x(i,j))<=m(j));
@for(link(i,j):
@gin(x(i,j)));
end
运行程序:
model:
sets:
zhangdian/1..18/:
m,n,b,q;
link(zhangdian,zhangdian):
x,a;
endsets
data:
n=@ole('F:
/book2.xls','n');
b=@ole('F:
/book2.xls','b');
a=@ole('F:
/book1.xls','a');
@ole('F:
/biao5.xls','x')=x;
@ole('F:
/biao5.xls','m')=m;
enddata
min=@sum(link(i,j):
x(i,j)*(a(i,j)+b(j)));
@for(zhangdian(i):
n(i)=@sum(zhangdian(j):
x(i,j)));
@for(zhangdian(j):
@sum(zhangdian(i):
x(i,j))<=q(j)*m(j));
@for(zhangdian(j):
@sum(zhangdian(j):
m(j))<=1170);
@for(link(i,j):
@gin(x(i,j)));
@for(zhangdian(j):
@bin(q(j)));
end