2.3 基于基因表达规划算法的多AGV调度

原创文章,禁止转载、抄袭或用于报告、交流等学术或商业用途

全文(其它章节内容)

https://blog.csdn.net/qq_38757869/article/details/106885769

2.3 基于基因表达规划算法的多AGV调度
为了满足复杂的物料搬运需求,自动导引车(AGV)被广泛用于智能仓储系统和智能生产物流系统,其可以自主路径规划与避障,极大地提高了物料搬运的灵活性和准确性。根据AGV的承载能力,可以分为单负载、多负载、协作AGV三种。单负载由于具有较好的搬运柔性,且管理相对简单,在实际生产应用中更为常见,本节介绍常见的生产物流系统多AGV调度问题。
2.3.1 问题描述
如下图所示,为某脉动式飞机装配线的生产现场,包括6个装配机位和7个物料以及装配所需设备的仓库,其中W1-W4为物料仓库,W5-W7为装配工具仓库。在装配过程中,装配工具首先需要按照生产计划被搬运至生产现场,在使用完成后需要返回至仓库。物料配送任务动态抵达生产车间,需要为每个任务分配对应的AGV执行任务。
在这里插入图片描述

在此研究问题中,做出不失一般性的假设:
 所有AGV都是相同的;
 两点间的运输时间已知且确定;
 每个AGV每次当且仅当最多搬运一件物料/工具;
 所有的AGV可以在任何位置等待下一任务;
 不考虑AGV失效、路径规划问题;

2.3.2 数学模型
基于上述的问题描述和假设,AGV调度问题表述如下。
符号定义:
I 运输任务索引
j AGV索引
n任务数量
T 任务集合
A AGV集合
psi 任务Ti的起始点
pfi 任务Ti的终点
esti 任务Ti的释放时间
esaj AGV的最早开始时间
dtui 任务Ti的开始时间上限
dtli 任务Ti的开始时间下限
paj AGV 的最终位置
ttkk’ 从k到k’的运输时间
Xij 如果任务Ti被Aj执行,Xij=1,否则Xij=0

因此,本问题的目标函数为最小化物料搬运任务的延迟时间。
在这里插入图片描述

约束如下:
在这里插入图片描述

约束(2)表示每个任务当且仅当被分配给一个AGV。约束(3)表示任务的完成时间。

2.3.3 算法设计
针对此动态AGV调度问题,提出一种基于混合遗传规划的AGV动态调度方法。基因表达编程(Gene expression programming, GEP)是一种重要的进化计算方法,它利用自然选择来探索更好的个体。 它通常用于学习历史数据的知识,从而为所有这些实例生成一般规则。 在本文中,开发了一种改进的 GEP,如图 2 所示,包括四个主要步骤。 首先,初始种群是随机生成的。 然后,计算个体的适应度,用于选择好的个体。 最后,执行交叉、变异、邻居搜索和随机初始化以生成新个体。 GEP的参数如表1所示。
在这里插入图片描述

本文采用基于决策树的 GEP,根据 AGV 的相关属性和运输任务计算 SAGV 的优先级,然后选择优先级最小的 AGV 执行任务。 GAVs和运输任务的属性如表2所示。决策树如图3所示。
在这里插入图片描述
在这里插入图片描述

在本文中,优先选择用于从种群中选择较好的个体。 然后,根据这些好的个体生成新的个体,包括交叉、变异、邻域搜索和随机初始化。 单点交叉和变异用于探索新个体并避免局部最优。 为了提高 GEP 的收敛速度,如图 4 所示,使用邻域搜索来探索选择后的好个体附近的新个体,其中好的函数和属性由选择的个体确定。 此外,产生一些随机个体以增加每一代种群的多样性。 通过交叉和变异、邻域搜索和随机初始化生成的个体数量分别为 20,160 和 20。

在这里插入图片描述

2.3.4 实例验证
对某脉动式飞机装配线的物料配送任务进行优化,来验证本文踢出算法的有效性。
表3为装配站之间的运输时间,表4为装配站和仓库间的运输时间,表5为仓库间的运输任务,表6为运输任务。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其学习得到的3个最优调度规则如下所示,调度规则选择的五个属性出现在这三个规则中,说明了这五个参数的重要性。
在这里插入图片描述
可得到调度结果如下甘特图所示。(引自自己的论文,非本文的调度结果)
在这里插入图片描述
2.4 小结
本章内容起到抛砖引玉的作业,使得读者对调度这个概念有一个初步的了解。由于很多调度问题都相对复杂,基于规则的方法难以使用,因此本章内容相对简短,仅介绍了最为经典的一些规则。除此之外的单机调度规则还有STT、MWKR、SCR、LWKR、MOPNR和随机规则等,有兴趣的读者可以自行查阅生产计划与控制相关的数据进行学习。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
【资源说明】 基于CBS算法AGV路径规划仿真系统源码+项目开发说明.zip 多Agent路径规划仿真系统 针对多AGV物流分拣场景建立的仿真模拟系统,是我的本科毕业设计 本系统使用p5.js编写,推荐使用atom等支持该语言的IDE编辑。 下载IDE后,下载插件 ```bash File -> Settings -> Packages Search p5js-toolbar and Install it ``` ## Run Locally 完成后开启p5js-toolbar ```bash Packages -> p5js-toolbar -> Toggle p5.js toolbar Click the run button and that's all ``` ## Optimizations ### V1.0 算法基本实现,逻辑已基本无bug 输入 : * agent:start,end * obstacles * map:rows,cols 输出: * 如果没冲突,给出每个agent的路径数组 #### 待实现 UI界面,参数调整接口,单步模式和直接运行模式。 ### V1.1 UI界面初步完成,目前提供参数如下: * 地图行数、列数、障碍物比例 * 障碍物、每辆小车的起点和终点都可以自由设定 * 运行功能(直接执行模式)和重置功能 ### V1.15 UI界面进一步完善,加入如下功能: * 可以添加小车 * 添加单步执行模式 * 显示当前运行状态 #### 待实现 删除小车功能,设定小车颜色(可选),加入预设的特殊布局地图、计时功能。 ### V1.2 删除小车功能完成 #### 问题记录 ![image-20201119153155889](C:\Users\AA\AppData\Roaming\Typora\typora-user-images\image-20201119153155889.png) 如图所示情况,绿色小车到达终点后,在实际情况中会离开,继续执行下一个任务,但在路径中,绿车停靠在终点,会和红车路径不断产生冲突,导致死循环,这是不合理的。 #### 解决方案 * 每个小车有一个任务列表,执行完一个就去做下一个。 * 在补全小车路径到maxT时,补为特殊点,即不会再和其它小车冲突的点。 ### V1.25 删除小车bug修复,计时功能初步完成,修改小车速度功能完成 #### 关于计时功能 对于单轮任务,需要对每个Agent的执行时间单独计时 最好拓展到多轮任务,对任务直接计时 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
【资源说明】 基于dijkstra算法及仓储多AGV背景下实现路径规划和两车避让系统源码+项目说明.zip dijkstra算法 经典Dijkstra算法是一种贪心算法,根据路径长度递增次序找到最短路径,通常用于解决单源最短路的问题。Dijkstra算法的基本思想是:首先根据原有路径图,初始化源点到与其相邻节点的距离,选出与源点最短距离的节点进行松弛操作,即比较判断若经过该点,是否能找到比源点到其他点更短的距离,若有更短的距离则更新原有距离,直至遍历初始图中的所有节点。Dijkstra算法可找出源点到初始图中所有点的最短距离,任意最短路径的子路径仍为最短路径。       Dijkstra算法是以标号为基础的标签算法,设一个有向图由n个点和e条弧组成,该有向图可表示为G=(V,E),V表示节点集,E表示弧集,可用C(A,B)来表示A和B点之间弧的长度,若在该有向图中A点和B点间不可达,则可用无穷大或者远大于C(A,B)数量级的整数来表示。可设一个数组DIST(X)来表示节点X与原点v0之间的距离,S和V-S分别表示目前暂确定找到最短路径节点的集合与未确定最短路径节点集合,初始时S仅包含v0源点,算法结束时S应包含所有节点。 Dijkstra算法的步骤如下: **Step.1** 初始化,将源点v0加入集合S,并做标记; **Step.2** 在V-S中寻找与v0有连接的点,并选择距离最短的点i做标记,将其加入S中; **Step.3** 将i作为新的起始点,在V-S中寻找与i直接可达且距离最短的点j,若DIST[j]>DIST[i]+C(i,j),意味着目前来看从源点到j的距离经过i点比直接从v0到j要短,所以将DIST[j]更新为DIST[i]+C(i,j),并将j点加入S集合; **Step.4** 重复Step.2、Step.3步骤n-1次,可找到源点v0到所有点的最短距离; **Step.5** 依次输出源点、中间点、目标点连成路径。 项目背景 现代化仓库中AGV(自动避障小车)的使用颇多,本项目为AGV的路径规划和多车避让提供一种较为初级的解决方案。 首先,基于实际仓库运作场景,本文做出以下假设: * 通常情况下,AGV的数量恒定,不考虑AGV突然增加或减少的情况; * AGV运行速度恒定,不考虑停下加速或减速停下的时段,且空载和负载状态下AGV运行速度相等; * 订单是否优先级由上位机确定,分配给AGV执行; * 每台AGV一次只能执行一个任务,且一个任务能且仅能被一台AGV执行一次; * 本文设定AGV系统采用集中式控制方式,各AGV的任务来源于上位机,且每台AGV均与上位机通信,AGV之间没有信息交互。 根据作业类型,AGV系统可由三个模块组成:任务生成模块、任务分配模块和路径规划模块。仓库不断接收到新订单,则任务生成模块不断生成新任务,不断进行着任务分配和路径规划AGV系统的整体作业流程如下: 1. **任务生成**:上位机接收仓库订单,将其转化为AGV可执行的任务,生成一个任务集合,任务完成后则从任务集合中删除该任务。 2. **任务分配**:此模板的目标是确保每个任务圆满完成的情况下总的任务完成最短。在一定的任务序列优化规则下,结合任务的优先级,给AGV传达任务指令。另外,任务分配还需要考虑各个AGV的均衡运作,避免部分AGV由于任务过于繁重而降低寿命。由于AGV的运行是时间连续性的,所以任务分配模块给AGV传达的是一个任务序列,AGV按照此序列依次执行任务。 3. **路径规划**:在实际情况中,一个仓库往往有多台AGV,路径规划模块最重要的是为每一台AGV合理规划路径,当AGV接收到特定任务时,首先需要为其初步规划行走路线,根据其他AGV的行走状况进行必要的调整,避免出现碰撞或死锁情况。 类设计 # Map类 * 从文件中导入仓库位置点与路径 * 可以使用图存放仓库位置点与路径集 * 可以使用dijkstra算法解出最优路径路径,并根据转弯数由多到少进行排序。 # AGV类 * 可根据输入参数求解各个AGV自己的路径集 * 从中根据快速、防碰撞两个原则进行路径的选择 * 实时移动 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值