作为现代制造业重要组成部分, 仓储是连接生产制造与销售服务的桥梁, 高效的仓储运营不仅能及时响应客户需求, 还能有效降低成本
Gue等
货位分配是仓储作业中极为重要的环节, 良好的货位分配既显著减少货物存取的行程时间又能保证货架结构的稳定性
Fishbone型是一种典型的非传统布局方式 (如图1所示) , 整个仓储可均分为4个货区, 其中存取点 (pickup and deposit point, P&D点) 位于仓储前端底部中心, 左右两边有各有1条主通道 (cross aisle) , 若干条拣货通道 (pick aisle) 与主通相交, 由此整个仓储布局呈Fishbone型。
该仓储中货位的长和宽均为l, 高为h。k (k=1, 2, 3, 4) 为货区号, 从左下角区域开始按逆时针方向分别为1区、2区、3区、4区;x (x=1, 2, …, xmax) 为货位的排数;y (y=1, 2, …, ymax) 为货位的列数;z (z=1, 2, …, zmax) 为货位的层数。位于k区x排y列z层的货位记 (k, x, y, z) , 例如 (4, 2, 7, 3) 表示该货位位于4区2排7列3层。i (i=1, 2, …, imax) 为货品的编号, mi为货品的质量, ri为货品的存取频率, ji (j=1, 2, …, jmax) 为第i类货品的数量。v1为AGV (automatic guided vehicle) 的水平运行速度, v2为其竖直运行速度。另外, 货架的列数ymax随着x不断变化, 其表达式为
式 (1) 中, Y为最大列数, 即第一排货架的列数。
Lx为AGV小车从P&D点出发到目的货位过程在主通道的行驶距离, 其表达式为
货位分配优化的目的是根据货物以及货架的特性为待入库的货物分配合适的存储位置, 从而降低仓储作业成本, 提高作业效率, 使得仓储效益最大化。在进行货位分配时一般要遵循一些基本原则, 如先进先出原则、高近低远原则、上轻下重原则等
模型假设:
(1) 货位分配前待入库货物的数量、质量、存取频率等信息已知。
(2) 同一类的货物可以存放于不同货位, 但一个货位只能存放一个货物。
(3) v1与v2已知且不考虑AGV的启动与制动时间。
(4) 单次行程中AGV只能访问一个货位。
(5) 拣货通道宽度与单排货架的宽度相等。
目标函数:
约束条件:
式 (3) 表示以货物出入库效率最高建立的目标函数, 式 (4) 表示以货架稳定性最优建立的目标函数。式 (5) ~ (7) 为Fishbone布局中仓储货位分配的约束条件。
当前, 处理多目标优化问题的方法比较多, 普遍采用的是赋权法
量纲归一化得到的子目标函数F1、F2, 总目标函数F及适应度函数G如下:
其中,
遗传算法 (genetic algorithm, GA) 由Holland教授提出后得到长足发展, 尤其在处理组合优化问题上更是被广泛运用。然而, 该算法也存在着诸如进化初期易“早熟”、进化末期难收敛等问题
编码是算法设计的关键一步, 编码方式多种多样, 需要针对求解问题及数学模型的特征设计相应高效的编码方式。本文此处采用矩阵式编码, 即单个个体的基因由一个imax×a的“伪二进制”矩阵表示。其中, 第i行代表第i个货物被分配的货位, 而列长a则由仓储货区数k、货架的最大排数xmax、货架的最大列数Y以及货架的最大层数zmax共同决定。例如有5个货物需要存放, 且仓储参数k=4、xmax=9、Y=13、zmax=4, 则某个体基因编码方式如图2所示。
在个体编码矩阵中, 第1~2列代表货位的货区数, 第3~6列代表货位的排数, 第7~10列代表货位的列数, 第11~12列代表货位的层数。在上述矩阵中第1行代表的货位为 (4, 9, 13, 4) , 而第2行代表的货位为 (1, 1, 1, 1) 。
轮盘赌法是常用的选择算子, 但是这种方法会产生较大的抽样误差, 容易造成“早熟”的现象。为此, 本文在选择操作之前采用自适应策略对适应度值进行变换:
式中Gmax为当前种群最大适应度值, Gmin为当前种群最小适应值, t为当前遗传代数, T为终止遗传代数, 再按照概率
在进化初期
另外, 在交叉与变异算子中也采用自适应策略动态调整参数, 使交叉率和变异率随适应度值进行动态变化。如此, 能够使算法在初期保持全局搜索能力强而后期又可充分发挥局部搜索能力, 加速收敛到最优解。
式中, Pcmax和Pcmin表示交叉率取值的上限与下限, Pmmax和Pmmin表示变异率取值的上限与下限, Gavg为当前种群平均适应值,
输入:imax, mi, ri, v1, v2, l, h, w1, w2。
输出:最优货位分配方式。
步骤1输入货位分配优化模型参数:imax, mi, ri, v1, v2, l, h, w1, w2。
步骤2设置AGA参数:T, J, Pcmax, Pcmin, Pmmax, Pmmin。
步骤3算法开始t=1, 运用2.2.1中矩阵编码方式生成初始种群J。
步骤4判断进化次数是否超过终止进化代数 (t>T) , 若是则转步骤5, 否则继续。
步骤4.1计算个体的目标函数值F以及适应度G;
步骤4.2选择算子, 采用式 (12) 对适应度值进行G变换为G1;
步骤4.3交叉算子, 采用式 (13) 对交叉率进行自适应调整;
步骤4.4变异算子, 采用式 (14) 对变异率进行自适应调整;
步骤4.5进化次数t=t+1。
步骤5算法结束, 输出最优货位分配方案。
粒子群优化算法 (particle swarm optimization, PSO) 是一种基于鸟群迁徙行为的群体优化算法, 其迭代寻优是一种由粒子速度与位置共同决定的复杂非线性变化过程
货位分配优化问题的解在空间呈离散分布, 此处借鉴离散思想对MPSO进行编码
并且在迭代选优过程中采用如下公式更新粒子状态:
其中, Ptid为粒子i的个体极值, Ptgd为种群的群体极值。r1、r2为介于[0, 1]之间的随机数;ω为惯性权重, 一般设为常数或线性递减函数;c1、c2为学习因子, 一般为非负常数。然而考虑到PSO实际寻优是非线性变化过程, 本文根据群体最优解的变化采用非线性函数来更新惯性权重ω (初始ω0=0.9) , 保证算法能够跳出局部最优解而在快接近最优解时又能加快收敛到全局最优解, 具体更新过程如下所示。
由PSO理论可知, c1反映的是粒子自身学习能力, 而c2为群体学习能力, 如果在迭代初期设置c1>c2, 粒子则能够趋向种群最优;而在迭代末期c1<c2, 则将有利于粒子收敛于全局最优解。因此, 本文对于c1、c2的改进如下所示:
其中, c1i、c2i、c1f、c2f为初始设置的常数, t为当前迭代次数, T为最大迭代次数。研究表明
输入:imax, mi, ri, v1, v2, l, h, w1, w2。
输出:最优货位分配方式。
步骤1输入货位分配优化模型参数:imax, mi, ri, v1, v2, l, h, w1, w2。
步骤2设置MPSO参数:T, N, c1i, c2i, c1f, c2f, ω0。
步骤3算法开始t=1, 随机生产初始粒子群N的位置及速度。
步骤4判断迭代次数是否超过最大迭代次数 (t>T?) , 若是则转步骤5, 否则继续。
步骤4.1计算个体的目标函数值F以及适应度G;
步骤4.2更新粒子的个体最优Pit以及群体最优Pgt;
步骤4.3根据式 (19) ~ (21) 更新惯性权重ω与学习因子c1, c2;
步骤4.4根据式 (17) 与式 (18) 更新各个粒子的位置与速度;
步骤4.5迭代次数t=t+1。
步骤5算法结束, 输出最优货位分配方案。
某汽车零部件制造企业的非传统布局仓储中心货架按如图1的Fishbone型摆放。其中, 货位的长和宽均为l=1 m, 货位的高为h=1 m, 第一排货架的货位数为xmax=9, AGV的水平速度v1=1 m/s, 竖直速度v2=0.5 m/s, 决策者偏好权重w1=w2=1。货物信息如附表1所示 (50类物品共占203个货位) , 这些货物按照人工方式进行存放得到的初始分配方案如附表2所示。由于算法参数的设置对最终优化结果优劣程度有较大影响, 为保证仿真结果的客观性, 根据初始实验本文设置AGA与MPSO的参数信息如表1所示。设计采用Matlab2015b编译, 运行环境Intel (R) Xeon (R) 2.10 GHz 16 GB, 操作系统Windows 7。
附表3、4分别是由AGA和MPSO得到货位分配优化方案。表2为3种不同方法得到货位分配方案的子目标函数值f1、f2以及归一化后子目标加权求和值F。数值越小表示货位分配方案的效果越优, 由表2可知AGA对上述2个子目标函数值均有优化, 优化率分别为23.28%与44.56%;而MPSO的优化效果稍微弱一些, 优化率为21.32%与27.25%。由此说明本文提出的2种方法对于提升非传统布局仓储出入库效率以及货架稳定性两方面均有效可行, 并且优化效果明显。
表2 3种货位方案目标函数值
注:初始方案无法求得其单目标最优值故无法进行归一化处理, 因此其F值为空缺。
在相同环境下运行, AGA与MPSO 2种算法总运行耗时分别为412 s与527 s, 其中图3、图4分别给出了2种算法的收敛过程, AGA在第604代开始收敛于最优值, 而MPSO则于627代后开始收敛。AGA整体的收敛速度比MPSO更快一些, 并且再结合上述优化结果则表明在求解该问题时, AGA的整体优化性能比MP-SO更强一些。
为了进一步验证本文提出的2种算法通用性以及对比算法的优化性能, 本文在4组不同规模的货位分配优化问题下, 对4种算法基本GA (simple genetic algorithm, SGA) 、AGA、基本PSO (simple particle swarm optimization, SPSO) 、MPSO再次进行仿真实验, 其中, SGA与SPSO为无改进的基本算法, 其他参数设置与AGA和MPSO设置相同。由于归一化加权后的总目标函数F值并不能直接反映优化效果, 因此本文选取更为直观的出入库效率目标函数值f1和货架稳定性目标函数值f2以及收敛代数Gconv等3个指标, 在相同环境下分别运行10次, 计算上述3个指标的均值, 得到如表3所示结果。
根据表3, 从收敛代数来看, 在问题规模较小情况下, 基本算法与本文提出的改进算法收敛代数也大致相同, 同样AGA与MPSO的收敛代数值也相当, 这是因为在问题规模不大时, 最优解相对来说比较容易求得。但随着问题规模的扩大, 本文设计的2种改进算法相比基本算法在求解效率方面的优势开始显现, 这一结果也验证了改进策略可提升算法末期的局部寻优能力, 加速收敛。而AGA和MPSO单独对比分析可知, 随着问题规模扩大, AGA收敛速度波动较小, 算法鲁棒性更强。
结合表4, 在优化效果方面, 相比基本算法, 在不同规模问题下AGA与MPSO的优化效果均高于相应的基本算法, 说明改进策略也提升了算法的全局寻优能力, 得到的货位分配方案改善了出入库效率, 增强了货架的稳定性, 而从AGA与MPSO二者单独的对比则再次验证了AGA整体优化性能比MPSO更强。当然, 随着问题规模的扩大, 所有算法的优化效果值都在下降, 这是因为随规模扩大初始方案的目标函数值呈指数级扩大, 因此, 优化效果下降也是合理的。
表4 4种算法对不同规模问题的优化效果
本文以实际问题为背景, 分析了非传统布局仓储及货位分配优化问题的特征, 构建了以货物出入库效率最高和货架稳定性最优为目标的多目标货位分配优化模型。然后, 针对优化模型分别设计了适用于解决此类问题的自适应遗传算法 (AGA) 和改进的粒子群优化算法 (MPSO) , 并采用Mtalab实现了问题的仿真以及算法求解。结果表明, 本文提出的2种方法均能更有效地提高货物出入库的效率, 降低货物存放重心, 提高货架的稳定性。此外, 4种算法性能对比的结果则说明本文设计的改进算法相比基本算法对于优化货位分配效果更加明显, 同时也表明AGA整体优化性能比MP-SO更优, 鲁棒性更强。但如何提高算法求解大规模以及超大规模问题的求解速度与优化精度仍然有待进一步研究。
附表1 货物信息
附表4 MPSO优化后货位分配方案
【本文标签】
【责任编辑】平文云仓