开源软件名称: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架飞机 |
请发表评论