注:上传不支持AxMath公式格式,公式太多了暂时空缺
完整PDF:https://download.csdn.net/download/m0_60188719/74953314
储药柜的设计
摘 要
储药柜的设计用于将不同药盒种类区分隔开,并且以一个储药槽摆放一种药品的方式来降低发药错误率,药品从后端放入前端取出,并且要保证药盒不发生并排重叠、侧翻、水平旋转等现象。本文通过建立数学规划整数模型,利用优化算法,分析了在不同条件下储药柜横向、竖向隔板的最优化间距设置。该问题的研究能为医院、药房等需要储存、取用药品的场所提供更合理的储物柜设计,帮助医护人员节约场所空间和提高取用药品、补充药品的效率。
针对问题一,本文利用数学规划方法,建立了线性规划0-1模型,通过已知药品的长宽高数据以及不允许出现并排重叠、侧翻、水平旋转现象转化为多个约束条件,以求得最少所需的竖向隔板间距类型的数量为目标函数,借助贪心算法的思想,得出了在满足所有药盒约束条件下至少需要4种储药规格,隔板间距宽度分别是12mm、21mm、40mm、58mm。
针对问题二,本文采用双目标规划方法,在问题一建立的0-1规划模型基础上增加了新的目标函数,并通过增加变量将双目标转化为单目标函数,进行标准化处理消除了量纲影响,借助Lingo软件对多维矩阵实现线性求解,解得在保证宽度冗余量少并且储药槽种类数量合理的情况下应设置11类竖向隔板间距宽度,分别是18mm、21mm、23mm、27mm、30mm、34mm、40mm、44mm、47mm、51mm、58mm。
针对问题三,在使用问题二求解得出的竖向隔板间距类型的基础上对横向隔板的高度求解再次使用双目标非线性规划,通过对约束条件及目标函数的转化及标准化处理,以单目标0-1线性规划模型解决了该问题,实现了在总平面冗余量尽可能小同时横向隔板间距的类型数量也尽可能少的目标,分析得出药槽高种类分别为37mm、42mm、46mm、50mm、54mm、58mm、64mm、70mm、73mm、76mm、80mm、84mm、94mm、105mm、127mm。
针对问题四,我们以曼哈顿距离的数学思想为基础,先将每种药品所需储药槽数量求解得出,再对储药槽数需求量进行排序,依次将储药槽与药品进行以冗余度为判断标准的优先匹配,在此方法基础上我们求得只需要三个储药柜。
综上所述,本文依据各题不同的条件较为全面的分析了在不同需求目标下储药柜的设计方式的变化,并且给出了在不同要求下符合各约束条件的最优化间距设计。经过分析论证,本文的模型具有一定的合理性和现实可行性。
关键词:双目标规划 0-1整数规划 Lingo 贪心思想
-
问题重述
问题背景
储药柜由若干储药槽组成,药品从储药槽的后端放入,前端取出。每个储药槽只能放置一种药品。在具有一定长度的储药槽中保证放置的药品不会出现并排重叠、侧翻或水平旋转的情况下,设计储药槽的宽度和高度、每个储药槽放置的位置。设计过程中,忽略分隔各个储药槽的横向隔板和竖向隔板的厚度。同时为保证药品在储药槽内顺利出入,药品放置在储药槽中与隔板还应保留2mm的间隙。
问题提出
根据以上背景,以及给出的两个附件,需要解决以下问题:
- 药房内的盒装药品种类繁多,它们的大小和规格也各不相同,根据附件1的数据,给出竖向隔板间距类型最少的储药柜设计方案,包括每种型号的数量和每种类型所对应的药盒规格。
- 当药盒与两侧竖向隔板之间的间隙超过2mm时,就会产生宽度冗余。增加竖向隔板间距类型的数量会减少宽度冗余,但会增加药柜的加工成本,并降低药柜的适应性。该设计要求总宽度冗余小和尽可能少的间距类型。仍利用附件1的数据,给出合理的竖向隔板间距类型的数量以及每种类型对应的药品编号。
- 考虑到补药的方便,储药柜的宽度和高度应小于2.5m和2m,传动装置占用的高度为0.5m,储药柜的有效高度为1.5m。药盒与横隔板间隙超过2mm的部分为高度冗余;平面冗余=高度冗余×宽度冗余。基于问题2的计算结果,确定储药柜横向隔板间距的类型数量,使得储药柜的总平面冗余量尽可能地小,且横向隔板间距的类型数量也尽可能地少。
- 附件2给出了每一种药品编号对应的最大日需求量。在储药槽的长度为1.5m、每天仅集中补药一次的情况下,计算每一种药品需要的储药槽个数。为保证药房储药满足需求,根据问题3中单个储药柜的规格,计算最少需要多少个储药柜。
问题一的分析
药房内的盒装药品种类多且药盒尺寸规格差异大。在保证放置的药品不会出现并排重叠、侧翻或水平旋转的条件下,竖向隔板间距类型要最少。
图 2.1.1 药盒示意图
在这个问题中没有其他约束条件,只有题干要求的放置的药品不能出现并排重叠、侧翻或水平旋转。借助图形进行分析,分析在什么情况下会引起这些现象。
图 2.1.2 并排重叠、侧翻、水平旋转示意图
不难发现,竖向隔板间距m值越大越容易引起药品摆放出现问题。因此,针对不同规格的药盒,m值存在最大值使药盒能够正常摆放,超出最大值,会引起并排重叠、侧翻或水平旋转的问题。
问题二的分析
总宽度冗余要尽可能小,同时间距的类型数量也尽可能少。依据第一问结论可知要满足竖向隔板间距满足所有药盒尺寸的大小且间距类型最少的情况下最少所需的间距类型数量,首先基于第一问的类型数量基础上,本文选择对相邻两种隔板宽度的宽度冗余偏大值优先进行插值处理,在此基础上进一步增加隔板间距类型,直至冗余宽度合理。
问题三的分析
在问题2计算结果的基础上,确定储药柜横向隔板间距的类型数量,使得储药柜的总平面冗余量尽可能地小,且横向隔板间距的类型数量也尽可能地少。由于需要考虑补药的便利性,因此对储药柜的高度和宽度进行了限制,并且可将储药柜简化为最大有效高度1.5m,最大宽度2.5m的平面矩形,此小题定义平面冗余为高度冗余和宽度冗余之积,因此在第二问的基础上
问题四的分析
利用附件2每一种药品编号对应的最大日需求量数据,计算每一种药品需要的储药槽个数。根据问题3中单个储药柜的规格,计算最少需要多少个储药柜。
- 假设一天中仅有的一次药品补给是在药店下班前或者下班后一次性补给完成;
- 假设第二问与第三问中每个药槽都有药盒放入;
- 假设每次从后端放入的药品都正立平稳放入
- 假设题目所要求的药盒与两侧竖向隔板之间、与上下两层横向隔板之间的应留间隙均为左右或上下总体间隙为2mm
- 假设药盒水平旋转时中心点在一条直线上;
- 假设药盒旋转角度超过45°时才为水平旋转;
- 假设竖向隔板和横向隔板为一整块,贯穿储药柜。
符号 | 说明 | 单位 |
A | 对应药盒侧放时的宽,如图2.2.1的a | mm |
B | 对应药盒侧放时的高,如图2.2.1的b | mm |
C | 对应药盒侧放时的长,如图2.2.1的c | mm |
M | 竖向隔板间距 | mm |
H | 横向隔板间距 | mm |
药品与竖向隔板的冗余度 | \ | |
竖向隔板间隔数量的选取度 | \ | |
单个药槽宽度间距内每一个药品的一个药槽高度间距 | ||
单个药槽宽度间距内的高度的冗余度 | \ | |
单个药槽宽度间距内的高度种类的选取度 | \ | |
平面冗余 | \ | |
药品在同一药槽间距宽度范围内的数量 | 个 | |
药品在同一药槽间距高度范围内的数量 | 个 | |
宽度的重复率 | \ | |
高度的重复率 | \ | |
NQM | 药槽宽度种类对应的数量 | 个 |
NQH | 药槽高度种类对应的数量 | 个 |
-
模型的建立与求解
问题一模型的建立与求解
模型的建立
盒装药品种类众多,不同药盒尺寸相差较大,因此为满足药盒不出现并排重叠、侧翻或水平旋转现象,根据附件所给的不同药盒种类的长、宽、高数据,可将并排重叠现象转化为竖向隔板间距小于两倍的药盒宽度,侧翻现象转化为竖向隔板间距小于宽和高构造成的对角线长度,水平翻转现象转化为竖向隔板间距小于长和宽构造成的对角线长度。
图 5.1.1 并排重叠
为了避免并排重叠现象,如图5.1.1,则竖向隔板间隔需要满足条件:
(5.1-1)
图 5.1.2 侧翻
为了避免侧翻现象,如图5.1.2,则竖向隔板间隔需要满足条件:
(5.1-2)
图 5.1.3 水平翻转
为了避免水平翻转现象,如图5.1.3,则竖向隔板间隔需要满足条件:
(5.1-3)
同时,药品和隔板之间还需要留出2mm的间隙,因此m的取值范围为:
(5.1-4)
因此我们可以建立一个数学规划0-1模型,实现以最少竖向隔板间距数量实现对1919种药盒适用间距的全覆盖。
令
(5.1-5)
目标模型为:
(5.1-6)
由于编号1号的药盒时可以适用于26,27,…48,则有约束条件:
(5.1-7)
同理,可以得出其他约束条件,建立如下的0-1整数规划模型:
(5.1-8)
表 1 竖向隔板间距选择数据
可使用的竖向隔板间距宽度(mm) | 可满足的药盒编号(mm) |
12 | 669,774…1908 |
13 | 669,774…1908 |
14 | 332,405…1908 |
… | … |
58 | 10,11…1916 |
模型的求解
根据5.1.1所建立的模型,并基于贪心的思想,主要目标是使竖向隔板间距类型数量N最少。其次,竖向隔板间距越小更能节省材料。因此,首先找到所有药品的最大宽度,同时保留2mm的间隙,得到当前最大宽度药品所需的隔板间距,即+2,存储在数据表M中。将所有药品可选间距的最大值与+2进行比较,若此最大限度小于+2,则将该药品数据从数据表中删除。该过程进行多次循环至数据表内数据清空。
具体的代码流程图如下:
图 5.1.4 流程图
使用Excel对上述贪心流程进行执行,得到最少的药槽列宽规格为12mm,21mm,40mm,58mm每个规格下可放置的药品规格如下表所示:
表 2 药盒宽度的最佳取值表(解1)
竖向隔板间隔(mm) | 药盒宽度(mm) |
12 | 10 |
21 | (10,19] |
40 | (19,38] |
58 | (38,56] |
对所建立0-1规划模型编程处理会得到最少需要4个宽度间隔,因为解的组合不是唯一的,由所建立模型严格执行代码得到表3。
解2如下表所示:
表 3 药盒宽度的最佳取值表(解2)
竖向隔板间隔(mm) | 药盒宽度(mm) |
16 | 14 |
30 | (14,29] |
52 | (29,50] |
58 | (50,56] |
综上所述,竖向隔板间距类型最少的储药规格有4种,每种类型所对应的药盒规格如上表。
问题二模型的建立
模型分析与建立
宽度冗余是药盒与两侧竖向各班之间的间隙超出2mm的部分,其基本单位是mm,竖向间隔种类基本单位是个数,要同时将两者都优化到尽可能小首先需要将两者统一为同一量级。
对于冗余,通过第一个问题的约束计算出最大宽度冗余总和的情况,计算方法为:
(5.2-1)
引入代表当前药品所使用的药槽宽度,则当前冗余的计算方法为:
(5.2-2)
则冗余度计算方法为:
(5.2-3)
对于间隔个数,通过对数据的分析可知,若以1mm为最小单位,则间隔宽度的范围为[12,58],共47种。基于此,将47作为最大间隔类别量,当前类别数量记为,则间隔数量的选取度计算方法为:
(5.2-4)
很明显,这是一个双优化问题,目标函数为:
(5.2-5)
约束条件为:
(5.2-6)
解决双目标优化问题的一般方法为将双目标优化转化为单目标优化,因此本文在目标函数统一为最小化问题后,对两个目标函数进行了加权处理。为了消除两个目标函数自身量纲对结果的影响,因此我们首先对目标函数进行了标准化处理,然后需要确定这两个目标函数各自的重要程度。
基于本题在追求宽度冗余尽可能的情况下竖向隔板间距的种类数量也要尽可能小,因此为了保证两个目标的实现更加符合实际,我们采用较为公平的方式对两个目标函数进行了0.5:0.5的权重进行求和,引入最终优化目标为,结果目标优化函数为:
(5.2-7)
为更直观地看到结果的优劣性,由于值作为极小型指标是处于0~1的一个小数,使用1减去可以得到一个处于0~1的极大型指标小数,则可以引入得分S,计算方法为:
(5.2-8)
求解部分
使用Lingo软件将数据导入,并使用上述模型进行求解,可以得到最优化的间隔方案和对于得分。将第一问的结果代入模型中求解可以得到第一问的得分,第一问存在的两个解,分别是基于主观贪心思想和0-1整数规划算法得到的。通过双目标优化算法得到第二问的最优解。
如表2所示:
表 4 得分S的值
第一问的解 | 第二问最优解 | |
76.59 | 78.21 | 85.96 |
可以看出,通过对上述双目标优化转化为单目标优化并最终求解,可以在有效降低冗余度的同时使用较少的间隔类型。这样既可以降低施工复杂度,也可以节省较多材料,有效增加了储药槽的适应能力。
最终计算结果有11类间隔宽度,如表3所示:
表 5 药盒宽度的最佳取值表
竖向隔板间隔(mm) | 药盒宽度(mm) |
18 | [10,16] |
21 | [17,19] |
23 | [20,21] |
27 | [22,25] |
29 | [26,27] |
33 | [28,31] |
37 | [32,35] |
42 | [36,40] |
47 | [41,45] |
52 | [46,50] |
58 | [50,56] |
竖向隔板间隔每种类型对应的药品编号见附件1-竖向隔板间距类型对应的药品编号。
问题三模型的建立与求解
模型的建立与分析
由第二小问最优药槽宽度间隔共11类的结果,对于每一个宽度间隔都有其对应的可选药品范围,对于这11个范围里的每一个,首先利用excel工具对其进行统计,则可以得到单个宽度间距内所有药品的高度最小值,以及对应的药品总数。
针对单个间距内所有药品,类似于第二问的宽度冗余求解,即对符合单个药槽宽度间距内每一个药品都配上一个药槽高度间距,其中。
由于储药柜的最大可用高度为1.5m,即1500mm,因此单个储药槽的最大高度为1500mm,此时也是最大高度冗余的情况。由此可以得到单个间距范围内所有药品最大冗余高度的计算方法为:
(5.3-1)
由于需要为每种药品留出2mm的高度间隙,因此约束条件为:
(5.3-2)
单个宽度间隔范围内所有药品的当前冗余高度计算方法为:
(5.3-3)
遍历计算所有间隔宽度内的最大高度冗余和当前高度冗余并求和,高度冗余度则可由最大高度冗余总和与当前高度冗余总和之比即为目标函数,记为,计算方法为:
(5.3-4)
与第二小问类似,通过对当前所有药品所配对的药槽高度进行统计可以得到药槽高度种类个数为,若以1mm为单位,则可以求得最多有1500-种高度种类。通过计算当前药槽高度种类个数与最大药槽高度种类个数之比可求得高度种类的选取度。计算方法为:
(5.3-5)
引入权重、将双目标与转化为单目标函数,计算方法为:
(5.3-6)
其中、分别取值0.5,0.5。
通过统计所有药品各种宽度以及高度类型数量,可以得到各种宽度和高度的重复率。
由于储药柜可用宽度为1500mm,高度为2500mm,因此解出的药槽宽度和高度可重复使用。
通过统计药品在同一药槽间距宽度范围内的数量以及在同一药槽间距高度范围内的数量,分别将除以宽度数量最大值,将除以高度数量最大值,可以得到各种宽度的重复率和高度的重复率。具体计算方式为:
(5.3-7)
(5.3-8)
通过定义储药柜中各药槽宽度种类对应的数量为,定义储药柜中各药槽高度种类对应的数量为,由题二可以得到宽度共11种,假设最终高度种类数量为HN,则约束条件为:
(5.3-9)
(5.3-10)
基于每种宽度和高度的重复率不同,则可以增加重复率相对较高的种类在储药柜中的数量。首先对各类别进行重复率降序排序,再对其定义约束条件为:
(5.3-11)
(5.3-12)
目标是尽可能增加储药柜整体的利用率,则目标函数为:
(5.3-13)
模型的求解
由第二问可以得到所有药槽宽度类型,分别筛选出最适合这些药槽宽度的药品引入Lingo中,使用建立的模型对其进行求解,得到15种高度类型如表所示:
表 6 药盒高度的最佳取值表
竖向隔板间隔(mm) | 药盒高度(mm) |
37 | [28,35] |
42 | [36,40] |
46 | [41,44] |
50 | [45,48] |
54 | [49,52] |
58 | [53,56] |
64 | [57,62] |
70 | [63,68] |
73 | [69,72] |
76 | [73,74] |
80 | [75,78] |
84 | [79,82] |
94 | [83,92] |
105 | [93,103] |
127 | [104,125] |
模型也属于多目标优化,对此我们将减少隔板类型作为主要目标,同时兼顾平面冗余度。对解出的所有高度类型计算最终得分为:77.61分。
我们基于第二题已经求得的竖向隔板间隔,将上述算法编程实现并执行,最终得到各种宽度在储药柜中的数量,以及各种高度在储药柜中的数量,如表所示:
表 7 隔板间距在储药柜中的分布
竖向隔板间隔(mm) | 数量 | 横向隔板间距(mm) | 数量 |
18 | 13 | 37 | 9 |
21 | 6 | 42 | 1 |
23 | 6 | 46 | 1 |
27 | 6 | 50 | 2 |
30 | 6 | 54 | 1 |
34 | 6 | 58 | 1 |
40 | 6 | 64 | 1 |
44 | 6 | 70 | 1 |
47 | 6 | 73 | 1 |
51 | 7 | 76 | 1 |
58 | 6 | 80 | 1 |
\ | \ | 84 | 1 |
\ | \ | 94 | 2 |
\ | \ | 105 | 1 |
\ | \ | 127 | 1 |
引入储药柜实际高度和宽度,计算各种宽度以及高度的个数,最终得到储药槽对储药柜整体的利用率为100%。最终储药柜如图所示:
图 7 储药柜示意图
问题四模型的建立与求解
模型的建立与分析
由问题三可得到单个储药柜的规格,对于附件二中多种药品的需求量,首先可以利用Excel软件通过药品需求量和药品长度求解得出每种药品所需的储药槽数量,在此基础上,对药品所需储药量进行排序分析。
本题通过穷举法对每一种药品和每一种类型的储药槽通过形成的冗余度进行比较分析,以冗余度作为配对药品和药槽优劣判断标准,并且将冗余度小、所需槽数多的药品进行优先分配到对应储药槽中。
优劣判断采用基于在可选药槽规格的范围计算药品与药槽的曼哈顿距离L1,计算方法为:
(5.4-1)
首先定义储药柜数量为YG,并赋初值为0。遍历所有可选药槽得到所有距离,选中其最小值并将该药槽标记为不可选,标记方法使用外加参数,并增加判断条件。
当遍历到存在一个药品所有药槽都不可选时,将该药品添加到提前定义好的矩阵中,使YG加一,即添加储药柜继续填充。
循环上述步骤知道药品都以被添加到药槽中。
模型的求解
执行此算法模型,得到将所有药品均放置于槽中需要的总药槽数为2457个,遍历填充这些药品,最终储药柜数量为3个,每个药品对应的储药柜以及在储药柜中的位置可循,各储药柜中药槽数如表所示:
表 8 各药槽数
储药柜编号 | 药品类型数 |
1 | 1293 |
2 | 951 |
3 | 213 |
在执行程序中发现,单个储药柜最多能装填1850种药品,但实际最多装载了901种药品,利用率还是较低。
-
模型的评价、改进与推广
模型的优点
- 本文中基于0-1数学整数规划所建立的模型简洁、可实现性强,能通过建立0-1决策变量灵活适应药盒约束条件的变化,所求结果合理,并且直观易理解。
- 问题二在采用基于0-1规划的基础上建立双目标规划模型,并且通过将双目标规划问题转化为单目标规划模型,使目标函数由非线性规划转化为线性规划,降低了模型求解难度。并且模型中考虑到了量纲对线性求解的影响,消除了由量纲引起的误差。
- 问题三通过对基于问题二的模型添加约束条件以及变更目标函数的表达式,使用枚举法的思想将高度种类的选拔简化为线性求解,易于求解。
模型的缺点
- 由于数据源过大,因此在模型求解最优化解时存在多组可行解,本文尚未对该优化解进行分析比较,因此对数据的分析可能存在一定偏差。然而本文基于线性规划模型有较为统一的算法,适合用于求解本文中多变量最优决策。
- 本文对优化模型的求解由于受到数据量的影响,因此计算量较大,计算过程较为漫长。
模型的改进
本文采取的0-1规划模型虽然有统一算法,但受限于只能处理线性关系的情形,因此模型的求解方式较为单一,可结合其他模型如通过层次分析法等对模型中进行多目标转化为单目标求解时设置的权重系数进行优化。
[1]施媛波.基于狮子优化和GSA混合的多目标任务调度算法[J].电脑与信息技术,2021,29(04):1-3+41.
[2]李渊,郭兴明,魏磊.intlinprog函数和bintprog函数在0-1规划中的应用[J].设备管理与维修,2021(12):134-136.
[3]李沐鸿,孙庆峰.多目标参与的应急资源调度模型研究[J].物流工程与管理,2021,43(06):27-29.
[4]田双,吕林,蔡亚庆,姚冰.基于Lingo的求解一维下料问题简易算法设计与实现[J].产业与科技论坛,2021,20(07):45-47.
[5]张利帆,鲜楚逸,孙凯.基于LINGO的多目标移位左转交叉口研究[J].综合运输,2020,42(10):66-70+83.
[6]刘晓妍.规划模型在数学建模中的应用[J].河南教育学院学报(自然科学版),2020,29(02):15-18.
[7]肖婧,许小可,张永建,刘丹凤. 差分进化算法及其高维多目标优化应用[M].人民邮电出版社:信息与通信创新学术专著, 201802.199.
[8]张秀兰,林峰,数学建模与实验,北京:化学工业出版社,2013
[9]周品,赵新芬,MATLAB数理统计分析,北京:国防工业出版社,2009