自动化立体仓库系统ASRS是在不直接进行人工干预的情况下,自动地存储或取出货物的系统。使用自动化立体仓库既能提高空间利用率、设备存取速度,又能准确无误地对各种信息进行存储和管理,提高信息的准确性。利用自动化立体仓库实现了仓库管理的数字化、科学化、规范化和自动化,因此近些年它在国内外迅速发展起来并得到广泛的应用。
出库作业是自动化立体仓库的重要组成部分,出库作业是否准确、快速决定着整个系统性能的优劣,直接影响着企业与客户的利益。本文结合某公司单道自动化立体仓库系统,研究了自动均匀出库的有关算法。
2 系统概述及立体仓库出库的基本流程
2.1 系统概述
某公司的立体仓库为单道式整体自动化立体仓库每个巷道有1台堆垛机,整个立体仓库约2万个货位,货架共设15个巷道,每巷道68列,分左右两排架,各巷道货架层根据仓库的拱形建筑结构而不同。整个仓库系统分为管理层、控制层、执行层三个层次。管理层主要有联机入库、入库管理、出库管理、库存管理、查询统计、作业调度等上层功能;控制层接受管理层的指令,控制各作业设备完成下达的指令任务,同时监测各作业设备的状态信息,并将信息反馈到管理层,为管理层作业调度提供各个设备的状态信息;执行层各作业设备的控制器接受控制层的指令,控制设备执行各种操作。
2.2 立体仓库出库的基本流程
立体仓库出库详细流程因具体仓库应用系统而不同,但出库的基本流程基本都相似。出库的基本流程如图1所示。
3 相关因素的分析研究
随着公司销售市场的不断扩大,立体仓库的入出频率变得更加频繁,仓库平均出库量要达(800~1 000)吨/天。原先的指定货位出库,出库管理员需根据库存信息,手动地指定货位范围出库,每次分配作业出库管理员都要查询库存的详细信息,工作繁琐,出库速度慢,仅能达到(600800)吨/天。因此提高系统的出库速度、提高客户出库服务的公平性是实施的关键。下面分析了与出库作业分配、执行相关的因素。
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
从第一条出库作业开始 do while ll_row <= ll_rowcount
ll_xiangdao 表示当前巷道,令ll_xiangdao为 1
从第一巷道开始
do while ll_xiangdao <= ll_xiangdao_count
if ll_xiangdao的巷道有要出库的物品型号 then
按照距离优先的分布方法将本巷道的未分配的货位库存信息排序。距离优先方法就是离出库口近的货位的物品型号先出库。实现方法是过滤出满足出库要求的货位,并按照计算公式value = integerfloor 系数1 + integerlist 系数2 + integerline 计算出各个货位的权值value 将货位库存信息按value值降序排列选择排序后的第1行库存信息,生成出库作业,标识货位库存信息为已配。
ll_xiangdao ++
ll_row ++
if ll_row > ll_rowcount then
break
end if
else 巷道中没有要出库的物品
ll_xiangdao ++
end if
loop
if ll_xiangdao > ll_xiangdao_count then continue
loop
其中value表示权值,floor表示货位层,list表示货位列,line表示货位排,系数1、系数2(为正整数)的取值可根据仓库规模而定,只要保证系数2大于系数1,这是因为货位的列反映了货位离出库口的远近,根据距离优先原则,列越大,离出库口越近,同时应该先出高层货为了货架支撑平衡,排反映出巷道中货位的左右之分,单排为左、双排为右。
4.4 出库作业优先级的算法
根据客户优先级与客户出库托盘序列号可计算出出库作业优先级priority的算法,算法公式为:
salver_count = salver_start_num + k;
priority=intll_cli
ent_count/常数 系数1+ Salver_count 系数2+ll_client_count %常数。
其中salver_start_num表示客户出库作业托盘起始序列号,k表示该客户出到第几盘,salver_count表示作业托盘序列号,ll_client_count表示客户优先级,intll_client_count / 常数
表示该客户是第几批到达的,ll_client_count %常数表示该客户是同批到达客户的序列号;依据仓库平均出库量及用户需求,系统要实现同时最多能为10个客户进行出库装车(可同时装车的客户可交叉出库),作者规定常数为10,系数1为100 000,系数2为100。表1用简单的示例描述了算法的结果。
示例简述:假设有A、B、C三个客户,到达顺序分别是21、22、23;A要出4盘物品,B、C各要出3盘物品,其中A已出完1盘,还剩3盘,B、C均还未出库;则A的后3盘与B、C的3盘应交叉出库,即通过上述算法计算出表中作业优先级并根据优先级顺序出库。
|