title | author | date |
---|---|---|
AGV调度系统的设计与实现 |
李秉权 |
2024-06-05 |
- 探究 AGV 调度系统的设计与实现
- 让笔者拿到本科文凭
- 动态更新路径的权重,用各式各样的方法
- 精细地计算 AGV 走行的成本,例如考虑转弯成本、加减速成本等
- 有向图
- 图的最短路径算法
- 笔者的编程知识储备和经验
这是主要工作成果
- 就是一个连通的有向图,边成本都为1
- 每个顶点容纳一个 AGV
- 用地图顶点的 id 跟其他子系统交互。
- 三元组:(到达时间,运输起点,运输终点)
- 任一货物运输任务可被任一 AGV 执行
- 状态:位置、是否载货、所载货物的信息
- 算法:
- 空闲,停在原地
- 取货,走最短路径
- 送货,走最短路径
- 回到步骤1
- 功能:把货物运输任务分配给 AGV 去执行
- 算法:
- 若某货物运输任务起点处有 AGV ,就将其分配给该 AGV 。
- 按照到达时间排序分配给随机一个 AGV 。
就是用 Dijkstra 算法计算出来的最短路径
- 按照 AGV 路线规划算法计算出来的路线来走
- 如果下一个节点已经被占用,就停在原地等待。
- 实现仿真模拟主循环
- 把其他模块耦合起来
- 统计 AGV 走行数据
- 统计货物运输任务执行情况
- 输出 AGV 走行控制指令
这是实验结果一
括号表示开始时 AGV 的位置
T(3001)
|
L----X----R
|
B(3002)
- (T,L,1)
- (B,R,2)
elapsed | 3001 | 3002 |
---|---|---|
0 | idle at location 1001 | idle at location 1003 |
1 | assigned: 1001 ~~> 1004 | assigned: 1003 ~~> 1002 |
2 | 1001->1000 | 1003->1003 (等待一个时间片) |
3 | 1000->1004 | 1003->1000 |
elapsed | 3001 | 3002 |
---|---|---|
4 | job arrived 1 completed 3 | 1000->1002 |
5 | idle at location 1004 | job arrived 1 completed 4 |
6 | idle at location 1004 | idle at location 1002 |
这是实验结果二
较小规模的 3x3 网格地图示意图,实际使用 10x10 网格地图
A---B---C
| | |
D---E---F
| | |
G---H---I
随机生成6个任务,从一个角落运送到另一个角落,角落就是指在网格地图中只有2个邻接节点的那些节点。
详见论文
指标名称 | 最小值 | 平均值 | 最大值 |
---|---|---|---|
任务执行延迟 | 0 | 23.167 | 55 |
任务运输时间 | 9 | 23.833 | 36 |
任务周转时间 | 19 | 47 | 82 |
指标名称 | 最小值 | 平均值 | 最大值 |
---|---|---|---|
取货时间 | 24 | 39 | 54 |
送货时间 | 54 | 63 | 72 |
- 本 AGV 调度系统功能完备,性能较好
- 货物运输任务能及时的分配到空闲的 AGV 去处理
- AGV 走行的距离最短
- 调度算法在解决拥塞方面的表现一般