• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Plane_RL: 如何利用强化学习解决调度问题

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Plane_RL

开源软件地址:

https://gitee.com/bonstop/Plane_RL

开源软件介绍:

如何利用强化学习解决调度问题?

截止日时间任务记录

  • Step1:确定约束条件(已完成)
  • Step2:写一个简单的单跑道模型(已完成)
  • Step3:将单跑道模型转变为多机场多汇聚点模型(已完成)
  • Step4:加入多跑道约束(正在做)
  • Step5:毕业设计论文初稿时间(3月15日)

更新内容(3月8日)

  • 更新了Environment.py的一些数据模型。加入了汇聚点与多机场约束
  • 多跑道的一些设想。

多机场多汇聚点模型设计

在原先的基础上,我增加了一部分的汇聚点与多机场的设计。我设想过将数据表拆开,但是发现了一些不方便之处。其一,如何拆开?按照飞机场AB拆完,但是到了汇聚点的时候依然需要按照ab点拆开,这种方法并不合适。其二,拆开之后如何制图?想要制图,必须要将数据合并起来,如何合并?按照汇聚点拆来之后再合并,飞机起飞的时间反而需要再次调整,太麻烦。
我的设计思路是:直接按照一个表合并设计。首先先考虑多机场的问题。多机场的话,若要计算一个飞机的实际起飞时间atd与实际离港时间atdp:计算atd,只需要找到同机场的上一个飞机的atd+安全距离,并与本次飞机的etd比较;计算atdp,只需要找到同汇聚点的上一个飞机的atd+安全距离,并与本次飞机的计划离港时间etdp比较,当然计算完之后,还要防止飞机提前起飞和起飞-离港时间的确定性(所有飞机飞到汇聚点都设计为10min),更新表格即可,具体的伪代码如下所示(可执行代码移步Environment.py参考):

for i in range(0, len(observation)):                        #准备:拿到当前的数据表            list_plane = Timetable["plane_id"].tolist()            lp = list_plane.index(observation[i])            # 1.拿出来本次飞机的机场和未来位置            outport = Timetable.loc[lp]["outport"]            airport = Timetable.loc[lp]["airport"]            # 2.拿到上一个机场该机场飞机的数据与上一个汇聚点飞机的数据            lp_1 # 与本飞机同样的机场的上一架飞机的编号            lp_2 # 与本飞机同样的汇聚点的上一架飞机的编号                        # 3.计算实际起飞时间atd            # 4.计算实际离港时间atdp            # 5.防止提前起飞            # 6.使用地面延误策略,尽可能在地上等待            # 7.计算延误时间            

一、约束条件

输入图片说明

二、状态设置

  • 状态值: 以初始排序为初始状态,各状态为飞机排序可能到达的动作为状态空间S。
  • 动作: 动作为依次调整各个飞机向前移动一架。
  • 奖励值: 每一次计算当前延误状态的延误时间之和,取倒数即是本次动作的奖励值。
  • 状态转移: 飞机在在该状态更新好Q表之后,选择奖励值最大的动作,并对状态做出调整,转移到下一个状态。

三、QLearning伪代码

输入图片说明

四、样例结论

图一 20架飞机延误时间图。横轴代表迭代次数,纵轴代表延误时间。
【环境】:多机场,多汇聚点,20架飞机

输入图片说明


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap