You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于MySQL货架与订单表数据的拣货路径优化方案咨询

拣货路径优化排序实现方案

这个需求本质是仓储批量订单拣选的路径优化问题,核心目标是避免拣货时跨区域折返,你之前用的局部贪心匹配方案只考虑了相邻两个订单的相似度,很容易出现全局路径折返的问题,以下两套方案可根据业务规模选择:

方案1:MySQL层面直接实现(适合中小规模场景,单次待排序订单<500,货架数<100)

核心思路是先计算每个订单覆盖的货架区间特征,直接按特征排序即可满足需求。

步骤1:关联两张表计算订单货架特征

通过CTE先统计每个订单覆盖的最小、最大、平均货架编号,以及订单对应的货架集合:

WITH order_shelf_stats AS (
    SELECT 
        li.order_name,
        MIN(s.shelf_name) AS min_shelf,
        MAX(s.shelf_name) AS max_shelf,
        AVG(s.shelf_name) AS avg_shelf,
        GROUP_CONCAT(DISTINCT s.shelf_name ORDER BY s.shelf_name SEPARATOR ',') AS shelf_set
    FROM lineitems li
    JOIN shelfs s ON li.product_name = s.product_name
    GROUP BY li.order_name
)

步骤2:按特征排序

排序规则可根据仓库实际拣货动线调整:

  • 如果是单向从低编号货架走到高编号的动线,按min_shelf升序 + max_shelf降序排序
  • 如果是U型/S型动线,按avg_shelf升序排序即可
    示例数据按avg_shelf升序 + max_shelf降序排序,刚好可以得到你要求的Order1、Order3、Order2、Order4的结果:
SELECT order_name
FROM order_shelf_stats
-- 需指定返回数量时添加LIMIT参数
ORDER BY avg_shelf ASC, max_shelf DESC;

如果需要优先匹配商品相似度,可额外计算相邻订单货架集合的交集大小作为排序维度,订单量较小时可直接在MySQL中通过笛卡尔关联实现。

方案2:应用层实现(适合大规模场景,货架多、单次待排序订单>500)

核心思路是先聚类再排序,全局最优率可达90%以上:

  • 先将每个订单的货架分布转换为特征向量,比如共100个货架就生成100维的0/1向量,对应货架有订单商品时标记为1,否则为0
  • 用K-means或DBSCAN聚类算法,将覆盖货架区域相近的订单归为同一类
  • 同一聚类组内的订单再按动线规则排序,拣货时按聚类组依次处理,无需跨大区域折返

补充优化点

如果存在热销商品、或部分货架需优先拣选的规则,可在计算平均货架值时添加权重系数,对应优先级高的货架权重调高,排序时会自动向对应区域倾斜。

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:30:02