APP下载

基于遗传算法的自动医药冷库仓位分配

2018-10-11任荟颖

制造业自动化 2018年9期
关键词:仓位冷库出库

任荟颖,邹 鲲,孙 涛

(东华大学 机械工程学院,上海 201620)

0 引言

根据数据分析结果,2020年我国医药市场的估值将达到1200亿美元,届时我国将成为全球第一大医药消费国[1]。虽然医药市场前景广阔,但在物流方面尤其是仓库管理上仍存在一系列问题,对这方面的改进迫在眉睫[2]。在自动化仓库管理方面一些学者进行了相关的研究。例如:文献[3]针对自动化立体仓库以出入库效率和货架稳定性为目标进行建模并通过遗传算法仿真求解;文献[4]针对智能立体仓库考虑了重量均匀分布、就近货位选择、备件品种均匀分布等因素提出了入库货位分配的优化策略并编码求解;文献[5]将RFID技术结合改进遗传算法应用于数字化仓储的出入库货位优先分配中;文献[6]以工业生产型立体仓库为研究对象,针对其出入库口多、存储货物重量差异大和出入库频率高等问题进行研究。

但大多数研究均未考虑被分配货物之间的相互关联。在医药冷库中,不仅要求出入库效率能够得到提高,而且药品相互关联。具体表现为药品可分为抗生素类药品、注射剂类药品等各个种类,同一类别的药品在医院中有较大的概率存在于同一张药方中,即需要一起分配给患者。在本文的自动冷库中存在机器故障或检修等极端情况需要进行人工取药,若药品散乱放置,将大大增加人工取药的劳动量,降低出库效率。

1 医疗冷库的结构

医疗冷库的整体结构示意图如图1所示。整个冷库由机械手、货架、操作平台构成,机械手位于两组智能货架中间,可以进行X、Y、Z三个方向的运动,在Z方向上有三组货架。每组货架在X方向有20个仓位,Y方向有10个仓位。每个仓位中都配备一个规格统一的存储箱,每个存储箱中只能放置一种药品,即每组货架能容纳20×10个存储箱,目前冷库中共有三组货架能容纳600个存储箱。

冷库的工作时,机器人收到药品入库的指令后,从传送带位置出发运动至该药品应存的仓位取出存储箱,送回传送带进行药品的存取,最后再由机器人将存储箱运回原仓位,完成一个存取过程。

2 医疗冷库入库仓位分配优化策略

2.1 系统数学模型

仓位分配问题实质上是一个优化问题,常见优化目标主要有存取时间短、成本低、仓位利用率高等[7]。由于医疗冷库结构已经确定,冷库运行的主要成本耗费在温度控制上,存取药品耗费的成本较低,这里不再考虑。冷库的仓位数量也已经确定,不对仓位数量进行优化,即不考虑仓位利用率的问题。根据上文所述的优化需求分析,本文主要考虑药品相关性和药品出库效率,提出了两个自动分配仓位时的分配原则:1)周转率高的药品放在靠近医疗冷库出入口的仓位;2)相关药品放在相近位置。

图1 冷库整体结构示意图

结合冷库的实际工作流程,本文做出如下假设:

1)机器人起点即为出入库点;

2)机器人在两排货架中心线运动;

3)每个仓位中只能放置一个存储箱,每个存储箱中只能放同一种药品,机器人每次只搬运一个存储箱;

4)机器人伸缩装置叉取和释放存储箱的时间均较短,忽略不计。

根据以上条件对原则1)进行建模。药品的周转率Trmk可以通过某一时段内药品出入库的数量与药品总库存量的比值来表示。机器人与仓位之间的位置关系如图2所示,机器人在水平方向距离货架的初始距离是s,货架共ny层、nx列,每个仓位的高为ly、长为lx。

图2 冷库布局示意图

假设药品要入库的仓位坐标为(m,k),那么机器人从起点运动到此仓位,在水平方向的移动运行距离为X,垂直方向的移动距离为Y,水平方向的移动速度为vx,垂直方向的移动速度为vy,移动所需的总时间为tmk。

所以针对第一个原则,本文建立目标函数式(4):

Trmk表示在第m层、第k列的药品周转率,T1表示药品周转率和机器人到达该仓位的时间的乘积之和。

针对原则2),设要入库的药品有W组,其中P组药品具有相关性。在P组药品中设任意两个存储箱的编号为SS1、SS2,其目标仓位坐标分别为(k1,m1)、(k2,m2)。基于原则2)需将具有相关性的存储箱放在相近位置,即使P组存储箱的两两之间距离最小。由此可建立目标函数2)为式(6)。约束条件为式(5)。

其中P表示这一批入库药品中的相关药品的总组数,b为相关药品的组序号,L2表示相关药品间距离之和。这里的k1、k2、m1、m2为坐标序列。

在分配仓位时,要同时满足目标函数1)和2),本文使用权重系数法,将多目标函数转换成单目标函数求解。给目标1)分配的权重为v1,目标2)分配权重v2。则最终多目标仓位分配模型可以表示为:

2.2 遗传算法的设计与实现

遗传算法用生物进化模拟解决问题的过程,通过交叉、变异等操作产生下一代的解,并逐步淘汰适应度函数值低的解,进化多代之后产生近似最优解[8]。

1)染色体编码与解码

把问题可行解从解空间转化到搜索空间的方法称为编码,从遗传算法解空间向问题空间转换称为解码。编码是设计遗传算法的关键步骤,它的合理性会影响到遗传运算的效果。目前常用编码方式有二进制编码、实数编码和浮点数编码等。

本问题若采用实数编码,将要入库的存储箱放置的仓位编号作为一条染色体,如G1:[2,4,9,11,3,7],表示1号存储箱放置在2号仓位,2号存储箱放置在4号仓位,以此类推。这种编码方式简洁明了,但是在后续的交叉、变异中会使种群中产生不合理的个体,如G2:[2,4,9,11,11,7],此染色体对应的表现型中,4号存储箱和5号存储箱都放置在11号仓位中,显然这是无意义的解,如需避免无意义解,就需要设计特定的交叉和变异方式,增加了算法的设计难度。因此本文采用浮点数编码的方式如下所述。

假设有N个空闲仓位和M个待入库的存储箱,随机生成N个0到1之间的数字,即βi(i=1,2,3,…,N),组成向量(β1,β2,β3,…,βN)作为一条染色体。用βi在染色体中的位置表示空闲仓位的编号,并在染色体中按照βi的数值从小到大排序,前M个序号值就是待入库的存储箱需要进入的仓位编号,这样就避免在遗传运算中出现不合法个体。举例说明:此时共有6个空闲仓位和5个要入库的存储箱,产生一条染色体G:G=[0.4,0.7,0.03,0.1,0.21,0.66]即基因0.4对应仓位编号为1、0.7对应仓位编号为2,以此类推。

将此染色体转换为存储箱在仓位中的摆放情况需要相应的解码操作:利用冒泡排序法对染色体G的基因进行升序排列,获取每个基因对应的仓位编号索引序列F:F=[3,4,5,1,6,2]。

取序列中前5个值[3,4,5,1,6]即为待入库的5个存储箱的仓位分配方案。

2)种群初始化和适应度评价

种群初始化方法是随机生成一定数目的个体作为遗传算法的初始种群。初始种群中每个个体都是一条染色体,代表一种仓位分配的方案,染色体中的基因数目是空闲仓位数。个体的数量代表种群的规模,对遗传算法的计算结果和速度有重要影响。在根据实际情况多次试验后,设置种群中个体数目NIND为70。

个体的适应度能够体现个体的优劣程度,适应度高遗传到下一代的概率就越大。本模型是求函数的极小值问题,所以将个体的目标函数值通过MATLAB中的ranking函数排序,返回个体的适应度值FitnV,来评价个体的优劣程度。

3)遗传运算

本文采用MATLAB的遗传算法优化工具箱,下面简单介绍工具箱中的选择、交叉、变异操作及相关的参数选取。

选择运算是通过适应度评价选择优质的个体,本文选用轮盘赌选择法,个体进入下一代的概率就等于适应度值和所有个体适应度和的比值。设代沟GGAP=0.9,代沟保证子代与父代之间存在差异。编码如下:

交叉是两个个体交换部分基因生成新个体的主要方法。本文选用单点交叉的方式,在两个个体中随机设置交叉点互相交换部分基因,产生新个体。编码如下:

变异属于产生新个体的辅助手段,是将个体中的某些基因突变为另外的基因。本文采用基本位变异法,为每一个基因随机生成一个0到1之间的数,如果该值小于变异概率,则对该基因执行变异操作,设变异概率为0.05。

本文给定最大遗传代数Maxgen,当遗传运算次数等于Maxgen后,停止运算并输出适应度最优的个体,通过多次的运算发现,设最大遗传代数为30代完全能够得到系统的最优解,这里为留有一定的余量设最大遗传代数为50代。

3 优化结果分析

下面将使用本文优化方法进行入库时的仓位分配计算,再通过计算仓库药品出库总时间与顺序分配方法对比验证优化结果。采用MATLAB编程实现遗传算法,在主频为2.70GHz,内存为6G的计算机上进行实验。

由于实际仓库中有600个仓位,计算数据量大,本文为验证该优化方法的有效性仅选取36个仓位进行优化验证。具体相关仿真数据设定如表1、表2所示。

表2中药品周转率为某星期32种药品的周转率,每种药品放在一个存储箱中,其中1~5、6~11、12~18、19~22、23~26、27~32存储箱中药品各自相关。

首先根据以上数据进行顺序分配,仓位分配结果如图2所示。然后验证本文的优化目标。

1)相关药品就近原则验证

此时只考虑原则2),即同一组的相关药品放在相近的仓位。由图3可以看出,目标函数随着遗传代数增减而趋于稳定,经过多次仿真运算将遗传代数定为50代。最终输出最后一代最优解的结果为:17 21 23 15 11 26 14 8 4 3 9 27 34 28 22 25 32 33 12 5 18 10 35 36 24 6 19 2 1 20 13 7。

表1 基本仿真数据设定

表2 药品编号及其周转率

图3 v1=1,v2=0时遗传代数和目标函数值

将优化后的分配方案用图4来表示,可以看出各组具有相关性的药品都相邻放置,符合原则2),但是一些周转率大的药品如6号、12号离出入库口距离较远。

图4 v1=0优化后的仓位分配结果

图5 v1=0.2优化后的仓位分配结果

2)v1=0.2,v2=0.8

如重点考虑方便人工盘点,可将仓位分配的控制权重分别设为20%和80%,输出最优解的结果为:8 26 7 19 13 36 16 24 35 17 30 18 34 15 22 21 28 27 29 20 32 14 9 5 23 6 1 11 3 4 10 2。将得到的最优解用图5来表示,具有相关性的药品基本分配在相近仓位,周转率较大的比如23号、28号也在距离出入库口较近的仓位,所以这种分配方案在满足相关药品相近的基础上符合周转率较大的药品离出入库口近的要求。

通过上述求解方法,可以算出任意满足式(8)的v1,v2的仓位分配最优解,这里不再一一列出。经多次仓位分配仿真,可以证明本文建立的模型,在目标2)占目标函数权重较大的情况下,求解的结果可以实现相关货物就近放置的目标。

3)提高出库效率验证

下面对目标1)进行验证,为了验证优化后结果提高了出库效率,本文对采用顺序分配仓位方法和采用优化方法的货物出库时间进行对比。

首先假设在该星期这32种药品的库存量均为50个,并且每次出库时只取一种药品,则根据表2周转率,可以得出各个药品出库次数为各药品周转率与其库存量之积。

根据式(4)该仓库全部货物本月完成出库所需要的时间ts为:

设根据式(9)计算得到的顺序分配仓位所用出库时间为tsx、优化后所用出库时间为tcl,则优化后能够提高的出库效率为:

出库效率及每组权重对应出库时间如表3所示,出库效率与权重分配的关系如图6所示。

由综上所述,按照本文所建模型在目标1)目标函数所占权重较大的情况下通过遗传算法求解后的仓位分配能够有效减少出库所用的时间,提升出库效率。

4 结束语

在实际情况中,权重可以由冷库管理员根据冷库实际情况设定,冷库建成初期故障较多,可提高v2的比重以使仓位分配结果方便人工取药等工作,冷库运行稳定后,可提高v1比重,提高药品出库效率。通过上述运算结果可以看出:

表3 优化后出库所需的时间

图6 随权重v1的变化趋势

1)在提高出库效率目标函数所占权重较大时,与顺序分配仓位相比,本文提出的仓位规划方法在搜索最优入库仓位时具有明显的效果,能够合理分配仓位,提高冷库的运行效率;

2)在相关药品就近放置目标函数所占权重较大时,本文提出的仓位规划方法能够有效实现将相关药品就近放置的目标,由于相关药品通常一起出库,就近放置有利于在机器人故障或检修期间进行人工取药。

针对本文机械系统的特点,机器人一次只能取一种药品到出库口,相关药品就近放置对提高出库效率无明显的效果,但对于另外一种带有缓存区的机械系统来说,机器人可以取多种药品放置在缓存区,然后一次全部出库,相关药品就近放置能在一定程度上提高出库效率,相关学者也可针对本文目标2)对带有缓存区的机械系统做相关探索。

猜你喜欢

仓位冷库出库
冷库上“云端” 共享促共富
四十余家肉类企业被暂停进口
善良不会被辜负
散粮出库 加快腾仓
优化拍卖出库流程控制防范拍卖出库环节财务风险
“出库费” 应由谁来付
基于PLC的物流自动化包装线出库穿梭车的设计