双场桥任务调度算法-设计篇

        2个月前分享了任务调度算法,它是单旅行商模型的遗传算法。在工程上,更多的场景是车间多条生产线同时完成一批工序任务,它对应的模型是多旅行商模型的遗传算法。在智慧港口自动化堆场中,为了提高集装箱吞吐量,同时有多台场桥在堆场内完成一批集装箱的装卸任务,在提高作业效率和减少场桥设备损耗方面,场桥任务调度算法尤其显得重要,本文在此场景下,对任务调度算法进行了升级,模型进化成了多旅行商协作,并加入了顺序约束,大车防撞约束。

       《任务调度算法》:主要介绍遗传算法的概念,算法步骤,框架及代码实现。

       《双场桥任务调度算法-设计篇》:主要介绍设计目的,技术选型,接口输入与输出,流程图,模型,顺序约束,大车防撞约束,遗传算法主要步骤逻辑等。

       《双场桥任务调度算法-代码实现篇》

本文分享的是《双场桥任务调度算法-设计篇》,以下是正文。

       港口大脑TOS(Terminal Operation System)码头运营系统在堆场自动化作业过程中,分发的任务特点是批量的,无序的,未指定具体场桥。双桥调度算法负责将这些任务(默认为15个任务为一组)分解成有序的,指定到2台场桥,在满足顺序约束,大车防撞约束条件下,时间最短,大车移动距离较短。

1目的

      a)明确双桥调度算法技术选型,接口,业务逻辑,部署方法。

      b)算法设计研发技术文档。

      c)辅助测试。

2技术选型

      a)开发工具:Jupyter

      b)开发语言:Python3

      c)算法模型:基于多旅行商问题的顺序约束、防撞约束智能搜索遗传算法

3接口输入

      a) 2台场桥的起始位置,单位米。

      b)15个任务的作业开始位置,结束位置,单位米。

      c)任务的作业先后顺序。

例如:

 http://localhost:8802/getTwoCraneSchedule?startPos=3.3,33&taskList=

16.2,16.2,4|32.4,32.4,3,|48.6,48.6,3|64.8,64.8|81.0,81.0|97.2,97.2|113.4,113.4|129.6,129.6|145.8,145.8

|162.0,162.0|16.2,16.2|32.4,32.4|48.6,48.6|64.8,64.8|81.0,81.0

4接口输出 

      a) 所有任务预估完成时间,单位秒。

      b)2台场桥的作业序列。

      c)可视化(算法内部展示):迭代图,大车运动轨迹图。

例如:739|3,13,11,2,12,1,10,0|9,8,5,7,6,4,14

 

5流程图

      基于遗传算法,结合顺序约束和防撞约束设计了双桥调度算法。 

 

 

6双桥调度模型

6.1模型假设

       1)场桥数量为2

       2)大车移动速度已知。

       3)大车安全距离已知。

       4)场桥单个任务抓放箱时长已知。

       5)1贝位位置距离为0,最后贝位位置距离最大。

       6)任务顺序已知。

6.2模型建立

 

 

 

 

7创建个体

      个体是2条染色体的组合,1条任务染色体,1条分类染色体,任务染色体是014随机组合(默认15个基因,每个基因对应一条任务),分类染色体是0,1随机组合,0代表第一台场桥,1代表第二台场桥,按顺序与任务染色体一一对应。

 

8顺序约束

根据基因在染色体中分布,分二种情况。

第一种顺序约束在相同任务染色体中,直接交换任务染色体顺序。

第二种顺序约束在不同任务染色体中,找到2个基因在不同染色体的位置,计算各自任务的开始时刻和结束时刻,以一组顺序约束基因的结束时刻,使得结束时刻小于在另外一个场桥中开始时刻的任务,称之为标记任务,删除结束时刻所在场桥的任务,随机加入到另外一个场桥中标记任务前。 

9防撞约束

2台场桥在任意时刻对应的位置曲线采用插值法,如果有交点,将任务长的移动到任务短的场桥中,为防止大车碰撞,对其中的一台场桥位置曲线向上或向下平移安全距离(场桥起始位置小,向上平移;场桥起始位置大,向下平移),再采用插值法处理。

10适应度计算

适应度=全局最短时间/每个个体大车行走所需时间,值在01之间,越接近1,适应度越好,最优适应度为1。 

11选择

适应度低于中位数的个体将会被淘汰,进行交叉和变异

12交叉

按照设定的概率分别对淘汰的个体与最好的个体进行基因交换。任务染色体基因交换过程为固定淘汰的某一段基因片段,从最优任务染色体开始到结束基因依次在固定的基因片段中进行搜索,如果未搜索到则比较的基因留在这个位置,否则用下一个基因进行比较,直到基因全部比较完成,产生新的任务染色体。分类染色体基因交换过程为固定淘汰的某一段基因片段,固定片段前的片段基因为头部,固定片段后的基因为尾部,头部和尾部分别用最优分类染色体对应位置片段基因组进行替换,产生新的分类染色体。交叉结果如图表所示,个体1为最优个体。

13变异

按照设定的概率分别对淘汰的交叉后产生的新的个体进行变异。任务染色体变异的过程为固定淘汰的某一段基因片段,反转基因片段,产生新的任务染色体。分类染色体变异的过程为固定某一段基因片段,固定片段前的片段基因为头部,固定片段后的基因为尾部,头部最后一个基因和尾部第一个基因进行交换,产生新的分类染色体。变异的结果如图表所示。

14全局最优解调优

经过设定的若干次迭代,找到了时间相对最短的解,对其中时间短的场桥,重新调整任务序号,在满足顺序约束和防撞约束的条件下,使得移动距离相对较小。优化策略是以任务系列的结束位置进行搜索,找到开始位置最接近结束位置为参照的为下一条任务。 

15收敛图

显示迭代次数与最短时长关系的折线图。

16大车运行轨迹图

显示2台场桥时刻对应与位置对应关系的大车运行轨迹图,并对任务序号进行标记。

17部署

采用WSGIWeb Server Gateway Interface)方式进行部署。

posted @   开水做的白菜  阅读(522)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示