点击数: 更新日期: 2023-03-16
中文题目:基于强化学习的煤层气井维护任务调度优化算法
论文题目:Reinforcement Learning Based Optimization Algorithm for Maintenance Tasks Scheduling in Coalbed Methane Gas Field
录用期刊/会议: Computers & Chemical Engineering (JCR Q2)
原文DOI: https://doi.org/10.1016/j.compchemeng.2022.108131
原文链接:https://www.sciencedirect.com/science/article/pii/S0098135422004641
录用/见刊时间:2022年12月29日
封面图片:
封面摘要:本文根据煤层气田维修任务调度问题的特点,合理地搭建了强化学习的环境,并利用强化学习中的Q-learning算法有效地解决了大规模煤层气田维修任务调度问题。
作者列表:
1) 高小永 中国石油大学(北京)信息科学与工程学院 自动化系 教师
2) 彭 雕 中国石油大学(北京)信息科学与工程学院 控制科学与工程 硕21
3) 夔国凤 中国石油大学(北京)信息科学与工程学院 控制科学与工程 硕19
4) 潘 军 北京万普隆能源科技有限公司
5) 左 信 中国石油大学(北京)信息科学与工程学院 自动化系 教师
6) 李菲菲 山东未来人工智能科技有限公司
文章简介:
在本文中,我们使用强化学习中的Q-learning算法解决了大规模煤层气田维修任务调度问题,基于几个实际案例,我们通过实验验证了提出的算法的有效性,在解决大规模案例时我们提出的算法明显优于传统算法。
摘要:
煤层气(CBM)井维护任务的调度优化对于提高煤层气生产效率具有重要意义。传统上,这个问题是用基于数学模型的经典优化方法或一些元启发式算法来解决。然而,由于这个问题的大规模性,这些方法在实际使用中经常失败。因此,本文提出了基于Q-learning算法的解决方法。构建了一个用于强化学习的互动环境。为了验证所提方法的有效性,提供了不同规模的场景。对于有10、14、20、30、47、60、80和100个维护任务的案例,所需的解决时间分别为3.66s、4.94s、7.66s、12.48s、21.82s、30.82s、48.33s和73.17s。所提出的Q-learning算法对问题的规模不敏感是很有优势的。此外,随着任务数的增加,基于Q-learning的算法比传统算法的效率更高。
背景与动机:
石油和天然气资源是非常重要的。有许多综合单位要实现更高的生产效率,立即对油气开采设备的故障进行维修是至关重要的。传统的气井检查是定期派人到气井现场检查设备的运行状态。无论设备是否损坏或发生紧急情况,被指派的技术人员必须在规定的时间内检查指定的井台是否有异常。这造成了技术员资源的极大浪费。而传统算法在解决大规模问题时效率达不到现场需求,因此本文提出了基于强化学习的Q-learning算法来解决此问题。
设计与实现:
为方便起见,维修任务被编号,其中 "0 "表示一项特殊任务在维修站。对于每个维修技术人员来说,他的初始状态是在维修站。在所有分配的任务完成后,所有的技术人员都会回到维修站。
考虑到每个维护任务只能分配一次,如果有n个维护任务,就有n个可能的行动。在完成第一个行动后,还有n-1个可能的行动。维修人员必须在最后返回维修站。所以,第一个行动和最后一个行动是确定的。而其他行动则根据目标策略进行选择,但每次迭代所需的行动数总是n+1。状态转换函数可以用以下公式表示。
(1)
其中表示当前状态,表示下一个状态,表示动作。
表1展示了状态、行动和下一状态之间的关系,以维修站的动作为例。
表 1 维修站出发的过渡路线
State()
Action()
Next state()
maintenance station 0
Move to maintenance task 1
maintenance task 1
Move to maintenance task 2
maintenance task 2
Move to maintenance task 3
maintenance task 3
...
…
Move to maintenance task n
maintenance task n
每一次智能体在环境中的状态之间转移,都将立即得到采取动作的奖励。考虑到煤层气井维修任务调度问题的特点,这些奖励都将是负值,代表了在状态间转换的时间。与状态转换函数类似,奖励也是当前状态和在该状态下采取的行动的一个函数。
对于奖励机制和奖励函数的设置,只有在完成一轮完整的训练后才能更新Q表的值。这种设置充分考虑了数学模型中定义的目标函数和奖励函数。
图1 强化学习框架图
主要内容:
假设1 假设每口油井被视为一个质量点,方便考虑任何两个油井之间所需的时间是固定的,不受任务序列变化的影响。
假设2 假设时间是离散的,最小时间单位选择为1分钟。也就是说,智能体从环境中获得观察结果,每分钟采取一次行动。
假设3 在两个油井之间的任务转移中只考虑转移时间,忽略了坐标和实际路径的影响。
假设4 已完成的任务不能再被分配。每条路线都需要从维修站开始,最后在维修站结束。
假设5 假设不受维修任务技能的限制,对每个维修人员进行相同的处理,这样可以更快地找到最佳维修路线。
下面给出了强化学习框架下的Q-learning算法用于解决煤层气井维护任务调度问题的流程。
第1步 定义超参数学习率α、折现因子γ、贪婪策略的贪婪率ε、每次迭代后的衰减率ε-延迟、结束轮变量z、迭代次数epochs。
第2步 导入维护任务转移的时间矩阵R表和维护任务点的序号,初始化Q表。
第3步 启动代理的策略更新循环,在训练过程前初始化智能体的初始位置和相关变量。
第4步 根据当前状态,确定智能体在当前时刻可以采取的动作集合。
第5步 使用ε-greedy策略选择行动,或根据动作集、当前的状态和Q表选择最优动作。
第6步 根据当前状态s和选择的动作a,得到下一个状态,奖励r和当前轮次的训练是否可以停止(即是否完成所有的维修任务)。
第7步 根据状态,获得满足所有约束条件的代理的下一个动作集。
第8步 更新Q函数,即更新Q表。
第9步 更新状态,从终止轮变量z判断本轮训练是否结束,如果z=1,则训练结束,否则开始新一轮的训练。
第10步 如果最终结果已经收敛或达到预定的训练轮数限制,那么训练过程将被终止。
基于Q-learning的解决煤层气井维修任务调度的算法伪代码如下图所示。
图1 基于Q-learning的煤层气井维护任务调度的优化算法
实验结果及分析:
为了验证我们提出的算法的有效性,我们在几个实际案例上均得到了较优可行解。例如:对于20个维修任务的案例,如图4所示,其中一条最优路线是[0, 11, 19, 12, 14, 4, 16, 17, 8, 18, 1, 9, 7, 3, 13, 6, 5, 20, 15, 10, 2, 0],用蓝线表示。从图2(b)来看,需要迭代22次收敛,求解时间为7.66秒。对于30个维修任务的案例,如图3所示,其中一条最优路线是[0, 11, 19, 30, 21, 12, 4, 14, 25, 23, 8, 18, 26, 29, 15, 10, 22, 28, 13, 3, 7, 2, 6, 5, 20, 27, 16, 17, 9, 1, 24, 0],用蓝线表示。从图3(b)来看,需要迭代77次收敛,求解时间为12.48秒。对于47个维修任务的案例,如图4所示,最优路线为[0, 8, 37, 30, 43, 17, 6, 27, 35, 29, 5, 36, 18, 26, 42, 16, 45, 32, 14, 11, 10, 22, 13, 24, 12, 20, 46, 19, 39, 2, 21, 15, 40, 33, 28, 4, 47, 38, 31, 23, 9, 41, 25, 3, 34, 44, 1, 7, 0] 。从图4(b)的收敛曲线来看,需要迭代150次收敛,求解时间为21.82s。
图2(a) 20个维修任务的最优调度路线
图2(b) 20个维修任务的收敛曲线
图3(a) 30个维修任务的最优调度路线
图3(b) 30个维修任务的收敛曲线
图4(a) 47个维修任务的最优调度路线
图4(b) 47个维修任务的收敛曲线
为了进一步说明Q-learning算法解决煤层气井维修任务调度问题的优越性,本研究做了相应的比较实验。精确算法中的分支定界法、遗传算法、人工蚁群算法、模拟退火算法作为比较实验的基准,比较结果在图5和表2中。
图5 不同方法的求解时间
表2 解的质量的比较
数据
方法
10个任务
20个任务
30个任务
60个任务
80个任务
100个任务
时间
(分钟)
gap(%)
精确算法
31.0
0
55.6
129.0
-
遗传算法
(200 次迭代)
57.2
2.8
143.1
18.7
267.6
12.4
421.5
23.1
463.9
26.1
(500 次迭代)
135.5
5.0
248.3
4.3
371.2
8.4
408.1
10.9
人工蚁群算法
(200次迭代)
58.3
4.9
141.8
9.9
259.6
9.1
364.4
6.4
426.1
15.8
(500次迭代)
129.9
0.7
247.7
3.8
352.8
3.0
396.9
7.9
模拟退火算法
56.4
1.4
138.6
7.4
286.3
20.3
463.1
35.2
501.7
36.3
131.1
1.6
255.4
7.3
381.9
11.5
448.5
21.9
提出的算法
56.1
0.1
132.9
244.0
2.5
344.8
384.8
4.6
从上图和上表中可以看出,对于维修任务数量相对较少的情况,传统算法的效率与Q-learning相似。但是随着维修任务的增加,传统算法所需的求解时间要比Q-learning长很多。此外在求解质量上Q-learning比传统方法更有竞争力。这也说明了Q-learning在解决煤层气井维修任务调度问题上是高效的。
结论:
这项研究的重点是煤层气井维护任务调度的优化。传统上,商业求解器可以在一定程度上解决这个问题。然而,对大规模案例的低效率限制了它的现场应用。因此,我们引入了基于Q-learning的算法来解决煤层气井维护任务的调度问题。对于维修任务数量相对较多的情况,基于Q-learning的算法可以满足煤层气井维修任务调度的实时性要求。显然,提出的方法在计算时间上优于传统方法。此外,还提供了与不同方法的解决方案质量比较。对于维护任务少的情况,传统方法得到的解决方案是可行的。然而,随着任务数量的增加,本文提出的方法更具竞争力。
通讯作者简介:
高小永,副教授,博士生导师,中国石油大学(北京)信息科学与工程学院自动化系主任,自动化专业负责人。北京自动化学会常务理事、中国自动化学会过程控制专业委员会委员、中国化工学会信息技术应用专业委员会委员、中国系统工程学会过程系统工程专业委员会委员。研究领域为复杂石油石化工业过程智能制造,主要方向有:机理与数据驱动的故障诊断、复杂工业过程建模与优化控制、工业过程计划与调度优化等。主持国家自然科学基金项目2项、校企联合项目10多项,发表SCI/EI等各类论文50多篇。
Email:x.gao@cup.edu.cn