储药柜的优化设计.docx
《储药柜的优化设计.docx》由会员分享,可在线阅读,更多相关《储药柜的优化设计.docx(38页珍藏版)》请在冰豆网上搜索。
储药柜的优化设计
2014高教社杯全国大学生数学建模竞赛
承诺书
我们仔细阅读了《全国大学生数学建模竞赛章程》和《全国大学生数学建模竞赛参
赛规则》(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。
如有违反竞赛章程和参赛规则的行为,我们将受到严肃处理。
我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。
我们参赛选择的题号是(从A/B/C/D中选择一项填写):
D我们的报名参赛队号为(8位数字组成的编号):
所属学校(请填写完整的全名):
参赛队员(打印并签名):
1.
2.
3.
指导教师或指导教师组负责人(打印并签名):
(论文纸质版与电子版中的以上信息必须一致,只是电子版中无需签名。
以上内容
请仔细核对,提交后将不再允许做任何修改。
如填写错误,论文可能被取消评奖资格。
)
日期:
年月日
赛区评阅编号(由赛区组委会评阅前进行编号):
2014高教社杯全国大学生数学建模竞赛
编号专用页
赛区评阅编号(由赛区组委会评阅前进行编号):
赛区评阅记录(可供赛区评阅时使用):
评
阅
人
评
分
备
注
全国统一编号(由赛区组委会送交全国前编号):
全国评阅编号(由全国组委会评阅前进行编号):
储药柜的优化设计
摘要
本文针对保证药品能在储药槽内顺利出入及药盒与两侧竖向隔板之间、与上下两层横向隔板之间应留2mm的间隙,同时药盒在储药槽内推送过程中不会出现并排重叠、侧翻或水平旋转等条件要求下。
结合假设条件和实际分别进行求解,最后得出最优解。
针对问题一:
将各种药盒的长,高,宽设为(x,y,z)建立空间直角坐标系并利用
Matlab软件画三维散点图,进而利用聚类分析法[1]将数据进行标准化处理,样本间相似
性采用欧氏距离变量,类间距离的计算选用平均法。
再对数据进行分类,为了满足药盒
能够顺利的通过储药槽,我们找出各类型中体积最大的药盒,若竖向隔板若能装进体积
最大的药品盒,也就能在最大程度上装进同类中的其他药盒。
与此同时,药盒与两侧竖
向隔板之间、与上下两层横向隔板之间应留2mm的间隙,故应再在最大药盒的数据上进
行一系列的处理,最后得出所求有三种类型的最优方案,第一类:
长130mm高92mm宽57mm,第二类:
长132mm高122mm宽39mm,第三类:
长105mm高72mm宽60mm。
针对问题二:
问题二是在问题一的基础上的进一步深入,故在问题一模型的三种类型的基础上,我们再进一步的考虑为使药盒与两侧竖向隔板之间的一个总宽度冗余尽可
能最小,将原始数据导入Matlab中并筛选出三种类型的相关数据,并用Matlab将三种
类型分别进行组距分组[2],最终得出16组类型,再用Excel计算出各组的最大体积,从而得到16种类型的药盒,并计算出宽度冗余为8034。
针对问题三:
问题三要求平面冗余最小,基于题二结果,宽度冗余一定则高度冗余越小,从而平面冗余就越小。
所以我们首先将原始数据中的高度提出来,然后利用Matlab
进行多次分组,然后选择用组中值来代表这组数据,最终得到了8组数据,也就是确定
了8种横向隔板间距类型。
再找出题二中16种竖向隔板间距类型所对应的横向隔板间距类型,从而就得到了单个储药柜的规格。
并计算出高度冗余量为55468,而平面冗余高度冗余宽度冗余,则平面冗余量为445629912。
针对问题四:
问题四规定了储药槽的长度为1.5m,结合题三中储药柜的宽度不超
过2.5m,储药柜的最大允许有效高度为1.5m。
以及附件中各药品的销量,结合问题三得到的单个储药柜的规格再结合每种药槽所能装的最大盒数以及每种药品所能装的最
大药槽数以小往大依次装填并利用Matlab以及Excel计算得到最少需要12个储药柜。
关键词聚类分析Matlab软件组距分组Excel
1
一、问题重述
储药柜的结构类似于书橱,通常由若干个横向隔板和竖向隔板将储药柜分割成若干个储药槽。
为保证药品分拣的准确率,防止发药错误,一个储药槽内只能摆放同一种药品。
药品从后端放入,从前端取出。
为保证药品在储药槽内顺利出入,要求药盒与两侧竖向隔板之间、与上下两层横向隔板之间应留2mm的间隙,同时还要求药盒在储药槽内推送过程中不会出现并排重叠、侧翻或水平旋转。
在忽略横向和竖向隔板厚度的情况下,建立数学模型,给出下面几个问题的解决方案。
1.药房内的盒装药品种类繁多,药盒尺寸规格差异较大,附件1中给出了一些药盒的规格。
请利用附件1的数据,给出竖向隔板间距类型最少的储药柜设计方案,包括类型的数量和每种类型所对应的药盒规格。
2.药盒与两侧竖向隔板之间的间隙超出2mm的部分可视为宽度冗余。
增加竖向隔板的间距类型数量可以有效地减少宽度冗余,但会增加储药柜的加工成本,同时降低了储
药槽的适应能力。
设计时希望总宽度冗余尽可能小,同时也希望间距的类型数量尽可能
少。
仍利用附件1的数据,给出合理的竖向隔板间距类型的数量以及每种类型对应的药品编号。
3.考虑补药的便利性,储药柜的宽度不超过2.5m、高度不超过2m,传送装置占用的高度为0.5m,即储药柜的最大允许有效高度为1.5m。
药盒与两层横向隔板之间的间隙超出2mm的部分可视为高度冗余,平面冗余=高度冗余×宽度冗余。
在问题2计算结果的基础上,确定储药柜横向隔板间距的类型数量,使得储药柜的总平面冗余量尽可能地小,且横向隔板间距的类型数量也尽可能地少。
4.附件2给出了每一种药品编号对应的最大日需求量。
在储药槽的长度为1.5m、每天仅集中补药一次的情况下,请计算每一种药品需要的储药槽个数。
为保证药房储药满
足需求,根据问题3中单个储药柜的规格,计算最少需要多少个储药柜。
二、问题假设
1.假设药品体积最大时,其它比它体积小的药品都可装进。
2.假设所给数据符合市面上大多数药品的规格情况。
3.假设药槽的长宽高没有明确规定。
4.假设药盒在推送过程中不会发生变形。
2
三、问题分析
随着我国经济的快速增长和人民群众对医疗卫生需求的迅速提高,医院的医疗设备条件和医生素质也得到了大幅提高,同时,药品的品种和数量也随之迅速增长。
如何有
效管理这些药品,降低管理成本,压缩药品资金流动岗期,是当前大中型医院药房面临
的一个严重问题[3]。
显然,对于此种问题储药柜的设计显得相当的重要,其与传统的“取
药治病”大相径庭并且在质量、效率、劳动力等方面有很大程度的提高,其功能包涵储存量大、快捷、方便、美观等几个方面。
针对问题一:
我们将各种药盒的长,高,宽设为(x,y,z)建立空间直角坐标系并利用Matlab软件画三维散点图,进而利用聚类分析法将数据进行标准
化处理,样本间相似性采用欧氏距离变量,类间距离的计算选用平均法。
然后用Matlab进行编程后得到3种分类并为防止其在推送过程中出现并排重叠、侧翻或水平旋转对分类的后的数据进行二次处理,依据给出竖向隔板间距类型最少的储药柜设计方案,我们
选择分为3类的方案。
(具体见附件1)再对数据进行分类,为了满足药盒能够顺利的通过储药槽,我们找出各类型中体积最大的药盒,若竖向隔板若能装进体积最大的药品盒,也就能在最大程度上装进同类中的其他药盒。
针对问题二:
参照问题一的思路,我们可理解为竖向隔板间距类型最多的时候,我们能尽可能的保证总宽度的冗余尽可能的小。
与此同时我们又考虑到药盒与两侧竖向隔板之间的一个总宽度冗余尽可能最小,结合问题一得到的结果数据,对其的每个类型的
宽度导入Matlab并用Matlab进行分组,从而取得合适的分组类型,将数据在Excel进行计算。
最后得到竖向隔板间距类型的数量和每种类型对应的药品编号。
针对问题三:
根据问题要求,要使平面冗余尽可能的小。
我们可以利用假设一因素
一定从而转求另一因素的方法来满足条件的要求。
根据问题二的结果,从一定的条件下,肯定了我们的方法及宽度冗余一定时可转求高度冗余的方法来求得结果使总平面冗余
量尽可能的小。
所以我们将高度进行分距分组,从而确定储药柜的横向隔板间距。
结合题二的数据也就得到了单个储药柜的规格。
针对问题四:
依据问题三中单个储药柜的规格,计算最少需要多少个储药柜。
我们
可从问题三的模型中提取相关数据求出相关规格每种药品对应的体积。
从而求出每个药槽所能容纳的最大药盒数,再根据每个药盒规格的日最大需求量,最终算出药槽的个数。
四、符号说明
1.i表示类型数i1,2,3...16。
2.si表示各类型中宽度冗余的临界值。
3.ni表示各类中存在宽度冗余的宽度值的平均值。
4.sj表示一列的标准差。
3
五、模型的建立与求解
问题一模型的建立与求解:
首先,我们将药盒的长、高、宽利用Matlab软件建立三维直角坐标系x,y,z,从
而画出其三维散点图如(图1),其程序为:
loadshuju.txt;x=shuju(:
1);y=shuju(:
2);z=shuju(:
3);plot3(x,y,z,'.');
图1:
散点图
然后,利用聚类分析法对数据进行处理,根据题目的要求及相关数据的分析有:
其欧氏距离计算方式如下:
p
1
2
2
d
x,y
,d
x,y
d(x,z)d(z,y)
xkyk
k
1
再对数据矩阵进行标准化处理,处理方式为:
xij
xij
xj
sj
其中xij,sj是矩阵X
(xij)mn每一列的均值和标准差。
最后,再利用Matlab软件得出其聚类图,程序见附录
1。
我们根据程序的运行及题
4
目要求,我们最终得出符合竖向隔板间距类型最少的储药柜设计方案,有三种类型,其聚类图如(图2):
图2:
聚类图
为了能保证药盒在储药槽内推送过程中顺利的进行,我们采用其体积最大化法,最
大程度的保证药盒能够顺利的通过储药槽,三类中最大体积的药品盒数据如表1,表1:
三类中最大体积的药品盒
类别
药盒编号
长(mm)
高(mm)
宽(mm)
最大体积
第一类
1639
130
90
53
620100
第二类
915
132
120
35
554400
第三类
1832
105
70
56
411600
在此基础上又药盒与两侧竖向隔板之间、与上下两层横向隔板之间应留2mm的间隙,然而为保证药盒能正常传送,则药盒的底面应与传送底面有一定的接触,故最终得
出药盒的规格如表2
表2:
药盒的规格
类别
高(mm)
宽(mm)
第一类
92
57
第二类
122
39
第三类
72
60
问题二模型的建立与求解:
问题二是在问题一的基础上的进一步深入,故在问题一模型的三种类型的基础上,
我们再进一步的考虑为使药盒与两侧竖向隔板之间的一个总宽度冗余尽可能最小,将原始数据导入Matlab中(程序见附录2)并筛选出三种类型的相关数据,并用Matlab将
5
三种类型分别进行组距分组,以及分布的正态性检验和参数估计。
其程序见附录3,类型一经过多次分组,采用分成六组的形式如图3,和分布的正态性检验图4。
图3:
分组图
图4:
分布的正态性检验图
类型二经过多次分组,采用分成五组的形式如图5,和分布的正态性检验如图6。
6
图5:
分组图
图6:
分布的正态性检验图
类型三经过多次分组,采用分成五组的形式如图7,和分布的正态性检验如图8。
7
图7:
分组图
图8:
分布的正态性检验
通过Matlab对数据的分析与处理,我们将药品分成了16类,并找出了各类中体积最大的药品数据,得到表3
8
表3:
各类中体积最大的药品数据
编号
长(mm)
高(mm)
宽(mm)
体积
1302
129
111
17
243423
1538
129
94
18
218268
1758
132
112
20
295680
1758
132
112
20
295680
1396
131
90
27
318330
1898
133
120
30
478800
915
132
120
35
554400
915
132
120
35
554400
588
131
96
40
503040
750
125
121
40
605000
508
86
49
49
206486
547
100
49
49
240100
306
86
50
50
215000
1639
130
90
53
620100
1238
102
65
55
364650
445
100
66
56
369600
然后根据药盒与两侧竖向隔板之间、上下两层横向隔板之间应留2mm的间隙,故加上各类型中宽和高的间隙,得到16种不同类型的药品柜格,如表4所示:
表4:
不同类型的药品柜格
类型
长(mm)
高(mm)
宽(mm)
1
129
113
21
2
129
96
22
3
132
114
24
4
132
114
24
5
131
92
31
6
133
122
34
7
132
122
39
8
132
122
39
9
131
98
44
10
125
123
44
11
86
51
53
12
100
51
53
13
86
52
54
14
130
92
57
15
102
67
59
16
100
68
60
统计之后每种类型的对应的药品编号如下表
5,详图见附录4。
9
表5:
每种类型的药品编号
1药品编号长(mm)高(mm)宽(mm)
669
100
100
10
774
100
100
10
1352
100
100
10
668
100
100
12
1797
127
66
16
862
127
112
16
1111
126
110
17
971
130
110
17
1302
129
111
17
2药品编号
长(mm)
高(mm)
宽(mm)
1357
108
100
20
1146
117
106
20
633
128
110
19
815
132
107
20
1029
130
110
20
1758
132
112
20
3药品编号
长(mm)
高(mm)
宽(mm)
1913
122
92
31
1663
137
97
27
382
130
96
30
592
131
112
26
783
138
93
30
1504
137
96
31
1313
130
111
29
1898
133
120
30
最后,我们建立模型,根据各类中宽度冗余的临界值减去存在宽度冗余的宽度值的平均值,再乘以各类型中存在宽度冗余的宽度的数量,各类型中宽度冗余的总和就是储
药柜的宽度冗余,其中i为类型数,si为各类中宽度冗余的临界值,ni为各类中存在宽
度冗余的宽度值的平均值,mi为各类型中存在宽度冗余的宽度的数量有:
16
y(sini)mii1,2,3...,16
i1
最终得出宽度冗余为8034。
10
问题三模型的建立与求解:
问题三要求平面冗余最小,基于题二结果,宽度冗余一定则高度冗余越小,从而平
面冗余就越小。
所以我们首先将原始数据中的高度提出来,然后利用Matlab进行多次
分组,以及分布的正态性检验和参数估计。
其程序见附录2,采用分成六组的形式如图
9,和分布的正态性检验图10。
图9:
分组图
图10:
分布的正态性检验
然后选择用组中值来代表这组数据,最终得到了组数据,也就是确定了8种横向隔
11
板间距类型。
再找出题二中16种竖向隔板间距类型所对应的横向隔板间距类型,从而就得到了单个储药柜的63种规格。
如下表6。
(部分数据,详细数据见附录4)
表6:
储药柜的规格
长
133
132
132
86
高34
宽
34
39
39
53
长
133
132
132
131
高48
宽
34
39
39
44
长
133
132
132
131
高62
宽
34
39
39
44
长
129
133
132
132
高76
宽
21
34
39
39
长
132
131
133
132
高90
宽
24
31
34
39
长
129
129
132
132
高104
宽
21
22
24
24
长
129
129
132
132
高118
宽
21
22
24
39
长
132
132
131
132
高125
宽
24
24
31
39
并计算出高度冗余量为
55468,而平面冗余
高度冗余
宽度冗余,则平面冗余量
为445629912。
问题四模型的建立与求解:
依据问题三中单个储药柜的规格,计算最少需要多少个储药柜。
我们可从问题三的模型中提取相关数据求出相关规格每种药品对应的体积。
从而求出每个药槽所能容纳的最大药盒数,再根据每个药盒规格的日最大需求量,最终算出药槽的个数。
然后用竖向隔板间距以及横向搁板间距类型作为限制条件筛选出每个药槽所能够装的最大盒数和
没种药所能装的最大药槽数,从小往大依次装填。
结合问题三中所得的63种规格的药槽,我们通过对附件2的数据重新处理,得出
各种药品所需的药槽数,以及各种药槽所需的总数,制成表7数据表示宽、高,如下,为了使药柜数量尽量小,可以考虑药槽降级使用,如只要满足药品高度不低于药槽高度
的一半,高度为76的药品可以放入药槽高度为90,104等药槽中。
表7:
各种药槽所需数量
21
22
24
31
34
39
44
53
54
57
59
60
34
/
/
/
/
61
0
0
0
0
0
0
/
48
/
/
/
/
139
32
69
159
25
17
2
2
62
/
/
/
/
284
85
20
29
25
17
2
2
76
192
/
/
/
580
38
17
22
/
/
13
/
90
/
/
71
144
26
16
11
/
17
3
1
/
104
8
1
5
6
3
8
7
/
/
/
/
/
118
4
0
5
/
/
0
/
/
/
/
/
/
12
125//00/4//////
最后得到最少所需的储药柜数为12。
六、模型的评价
本文大体上所采取的方法为聚类分析法,运用此方法对数据进行一系列的处理,并合理的分为若干类,它能让我们近距离的去接触数据,分析数据所包含的本质。
相对于本文此类方法有如下优缺点:
优点:
能够直观的反映模型形状,运用Excel和Matlab处理数据机解决模型得到结果比较真实,贴近生活。
缺点:
在对数据进行分析时,带入无关数据对模型的分析造成一定的影响。
有些特殊的数据不适合模型。
七、模型的推广
模型中较多的运用Matlab和Excel处理数据,并编写程序来解决模型中的问题。
本文次模型的应用在实际生活中有着广泛的使用空间,该模型不仅可以应用于储药柜,还可以对类似问题进行求解,比如全自动加加药装置、循环水加药装置及锅炉加药装置等相关模型进行推广。
参考文献
[1]XX百科层次分析法
[2]XX百科组距分组
mRCTqfonROli1bUsBBDsI0aldbWZ5Xnxq
[3]李成群,王伟,负超,朱贤,曹建波,张银花,自动化药房的现状和新进
展,
13
附录
附录1
clc,clear
loadshuju.txt%把原始数据保存在纯文本文件gj.txt中shuju=zscore(shuju);%数据标准化
y=pdist(shuju);%求对象间的欧氏距离,每行是一个对象
z=linkage(y,'average');%按类平均法聚类
dendrogram(z);%画聚类图
fork=3:
5
fprintf('划分成%d类的结果如下:
\n',k)
T=cluster(z,'maxclus