智能化立体仓库是近年来各工业企业和商业物流企业采用的主要仓储形式, 在制药、烟酒、港口、机械、物流等行业得到广泛应用。智能化立体仓库采用计算机管理, 出入库设备由计算机控制, 货物在仓库中采用立体货架存储, 因此, 仓库利用率高、出入库工作效率高、库存信息准确等成为这类仓库的特点。本文以秦皇岛港务局备件中心自动化立体仓库计算机管理系统开发为例, 介绍在利用计算机进行入出库管理时, 货位分配和选择的综合优化策略和算法。立体仓库的结构一般由立体货架、堆垛机、输送机、托盘、周转箱等组成, 将要存入立体库的备件先放入托盘, 再利用输送机和堆垛机将托盘放入立体库中的某个货位, 即完成了一个托盘的入库工作。因此, 在利用计算机的立体仓库进行管理入库时, 希望计算机能够辅助决策两个问题, 一个是组盘问题, 一个是货位分配问题。所谓组盘是指当把备件放入托盘时, 由于配件的种类很多, 大小尺寸、外观形状、重量等各不相同, 特别小的和易损的配件要先放入周转箱后再放入托盘。如何将各种备件和周转箱等有机地组合到一个托盘上, 使一个托盘上的备件数量最大化, 而又在重量和外形尺寸上符合规定, 即计算机智能组盘是一个十分复杂的优化问题。所谓货位分配问题则是在组盘完成后, 要在立体仓库中为其分配一个空货位, 在分配空货位时也要考虑很多因素, 如重量均匀分布、就近货位选择、备件品种均匀分布、备件使用率、货位空置时间等, 因此, 货位分配也是一个多目标优化的复杂问题。当然, 货位分配可以由人工直接指定, 但对于几千个货位的大型仓库, 选择哪个位置才能保证仓库整体的安全性、出入库工作的高效性以及备件分布的均匀性, 仅靠人工是很难做到的, 还是要通过计算机计算来给出一个建议货位。本文要讨论的问题就是入库时的货位分配策略与算法, 入库组盘策略将在另文中讨论。
立体仓储系统一般由货架、堆垛机、输送机、RGV小车 (或叉车) 、托盘、周转箱以及各种控制传感器组成。本文所涉仓库由8个巷道16排货架组成, 有4个堆垛机担负入出库任务, 每个堆垛机负责2个巷道4排货架, 轨道设计采用“转弯式轨道”, 如图1所示。
立体仓库的管理要达到智能化是离不开计算机的, 管理立体仓库的计算机系统一般由4个部分组成, 包括仓库信息管理系统 (WMS) 、数据采集系统 (RFS) 、设备调度系统 (FPS) 、设备监控系统 (WCS) , 这4个系统密切关联。
仓库信息管理系统主要对立体仓库中的各种数据进行管理, 包括基础数据、入库、出库、各种信息查询、移货、退货、移库、退库、盘库等。并根据库存中的情况为新入库的托盘分配货位, 根据出库要求确定出库托盘的货位, 生成各种出入库作业信息并下发到任务表中, 由调度系统调度各种设备去完成这些任务。
调度系统则访问WMS系统写入任务表中的各种任务, 根据当前设备的各种状态对设备运行进行调度, 为它们分配任务, 并确定任务的执行时间, 处理设备运行中的各种异常情况。
数据采集系统主要是指在大型立体仓库中, 由于仓库面积较大, 入库出库备件的信息采集通常采用无线手持设备, 利用条码识别来获取信息, 以实现备件的组盘或拣选。因此, 各种备件的条码设计以及利用手持终端采集数据进行组盘与拣选的算法设计尤为重要。
设备监控系统是对立体仓库中的堆垛机、输送机、RGV导引车等设备的运行状况和状态进行监视和控制, 随时了解各种设备的运行是否正常, 在手动状态下, 可人工控制各种设备完成各种任务。
入库货位的分配优化需求包括下面几个方面:
(1) 重量均匀分布:仓库中的所有备件应在重量方面均匀分散于整个仓库, 以免因重量严重失衡而导致仓库倾覆。
(2) 备件品种均匀分布:同种备件应该放置在不同巷道, 以保证在某个巷道堆垛机出现故障时不影响所需备件的出库使用, 保证生产的正常进行。
(3) 就近原则:为了提高入库效率, 距离入口的最近货位优先选择。
(4) 货位空置时间原则:入库时, 最长时间空置的货位优先选择。
针对以上情况, 在计算货位时, 应根据实际情况的需求, 对各种策略的使用赋予不同的权重和优先级别, 进而综合使用多种策略或交替使用策略, 以在仓库空间利用和出入库工作效率两个方面取得满意效果。
基于上述货位分配的优化需求, 仓库安全性是非常重要的, 因此, 算法的出发点是以重量均衡分布为主, 兼顾备件品种均匀分散、就近存放的原则。在实际应用中的主要思路是, 在备件入库时, 首先采用备件分散存放的原则确定堆垛机的选择, 然后再将“重量均衡策略”贯穿于排、区域、列、层的所有筛选过程之中。当筛选结果根据“重量均衡原则”不能进一步加以区分时, 遵循“就近原则”。
由于秦皇岛港务局内包含多家生产型公司, 这些公司的所有备件都要存放于立体仓库内, 按照设计要求, 并不在物理上为各个公司划分存储区, 各公司的备件可以存储于立体仓库中的任何一个货位, 但从逻辑上要将不同公司的存放区域分开, 存放同一公司的货位划归一个逻辑仓库。本文中称公司为“组织单位”, 将同属于一个组织单位、类别相同、按一种或多种属性进行划分具有相同的出库选择优先权的备件, 称为同组属性备件。按照备件均匀分散的原则, 具有同组属性的备件应该分散在不同的巷道。因此, 为了确定备件应该存放的巷道, 定义函数ExistEquip (EquipID) 为某货位范围内是否存在同组属性备件的函数, 参数EquipID为备件编码, 返回值为True, 表示存在该种备件, 返回值为False, 表示不存在该种备件。
另外, 在基于重量均衡分布计算货位地址时, 还应该考虑以下因素: (1) 同一货位上的备件应属于同一逻辑仓库; (2) 各货位对承载重量以及长、宽、高等都有一定的要求, 每个货位上要存放的托盘都应符合一定的业务逻辑要求。为了后面算法描述的方便, 定义一个函数Restrict_Loc () , 其功能是判断某一货位是否满足如上的“业务逻辑”要求, 若满足, 则返回True, 否则, 返回False。
为了建立目标优化计算数学模型, 便于算法描述, 对立体仓库进行抽象描述, 定义如下变量:
m:堆垛机的数量为m台, Si表示第i台堆垛机, 按照实际情况, 本立体库共有2×m个巷道, 4×m排货架。
cols:列总数。
lays:层总数。
l, x, y:分别表示排、列、层, 则1≤l≤4×m, 1≤x≤cls, 1≤y≤lay。
an:排上均匀划分区域数量, 设列总数cls可以被an整除。
apn:每个区域中列的数量, apn=/an。
va[i]:第i个区域中列号最小的列, 即va[i] = (i-1) ×apn+1。
pi:某货位上, 备件i的单位重量。
qi:某货位上, 备件i的数量。
bi:某货位上, 备件i的容器重量。
建立重量均匀分布的级联式货位分配策略模型的主要过程如下:
Step1 选择目标堆垛机
堆垛机的选择遵循“分巷道存放策略”, 在入库选择货位分配时, 首先按堆垛机号的顺序依次检索堆垛机Si, 在其可控制的货架范围内 (如图1所示, 每一堆垛机控制四排货架) 是否存在此同组属性 (∃ExistEquip () 表示) 备件, 如果Si堆垛机控制范围内无此同分组属性的备件, 并且满足∃Restrict_Loc () 的限定条件, 则可以确定目标堆垛机为Si。否则, 如果所有堆垛机都不满足以上条件, 则须计算所有货架目前的承载重量, 其中每个货位上所放备件的总重量通过函数Weight_Loc (l, x, y) 获得, 具体表示如下:
Weight_Loc(l,x,y)=∑i=0K(pi×qi+bi)(l,x,y)=∑i=0Κ(pi×qi+bi)
式中, K≥0为货位上备件种类的数量。
计算第l排货架所放备件总重量为:
Weight_Row(l)=∑x=1cols∑y=1lays(Weight_Loc(l,x,y))(l)=∑x=1cols∑y=1lays(Weight_Loc(l,x,y))
式中, cols为总列数, lays为总层数。
计算堆垛机Si控制范围内货架所放备件总重量为:
Weight_Stacker(i)=∑l=4i−34iWeight_Row(l)(i)=∑l=4i-34iWeight_Row(l)
式中, l为排号。
按每个堆垛机控制范围的货架所放备件重量进行排序, 选择重量最轻的并且满足∃Restrict_Loc () 限定条件的堆垛机号v_BestStacker。目标函数为:
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪f_GetBestStacker=GetMin(Si), ExistEquip(EquipID)=truef_GetBestStacker=GetMin(Weight_Stacker(Si))∧ ∃Restrict_Loc(),ExistEquip(EquipID)=false{f_GetBestStacker=GetΜin(Si),ExistEquip(EquipΙD)=truef_GetBestStacker=GetΜin(Weight_Stacker(Si))∧∃Restrict_Loc(),ExistEquip(EquipΙD)=false
Step2 选择目标排
为了使一个堆垛机范围内的重量分配均匀, 在一个堆垛机范围内调用Weight_Row () 函数获取重量最轻并存在满足Restrict_Loc () 的排为目标排, 如果有多个这样的排, 选择最小排号为目标排v_LaneWay_Row, 目标函数为:
f_GetBestRow=GetMin (Weight_Row (l) ∧∃Restrict_Loc () )
Step3 选择目标区域
在目标排的基础上, 为了更好地让每排货架受力均匀, 在选择列之前把列划分成若干个区域, 选择重量最轻区域, 如果最轻的目标区域不唯一, 则选择距离库前区最近的区域。区域的划分有助于整体重量的均匀分布, 优于仅从最轻列来确定目标列。
从图2可见, 我们假设每5列分为一个区域, “x”为有货货位, “o”为空货位, 如果仅按列重量排序, 相同重量列按距库前区最近的策略, 图中第4列到第10列空货位则具有相同的重量, 按距库前区最近策略最终会选择第4列空货位为目标货位。如果采用分区法先选择重量最轻的区域, 则第2个区域为目标区域, 然后依据距库前区最近策略最终确定第6列为目标列。从重量均匀策略来讲, 后者显然优于前者。通过函数:
计算第i个区域的区域重量, 选择重量最轻且满足条件∃Restrict_Loc () 的区域作为目标区域v_BestArea。如果最轻的目标区域为多个, 则选择距离库前区最近的区域, 即最小编号区域。目标函数为:
f_GetBestArea=GetMin (Weight_Area (i) ∧∃Restrict_Loc () )
Step4 选择目标列
在目标区域的基础上, 通过函数:
Weight_Vertical(i)=∑y=1lays(Weight_Loc(i,y)(i)=∑y=1lays(Weight_Loc(i,y)
计算第i列的重量, va[v_BestArea]≤i≤va[v_BestArea]+apn选择最轻且满足条件∃Restrict_Loc () 的列作为目标列v_BestVertical, 如果最轻目标列为多个则选择距库前区最近的列, 即区域中最小编号列, 目标函数为:
f_GetBestVertical=GetMin (Weight_Vertical (i) ∧∃Restrict_Loc () )
Step5 选择目标货位
在目标列的基础上, 为使货架受力情况良好, 应保证货架结构的稳定性, 使得重心在下层, 选择最下面满足Restrict_Loc () 的层为目的层v_BestLayer, 最后得到目标货位地址v_LaneWay_Row-v_BestVertical-v_BestLayer (货位地址由排-列-层唯一确定) 。
显然, 算法的整个过程中是一个自顶向下缩小范围的过程, 如果在某过程限定的范围内都不存在满足Restrict_Loc () 条件的货位, 会直接返回“#”, 表示在此策略中不存在符合条件的货位地址。
立体仓库管理系统的开发主要是基于对数据库的操作, 为了让程序有更好的封装性并能提高数据库的计算速度, 把整个重量均匀分配策略都写为一个存储过程, 以便于调用。整个方法的Step1选择最优目标堆垛机时, 为使备件分散存放, 需要验证是否存在此同组属性备件, 因此方法的前提条件就是要有入库的备件编码 (EquipID) 和当前的货位信息, 作用域是仓库整体, 所以调用时只传递备件编码作为参数, 得到的结果即为目标货位。主目标函数调用过程如下:
当通过WMS系统的“货位分配综合优化算法”计算得到最优货位后, 把备件的入库信息写进入库单, 通过调度系统向堆垛机下发作业、通知堆垛机把备件送到指定的货位地址上, 作业完成后, 系统会参照入库单上的记录修改货位上的备件信息。但这里要强调的是, 为了提高立体仓库的工作效率, 当今大多数立体仓库管理系统都具有批量下发作业的功能, 也就是说, 仓库管理员可以一次操作把多个货位作业信息写进作业表, 实现一次下发多个作业, 堆垛机批量执行的处理方式。所以, 当通过此算法获得目标货位地址下发作业后, 备件的信息还在入库单中, 在作业未完成时, 管理系统不会修改货位上的库存信息, 因此在算法实际应用过程中, 计算重量的函数还要包括未完成的入库单中备件的重量信息。
下面提取了秦皇岛港务集团公司自动化立体仓库中的仓库、货架、备件等实际数据为依据, 通过44次入库后, 随机提取部分数据:
提取第1号堆垛机数据。表1列出了第1号堆垛机范围内的4排重量, 体现了在整体货架若干排上重量相对均匀的分布。
提取第3排数据。表2所列从第3区到第10区的重量。
可见在目标排的基础上, 选择把列划分成若干个区域, 可以更为有效地让每排货架受力均匀。区域的划分有助于整体重量的均匀分布, 优于仅从最轻列来确定目标列。测试结果体现了货架承重在入库选择货位过程中的重要性, 同时兼顾了其他原则的有效应用。
本文主要介绍了以重量均匀分布为目标的货位分配策略, 提出了一个从堆垛机控制范围、排、区域、列、层等多个角度进行计算的级联式的货位优化分配的算法及其实现, 基本满足了用户提出的重量均匀分布、备件品种均匀分布、就近存取等的库存管理需求, 对于仓库货架的整体安全性、出入库工作的高效性都是非常有意义的。本文所提出的算法已经在秦皇岛港务集团公司备件中心智能化立体仓库中进行了应用实施, 根据实际仓库、货架、货物的数据信息进行分析, 基本满足了用户提出的重量均匀分布和品种均匀分布的要求, 仓库的整体和局部货架承重受力比较均匀, 保证了仓库的安全。整个系统已运行一年, 效果良好, 验证了本文所提策略的有效性。
上一篇: 多层物流仓库设计探讨