热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2022MathorCup高校数学建模挑战赛B题思路无人仓的搬运机器人调度问题

#2022年第十二届MathorCup高校数学建模挑战赛题目###思路交流:点击链接加入群聊【22年mathorcup数模交流】:https:jq.qq

#2022 年第十二届 MathorCup 高校数学建模挑战赛题目
###思路交流:点击链接加入群聊【22年mathorcup数模交流】:https://jq.qq.com/?_wv=1027&k=wbVQSibD

B 题 无人仓的搬运机器人调度问题

本题考虑在无人仓内的仓库管理问题之一,搬运机器人 AGV 的调度问题。更多的背景介绍请参看附件-背景介绍。对于无人仓来说,仓库的地图 模型可以简化为图的数据结构。

*仓库地图:*

无人仓内的设施,可以细分为 AGV 能行驶的道路节点,和别的功能节点(如工位,储位等)。这样,仓库地图模型可以抽象为这些节点构成的图, 再按 AGV 能到达的节点来添加图的边。简单来说,附件仓库地图数据

img(map.csv)通过描述节点类型,以及节点之间的关系(边),可以构建如下图 1 所示的仓库地图。

图 1:仓库地图

仓库地图数据(map.csv)是按 csv 格式存储,其节点类型有如下几类, 在上图中用不同颜色标注。

1) *路径节点*(灰色):AGV 可以自由通行。

**
**

2) *储位节点*(绿色):放置托盘或者普通货架,AGV 可以到达。一般只有一个位置可以进出,即靠近道路的位置。

3) *保留节点*(黄色):保留位置。

4) *柱子节点*(黑色):障碍物,AGV 不能到达。

5) *拣选工位节点*(蓝色):拣选机器人在这里把商品打包后从传送带出库,一般有多个托盘停靠位。

6) *补货位节点*(粉色):从高密度区补货的商品放置点,一般通过传送带输送。

7) *空托盘回收节点*(红色):空托盘回收处,图中只有两处。

*无人仓任务场景:*

假设仓库地图按上述方式抽象成图,搬运机器人 AGV—次只搬运一个托盘(带有多种商品),能执行从一个地图节点�!移动到�"的路径指令,其中每一步只能移动到有边相连的地图节点,不能斜着移动。附件中机器人 数据(agv.csv)里,给出了 20 个搬运机器人 AGV 在仓库地图上的初始位置坐标。

假设仓库内商品都是中大件商品,每个在储位的托盘上叠放着多种商 品,附件中的库存数据(pallets.csv)给岀了全部托盘的位置以及托盘上放的商品信息。对于中件仓来说,即使用户订单包含了多个商品,实际发货 还是一个商品一个包裹。这样,AGV 执行任务只需要尽快满足商品数目的要求,不需要等待同一订单中的全部商品到齐后才能出库。所以附件订单 数据(orders.csv)里,每个订单只有同一件商品以及对应的数量。

无人仓流程是根据给定的一段时间内订单数据流,结合当前库存情况,

统筹安排搬运机器人从储位搬运有需求商品的托盘到附近的拣选工位(即 出库任务),拣选完成后需安排搬运工位处的非空托盘到空储位(即回库任务),或者安排搬运工位处的空托盘到托盘回收处(即回收任务)等。本题只考虑这三种主要任务场景,即出库、回库、回收任务。

首先,对于出库任务,搬运机器人 AGV 把一个托盘搬运到拣选工位。但是对于同一个工位来说,同时能容纳放置的托盘数目是有限的。假设每 个拣选工位有 b 个停靠位,也就是能同时最多分派 b 个出库任务到同一个拣选工位,直到执行回库或者回收任务,有空停靠位后才能容纳新的出库 托盘。

其次,出库任务完成后,搬运机器人处于空闲状态,可以被安排执行 下一个任务,而不需要在停靠位等候着。不妨假设出库托盘在拣选工位需 要停留一段时间后,等拣选机器人打包发货后才能进行后续的回库或者回 收任务。这里假设停留时间固定为�#,也就是说,无论需要拣选多少商品, 都简化为停留时间�#后,该托盘可以被执行后续的回库和回收任务。

*无人仓总结:*

无人仓的主要运行场景就是安排搬运机器人 AGV 执行如下各种任

务。

*出库*:AGV 搬运载有商品的托盘到空闲拣选工位

*回库*:AGV 搬运拣选完成的托盘从工位回到仓库内空储位

*回收*:AGV 搬运拣选完成的空托盘从工位到托盘回收处

无人仓的核心是统筹优化上述任务的执行来最大化出库效率,安排

AGV 任务和路线需满足全局最优,达到实时响应,并避免拥堵/死锁等情况

发生。也需要均衡拣选工位之间的工作量。

*问题* *1*:AGV 统筹调度的最佳策略

假设先不考虑搬运机器人在执行任务时可能的碰撞问题,请在无人仓模型下设计调度算法,根据附件中订单数据(orders.csv),和仓库内的库存数据(pallets.csv),对于给定的 20 个搬运机器人(agv.csv),统筹调度和安排 AGV 任务,直到满足所有的订单需求,即全部拣选工位都空闲为止。这里,目标函数为在每个搬运机器人尽可能忙的同时,最小化全部搬运机器 人的行走总路径。

img下面左图中,用红色圆圈表示 AGV,用绿色方块表示货架或者托盘,用蓝色 X 表示拣选工位。右图中匹配了最近的 AGV、托盘和工位,使得指定AGV 去取托盘后再送到工位拣选。

图 2:AGV 匹配调度示例图

注意,现实场景中的目标其实是全局优化出库效率,节省人力,避免 高峰期出现"爆仓”现象。所以更合适的衡量指标是时间上的,要求在最短 的时间内满足订单需求。在某种程度上,目标可以转化为使得每个拣选工 位尽可能忙,即最小化最忙拣选工位的工作时长。另一方面,仓库内搬运 机器人 AGV 的合理投放数量一般是拣选工位的常数倍,因为投放太多的话出库效率不但不会改善,反而增加 AGV 拥堵的可能性。进一步考虑到每个工位可以增加停靠位,而且搬运机器人除了出库任务,还有回库和回收等

任务。所以使得每个 AGV 尽可能忙,然后最小化全部 AGV 行走总路径,

也是合理的模型目标简化。

*问题* *2*:任务均衡区域划分

为了更好地平衡拣选工位的负载,同时预防搬运机器人的局部拥堵, 根据拣选工位和库存商品数量对仓库地图进行动态分区。也就是对仓库内 储位上的每个托盘,都指定一个默认拣选工位。

请建立优化模型,使得每个拣选工位对应托盘的商品总量尽可能地平 均,同时要求最小化全部托盘到其默认拣选工位距离总和。类似下图 3 所示的区域划分。

进一步,根据某段时间内所需出库商品的库存分布,再结合问题一的

AGV 调度算法,更合理地均衡每个拣选工位在某段时间内的工作量。


img

图 3:拣选工位划分

*问题* *3*:避免碰撞和拥堵

在问题一和问题二的基础上,进一步考虑搬运机器人的碰撞和拥堵问 题。当仓库内同时有多个 AGV 在执行任务时,不可避免有些 AGV 在某个路径节点上相遇。特别地,如果两个 AGV 在一条货架窄巷道上相遇,那么

需要其中一个 AGV 避让。

在合理的假设下,请设计算法和防碰撞策略,使得搬运机器人能智能地避免碰撞。特别是在一些特殊节点处(如托盘回收处),避免出现多个 AGV 的拥堵,和可能的死锁场景。

img下图是一个死锁场景示例,一个 AGV 去拣选工位取空托盘,另一台AGV 去相邻停靠位放置托盘,他们占据了各自的前进路径节点后都不退让, 造成了死锁。

图 4:死锁场景示例

**
**

****附件一:****无人仓的背景介绍

仓库管理(也叫仓储管理)是对仓库内货物的接收、存储、发货等一系列活动进行有效的控制管理,维护仓库货物并确保日常经营活动正常进行。传统的仓库管理模式大多是人工管理模式,而这种管理方式有着不少问题, 特别是因为人力效率低下的因素导致的“爆仓”现象。

随着电商的兴起,无人仓逐渐作为自动化仓储物流系统的发展方向和 目标。最早的包括 Amazon 的 Kiva 机器人,以及后来 AGV 搬运机器人、SHUTTLE 货架穿梭车、DELTA 分拣机器人等各式各样的、高度自动化的机器人都是为仓库的无人化量身定制的。而无人仓内搬运机器人的调度问 题是其中的核心问题。

下面是无人仓模型涉及到的设施和因素,主要包括了搬运机器人,托 盘,储位,拣选工位,托盘回收处等。

*搬运机器人*

img搬运机器人,即 Automated Guided Vehicle (AGV),通过特殊地标导航自动将物品运输至指定地点。它是执行仓库内任务的主要单元,可以通过 指令指派一个AGV 去取一个货架到仓库内指定地点,比如拣选工位,储位, 回收处等。

**
**

*托盘和储位*

img仓库内绝大部分区域都是放置托盘的储位,而托盘上摆放着待出库商 品。有的仓库里托盘用多层的货架代替,无论货架还是托盘都可以被 AGV 搬运。

*拣选工位*

img由分拣机器人拣选商品,完成打包后通过传送带输送出库,包括了多 个放置托盘的停靠位,分拣机器人以及商品出库的传送带。

*托盘回收处*

仓库内用来回收空托盘的固定区域,一般仓库内会指定 2-4 个固定位置为托盘回收处。

**
**

*仓库地图*

从上述几个设施,连同AGV 行驶道路,把仓库内区域细分为道路节点, 和有限制的节点(如工位,储位等)。从而仓库模型可以抽象为节点和边的 图。简单来说,附件仓库地图数据(map.csv)通过描述节点类型,以及节点之间的关系(边),可以构建如下图所示的仓库地图。

img

*地图说明*

附件中仓库地图数据(map.csv)是按 csv 格式存储,节点类型有如下几类,分别用不同颜色标注(参看上图)。

1) *路径节点*(灰色):AGV 可以自由通行。

2) *储位节点*(绿色):放置托盘或者普通货架,AGV 可以到达。一般只有一个位置可以进出,即靠近道路的位置。

3) *保留节点*(黄色):保留位置。

4) *柱子节点*(黑色):障碍物,AGV 不能到达。

5) *拣选工位节点*(蓝色):拣选机器人在这里把商品打包后从传送带出库,一般有多个托盘停靠位。

**
**

6) *补货位节点*(粉色):从高密度区补货的商品放置点,一般通过传送带输送。

7) *空托盘回收节点*(红色):空托盘回收处,图中只有两处。

*附件二* 无人仓数据文件

本题提供了无人仓模型相关的 4 个数据文件,其数据格式解释如下。数据文件下载地址:https://www.coap.online/competitions/2

*仓库地图数据*(map.csv)

此文件存放是地图信息,内容包括仓库内各类节点的具体分布情况, 以及节点之间的连通性。给定的地图是32 × 22的一块矩形区域。数据字段的含义如下:

l *TYPE*: 节点类型。

1:路径节点,AGV 可以通行。

2:储位节点,放置托盘或者普通货架,AGV 可以到达。一般只有一个位置可以进出。

3:保留节点,保留位置,暂不处理。

4:柱子节点,障碍物,AGV 不能到达。

5:拣选工位节点,拣选机器人在这里把商品打包后从传送带出库, 一般有多个托盘停靠位。

6:补货位节点,从高密度区补货的商品放置点,一般通过传送带输 送。

7:空托集放工位节点,空托盘回收处。

l *X*: 节点所在位置的 X 轴坐标。

l *Y*: 节点所在位置的 Y 轴坐标。

l *NEIGHBORS*****:****AGV 可到达的节点,格式为�1: �1; … ;�4: �4,表示可以从当前节点能到达的邻近节点的坐标集合。这里最多是 4 个邻近节点。


*TYPE**X**Y**NEIGHBORS*
1303:1; 2:0; 4:0
3404:1; 3:0; 5:0
2555:4
5656:4

*搬运机器人数据*(agv.csv)

此文件存放的是搬运机器人的初始信息,内容包括每个 AGV 位置信息。数据字段含意如下:

· *AGV_ID*: 搬运机器人 AGV 的唯一 ID

· *X*: AGV 所在位置的 X 轴坐标

· *Y*: AGV 所在位置的 Y 轴坐标


*AGV_ID**X**Y*
13114
2711
32113

**
**

*订单数据*(orders.csv)

此文件存放是订单信息,为一段时间内累计的订单。这里订单已经根 据商品号 SKU 拆分。需要分派 AGV 根据订单上的商品号 SKU 去寻找对应的托盘,并将托盘搬运到拣选工位上出库。数据字段含意如下:

· *ORDER_ID*: 订单的唯一 ID

· *SKU*: SKU 的唯一 ID

· *AMOUNT*: 所需该 SKU 的数量


*ORDER_ID**SKU**AMOUNT*
115791726
2260931412
3133585253

*库存数据*(pallets.csv)

此文件存放的是仓库内托盘上商品信息,包括每个托盘的位置以及存 放的各个商品 SKU 和数量。数据字段含义如下:

· *SKU_QUANTITY_LIST*: 该托盘上存放的各个SKU 的ID 和数量, 格式为“���:�: �:�,• • •, ���% : �%”,表示存放了�个���个������, • • •,和�%个���%

· *X*: 该托盘所在位置的 X 轴坐标

· *Y*: 该托盘所在位置的 Y 轴坐标

· *PALLET_ID*: 托盘的唯一 ID


*SKU_QUANTITY_LIST**X**Y**PALLET_ID*
“104151:9,84021135,1297235:1”18810000
“901897:13,1297235:18,2171945:14”191610001
“653296:69”141210002
“1473101:66”181510003

推荐阅读
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 如何在 Java LinkedHashMap 中高效地提取首个或末尾的键值对? ... [详细]
  • 不用蘑菇,不拾金币,我通过强化学习成功通关29关马里奥,创造全新纪录
    《超级马里奥兄弟》由任天堂于1985年首次发布,是一款经典的横版过关游戏,至今已在多个平台上售出超过5亿套。该游戏不仅勾起了许多玩家的童年回忆,也成为强化学习领域的热门研究对象。近日,通过先进的强化学习技术,研究人员成功让AI通关了29关,创造了新的纪录。这一成就不仅展示了强化学习在游戏领域的潜力,也为未来的人工智能应用提供了宝贵的经验。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 吴裕雄数据挖掘实战案例(13):GBDT模型的深入应用与解析
    #导入第三方包importpandasaspdimportmatplotlib.pyplotasplt#读入数据defaultpd.read_excel(r&# ... [详细]
  • 算法和数据结构是计算机科学中最基础和最重要的两个主题,在软件开发中无处不在。我坚信,对这两个主题的充分了解对于成为一名更好的程序员也很关键, ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 深入RTOS实践,面对原子操作提问竟感困惑
    在实时操作系统(RTOS)的实践中,尽管已经积累了丰富的经验,但在面对原子操作的具体问题时,仍感到困惑。本文将深入探讨RTOS中的原子操作机制,分析其在多任务环境下的重要性和实现方式,并结合实际案例解析常见的问题及解决方案,帮助读者更好地理解和应用这一关键技术。 ... [详细]
  • 本文深入探讨了Java枚举类型的使用与实践,详细解析了枚举的基本用法及其在实际开发中的应用。首先介绍了枚举作为常量的替代方案,自JDK 1.5起,通过枚举可以更加简洁、安全地定义常量,避免了传统方式中可能出现的错误。此外,文章还探讨了枚举在实现单例模式、状态机等场景中的优势,并提供了多个实际案例,帮助开发者更好地理解和运用这一强大的语言特性。 ... [详细]
  • 本文详细介绍了 Sublime Text 3 在 2021 年的激活密钥及其在线激活方法。用户可以通过提供的链接访问云海天教程,获取更多详细的激活码信息和操作步骤。此外,文章还提供了安全可靠的激活方案,帮助用户顺利激活软件,提升编程效率。 ... [详细]
  • 决策树在鸢尾花数据集上对不同特征组合的分类效果分析及模型性能比较
    本文探讨了决策树算法在鸢尾花数据集上的应用,分析了不同特征组合对分类效果的影响,并对模型性能进行了详细比较。决策树作为一种层次化的分类方法,通过递归地划分特征空间,形成树状结构,每个节点代表一个特征判断,最终达到分类目的。研究结果表明,不同特征组合对模型性能有显著影响,为实际应用提供了重要参考。 ... [详细]
  • tabnine 破解_最新在线免费激活2022.07.18
    (tabnine破解)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。Intell ... [详细]
author-avatar
乾岳_349
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有