您现在所在的位置是:首页 > 业界新闻

自动化仓库库存管理系统算法研究

自动化立体仓库库存管理系统ASRS 是在不直接进行人工干预的情况下,自动地存储或取出货物的系统。使用自动化立体仓库库存管理既能提高空间利用率、设备存取速度,又能准确无误地对各种信息进行存储和管理,提高信息的准确性。利用自动化立体仓库库存管理实现了仓库库存管理管理的数字化、科学化、规范化和自动化,因此近些年它在国内外迅速发展起来并得到广泛的应用。 出库作业是自动化立体仓库库存管理的重要组成部分,出库作业是否准确、快速决定着整个系统性能的优劣,直接影响着企业与客户的利益。本文结合某公司单道自动化立体仓库库存管理系统,研究了自动均匀出库的有关算法。

2系统概述及立体仓库库存管理出库的基本流程
2.1系统概述
某公司的立体仓库库存管理为单道式整体自动化立体仓库库存管理每个巷道有1台堆垛机 ,整个立体仓库库存管理约2万个货位,货架共设15个巷道,每巷道68列,分左右两排架,各巷道货架层根据仓库库存管理的拱形建筑结构而不同。整个仓库库存管理系统分为管理层、控制层、执行层三个层次。管理层主要有联机入库、入库管理、出库管理、库存管理、查询统计、作业调度等上层功能;控制层接受管理层的指令,控制各作业设备完成下达的指令任务,同时监测各作业设备的状态信息,并将信息反馈到管理层,为管理层作业调度提供各个设备的状态信息;执行层各作业设备的控制器接受控制层的指令,控制设备执行各种操作。

2.2立体仓库库存管理出库的基本流程
立体仓库库存管理出库详细流程因具体仓库库存管理应用系统而不同,但出库的基本流程基本都相似。出库的基本流程如图1所示。
3相关因素的分析研究
随着公司销售市场的不断扩大,立体仓库库存管理的入出频率变得更加频繁,仓库库存管理平均出库量要达(800~1000)吨/天。原先的指定货位出库,出库管理员需根据库存信息,手动地指定货位范围出库,每次分配作业出库管理员都要查询库存的详细信息,工作繁琐,出库速度慢,仅能达到(600800)吨/天。因此提高系统的出库速度、提高客户出库服务的公平性是实施的关键。下面分析了与出库作业分配、执行相关的因素。

3.1客户的优先级
要实现客户的公平性,可采取先来先服务FCFS的方法,为此为每个客户指定一定的优先级,客户优先级根据客户到场登记的先后次序而定。

3.2客户出库的托盘数
在出库客户中,可能有的客户出库数量少,只需很短时间就可完成出库作业,相反可能有的客户出库量很大,要花费较长时间才可完成出库。因此,了解客户出库量是有必要的。在实际业务中,出库托盘数可以反映出出库数量的多少。作者通过出库作业的托盘序列号、作业来源单据号、作业来源单据明细号来表示同一客户的托盘数。

3.3巷道均衡、距离优先出库
首先入库时应将物品均匀入库,而且尽量将物品存放在离出库口较近的货位;其次,出库时要能按巷道均匀出库。在此作者主要考虑出库时巷道均衡、距离优先出库因素。

3.4出库原则
出库原则主要决定查找可出库物品型号的库存信息。出库原则分按指定打印日期出库和先进先出两种。按指定打印日期出库时库存中只有相同打印日期的物品型号方可出库;先进先出时如果要出库的物品型号、打印日期库存不够出库数量时,可出相同物品型号的打印日期大于出库单中打印日期的库存物品。

3.5立体仓库库存管理出库的概念数据模型
基于以上4点相关因素的分析研究,作者设计了立体仓库库存管理出库的概念数据模型,如图2所示。

4自动均匀出库算法
通过以上的分析研究,作者总结出了在单道式自动化立体仓库库存管理中实现自动均匀出库的算法。算法主要包括以下几点:

4.1获得客户优先级的算法
根据实际情况,出库作业的状态主要有未执行、待执行、正执行、已完成等状态。其中未执行作业表示刚生成的出库作业,待执行表示已将出库作业列入待执行作业队列中,正执行表示出库作业正在执行(出库设备正出库),已完成表示物品已出库。当某客户到场登记时,先取出当班班次中未执行、待执行或正执行作业的出库客户数(用ll_client_count表示),ll_client_count自加一就是该客户的客户优先级。获得客户的优先级后,将客户的优先级存入相应的出库单信息中。

4.2客户出库作业托盘序列号的算法
客户出库作业托盘序列号(用salver_count表示)不仅能反映出客户出库量的多少,而且决定着多个客户交叉出库时客户出库作业的先后顺序。作者规定同一客户的出库托盘序列号在该客户出库作业的托盘起始序列号基础上依次累加生成。因此,算出该客户出库作业的托盘起始序列号用salver_start_num表示 是关键。然后在托盘起始序列号的基础上每生成一条出库作业托盘序列号自加1。计算出库客户的托盘序列起始号分两种情况
a 该客户已有出库作业
salver_start_num表示该客户出库作业的托盘序列号最大值
客户已有出库作业,表明客户出多种物品型号,且已生成或完成部分物品型号的出库作业。
b 该客户还没有分配出库作业
salver_start_num表示未执行、待执行出库作业托盘序列号的最小值
该客户还没有出库作业时,其它客户可能已经开始执行出库或已完成一部分出库作业,那么该客户要出库的出库作业应该与其它客户未执行或待执行的出库作业交替出库。

4.3巷道均衡、距离优先的算法
获得客户出库作业总盘数(用ll_rowcount表示)、巷道数(用ll_xiangdao_count表示)
ll_row表示当前出库作业,令ll_row为1
从第一条出库作业开始dowhilell_row<=ll_rowcount
ll_xiangdao表示当前巷道,令ll_xiangdao为1
从第一巷道开始
dowhilell_xiangdao<=ll_xiangdao_count
ifll_xiangdao的巷道有要出库的物品型号then
按照距离优先的分布方法将本巷道的未分配的货位库存信息排序。距离优先方法就是离出库口近的货位的物品型号先出库。实现方法是过滤出满足出库要求的货位,并按照计算公式value=integerfloor 系数1+integerlist 系数2+integerline 计算出各个货位的权值value将货位库存信息按value值降序排列选择排序后的第1行库存信息,生成出库作业,标识货位库存信息为已配。
ll_xiangdao++
ll_row++
ifll_row>ll_rowcountthen
break
endif
else巷道中没有要出库的物品
ll_xiangdao++
endif
loop
ifll_xiangdao>ll_xiangdao_countthencontinue
loop
其中value表示权值,floor表示货位层,list表示货位列,line表示货位排,系数1、系数2(为正整数)的取值可根据仓库库存管理规模而定,只要保证系数2大于系数1,这是因为货位的列反映了货位离出库口的远近,根据距离优先原则,列越大,离出库口越近,同时应该先出高层货为了货架支撑平衡 ,排反映出巷道中货位的左右之分,单排为左、双排为右。

4.4出库作业优先级的算法
根据客户优先级与客户出库托盘序列号可计算出出库作业优先级priority 的算法,算法公式为:
salver_count=salver_start_num+k;
priority=intll_client_count/常数 系数1+Salver_count系数2+ll_client_count%常数。
其中salver_start_num表示客户出库作业托盘起始序列号,k表示该客户出到第几盘,salver_count表示作业托盘序列号,ll_client_count表示客户优先级,intll_client_count/常数 
表示该客户是第几批到达的,ll_client_count%常数表示该客户是同批到达客户的序列号;依据仓库库存管理平均出库量及用户需求,系统要实现同时最多能为10个客户进行出库装车(可同时装车的客户可交叉出库),作者规定常数为10,系数1为100000,系数2为100。表1用简单的示例描述了算法的结果。
示例简述:假设有A、B、C三个客户,到达顺序分别是21、22、23;A要出4盘物品,B、C各要出3盘物品,其中A已出完1盘,还剩3盘,B、C均还未出库;则A的后3盘与B、C的3盘应交叉出库,即通过上述算法计算出表中作业优先级并根据优先级顺序出库。

4.5自动均匀出库总算法
1 出库前出库管理员指定出库原则。
2 系统根据指定的出库原则及库存信息、进行出库审核,如通过审核修改入出库单基本信息的单据状态为已审核,并为客户设置客户优先级。设置出库客户优先级的算法见4.1的算法描述。
3 出库管理员选择要出库的客户及物品型号。
ll_count表示要出库的客户及物品型号的总行数
ll_row表示当前出库客户及物品型号所在行,另ll_row为1从第一行开始
dowhilell_row<=ll_count
读取ll_row行的明细信息(包括出库单据号、单据明细行号、物品型号、打印日期、出库开单数量、已分配数量、客户优先级、出库标识、出库原则)
if出库明细行的物品型号已分配(出库标识为1)thencontinue
待分配数量=开单数量-已分配数量
调用自动分配出库作业
if自动分配出库作业成功then
将出库明细行标为已分配
endif
loop
其中自动分配出库作业的算法如下描述:
调用自动分配出库作业时将单据号、单据明细行号、物品型号、打印日期、开单数量、已分配数量、待分配数量、出库原则以参数方式传进
k表示客户出库作业的流水号,令k为1(从第一盘开始)
dowhile待分配数量>0then
查找符合物品型号、打印日期、出库原则的库存信息,并按巷道均衡、距离优先的方法过滤要出库货位,巷道均衡、距离优先的算法见4.3的算法描述。
计算该客户出库作业托盘起始序列号salver_start_num见4.2的算法描述 ,出库作业托盘序列号salver_count(salver_count=salver_start_num+k)
选择第一行的库存信息
计算出库作业优先级,出库作业优先级算法见4.4的算法描述。
为作业及作业明细的各个字段赋值,生成出库作业成
功,置所选货位库存信息行的状态为已分配过
待分配数量=待分配数量-作业的分配数量
过滤掉已分配的库存信息所在行
k++继续下条出库作业
loop
作业都分配成功,返回
至此我们通过一系列的算法实现了自动均匀出库。当执行出库作业时,将按出库作业优先级次序从各个出库口均匀出库。

5结束语
采用自动均匀出库的算法后,简化了出库管理员的工作程序,分配作业由系统自动检测库存信息、自动分配出库作业,出库速度明显提高,设备的运转率有较大的提高,平均出库量由原来的60000-80000箱天增加到了80000-100000箱天,增强了客户服务的公平性,减少了客户等待出库的时间,满足了用户的要求,给企业带来了明显的经济效益。
自动均匀出库的算法是单道式自动化立体仓库库存管理中进行出库作业分配的一种有效方法,在自动化立体仓库库存管理的出库作业分配方面具有普遍的指导意义,对国内外自动化立体仓库库存管理的进一步发展具有一定的参考价值。

文章来源:秘奥软件网,中小企业信息化领跑者!全国咨询热线:400-9908-527_www.misall.com

最新新闻: