APP下载

基于LSTM神经网络机车调度剩余时间预测

2022-02-17张守政

关键词:日志机车滑动

方 欢,张守政

(1.安徽理工大学数学与大数据学院,安徽 淮南 232001;2.安徽理工大学安徽省煤矿安全大数据分析与预警技术工程实验室,安徽 淮南 232001)

目前,智慧矿山建设是国内外煤矿建设的主要目标,它以矿山数字化、信息化为前提和基础,旨在建立绿色、安全高效的现代化智慧矿山开发与利用体系。为了更好地保障煤矿开采安全,实施多模态的生产安全状态监测与监控是非常必要的。诸多学者在实现物理矿山实体与数字矿山孪生体之间的虚实映射、实时交互[1]方面进行了广泛的研究和探索,其中以数字孪生系统[2-4](digitial twin)为主流。

近年来,数字孪生系统构建方法在工矿企业、工业物联网系统应用广泛。不少企业正在通过矿山物理实体在虚拟场景的对象孪生、过程孪生和性能孪生等方面的技术和方法,实现三维可视化智能运维。矿山机车调度的数字孪生系统同样在智慧矿山建设中发挥重要的作用,利用车联网技术实现机车调度模型、策略的快速迭代优化,可实现从传统数字化到智能化的发展;通过矿山运维数据的多源融合、深度学习、迭代优化和自主决策,可实现矿山运维服务全生命周期的智能化,矿山安全、应急处置、绿色开采的智慧化管控[5]。

本文基于文献[6-7]根据区段和进路的调度规则来实现机车调度的虚拟场景。在前期的研究工作中,通过构建井下机车调度系统Petri网模型,对机车调度的死锁性条件进行了形式化证明。这些前期构建的层次Petri网模型可以构成井下机车调度数字孪生系统的理论部分,而本文则通过井下物联网系统采集到的数据进行数字孪生系统的实际运行部分的在线分析。对于井下机车调度系统,如何预测机车剩余运行时间是非常重要的,它可以直接影响井下机车调度系统的性能评估、在线状态诊断等功能。

在剩余时间预测方面,文献[8]提出通过日志序列和集合构造变迁系统,运用统计学知识实现变迁节点剩余时间的预测。但是对于机车场景来说,管理者可能期望得到不同机车类型的预测。不同机车的前缀迹可能一样,会导致变迁节点将不同机车类型剩余时间一起计入运算,也会导致管理者无法得到预期的结果。文献[9]已经证明,使用LSTM神经网络来预测运行案例的下一个事件及其时间戳的方法具有很高的准确性,但是对于最终活动时间的预测需要多次下个活动预测的迭代预测,这样会导致准确性的降低。本文在前期研究的基础上,将事件日志根据机车的类型进行划分,构建剩余时间向量;再通过LSTM神经网络模型对不同机车类型剩余时间向量进行直接预测,从而减少多次活动的迭代预测,以实现不同机车不同活动下调度剩余时间的预测;为构建矿山物理-虚拟时空孪生数据平台,实现数字孪生智慧矿山一体化提供方法。

1 理论前提

在文献[10-12]的基础上,针对事件、迹、日志、LSTM网络等相关概念进行阐述。本文将矩阵运算中的大写英文字母表示矩阵,小写英文字母表示向量。

定义1(事件)设ε为事件空间,是所有可能的事件标识符的集合。对于任意事件e∈ε可以通过不同的属性进行描述,即e(case id,activity,timestamp,resource),其中case id,activity,timestamp,resource分别表示事件的流程案例标识符属性、活动属性、时间戳属性和资源属性。设AN为属性名的集合,属性n∈AN,使用#n(e)来得到事件e在属性n的值,例如#activity(e)表示事件e的活动值。

定义2(迹,事件日志)迹σ=是一个长度为n的序列,σ∈ε*,ε*表示ε上所有序列的集合,σ(i)表示迹的第i个事件,#timestamp(σ(i))<#timestamp(σ(j)),1≤i

定义3(活动事件日志)令A为活动的集合,活动迹σ定义为一个活动的序列,即σ∈A*。活动事件日志L定义为A上迹的一个集合。

图1 LSTM架构图

2 机车实时运行的剩余时间预测

2.1 机车调度方法

以文献[6-7]的机车调度策略为基准,表1展示了机车的区段进路,X和Y分别表示轻载状态和重载状态,后面数字1、2、3则表示不同的机车类型。当机车下一区段所有进路都满足时,机车才允许进入下一区段。系统对当前区段进行封锁,只有机车申请到再下一个区段时,当前区段才能进行释放,否则需要等待。本文通过多线程的生产者消费者模式对机车运行场景进行仿真模拟(见表1~2)。

表1 机车区段表

表2为模拟场景生成的事件日志片段,表头表示事件的属性,每一行表示一个事件,其中case id表示线程(案例)的标识符,activity表示活动名称,timestamp表示活动的完成时间,resource表示机车类型。活动名称中的Driving表示行驶,后面的数字表示第几个路段,+表示轻载(驶向矿区),-表示重载(驶离矿区),Mining则表示挖矿,后面的数字表示机车正在第几号矿区。

表2 机车日志片段

2.2 剩余时间向量

1)划分事件日志 活动事件日志L是迹上活动序列的集合,表2中的resource表示L的下标,即resource∈{1,…,|L|},不同的resource代表着不同的机车活动轨迹,这里与业务流程挖掘中表示活动的执行者有所不同。下面给出本文事件日志划分的形式化定义。

定义4(事件日志投影)设活动事件日志为L,事件日志为L,Li表示第i个活动迹,事件日志投影L↑Li表示保留日志L中迹的活动序列与Li上活动序列相等的迹的集合,其中#activity(σL(i))=σL(i),1≤i≤|σ|。

通过对事件日志L↑Lresource在不同resource活动迹上做投影,其中resource∈{1,…,|L|},可以将事件日志中不同的机车类型进行划分。其中每个事件子日志logi={σ1,…,σi,σj,…,σn},#timestamp(σi(1))<#timestamp(σj(1)),1≤i

2)数据预处理 在真实场景中,由于各种原因,可能服务器得到的事件日志是不完整的,因此要对日志进行预处理。因为在机车调度过程中每个子日志中的迹长度是一致的,因此可以通过子日志中的迹长度来判断迹是否完整。迹的不完整情况主要有两种:①迹中多个事件缺失;②迹中事件的属性值缺失。

对于不完整的迹主要处理思路有两种:一种是直接对该迹进行全部删除,这样做可能导致信息的不完整性,但是确保了信息的可靠性;第二种是对日志进行修复,这样做虽然可以保证信息的完整性,但是信息的可靠性有所下降,对于事件属性值的缺失,其中的时间属性可以根据单线程下的预计花费时间进行累加或者累减,或者通过前后事件活动的时间取平均值,基于此来实现事件日志的完整性。由于本文分析的数据量较大,因此采取第一种预处理方法,较第二种方法节省消耗。

3)时间迹矩阵 通过对每一个子日志进行预处理可以得到较为完整的子日志,因为迹的长度是确定的,可以通过以下方法构建时间迹矩阵Tm×n。

定义5(时间迹矩阵Tm×n)其中m表示子日志中迹的个数,n表示迹中活动的个数。式(1)中的σi表示子日志的一条迹,行向量αi中的t表示当前迹σi中每个事件的时间戳,代表着一个迹的活动时间变化。通过αi构建时间迹矩阵T如式(2)所示。

αi=[t1,t2,…,tn],n=|σi|,i∈[0,m]

(1)

(2)

4)剩余时间向量 定义6(剩余时间向量x)剩余时间向量x为剩余时间迹矩阵R的列向量。将时间迹矩阵T进行分块,即可得到结束时间列向量γ与矩阵A,如式(3)和(4)所示。将向量γ与矩阵A中的每个列向量β相减得到剩余时间迹矩阵Rm×(n-1),如式(5)和式(6)所示。有些编程语言通过广播特性可以直接实现向量与矩阵的加减操作。

Tm×n=[A|γ]

(3)

Am×(n-1)=[β1,β2,…,βn-1]

(4)

Rm×(n-1)=[x1,x2,…,xn-1]

(5)

xi=γ-βi,βi∈A,xi∈R,i∈[0,n-1]

(6)

通过对R中的每个剩余时间向量xi进行函数操作,如公式(7)所示,其中φ表示一个函数公式,可以为最短时间min、最长时间max、平均时间average、中位数时间median,最后的结果则表示当前活动到最终活动剩余时间的统计值,这只是对活动剩余时间大概认识,接下来本文将通过搭建LSTM神经网络来实现精准预测。

c=φ(xi),xi∈R,i∈[0,n-1]

(7)

2.3 剩余时间预测方法

图2 剩余时间预测框架

算法1: 提取矩阵RW算法(Extraction matrix RW algorithm,extractRW)

输入:事件日志L,活动事件日志L,滑动窗口大小w;

输出:剩余时间迹矩阵R,滑动窗口矩阵W。

1.Function extractRW(L,L,w)

2.R=[]

3.W=[]

4. for type in range(len(L))do

5.L_dict[type]=[]

6.L_type=L[L["resource"]==type]

7. for case in Set(L_type["case"])do

8.L_item=L_type[L_type["case"]==

case]

9.L_dict[type].append(L_item

["timestamp"])

10.T=L_dict[type].reshape(-1,len(L[type])-1)

11.A=T[:,:-1]

12. gamma=T[:,[-1]]

13.R[type]=gamma-A

14.W[type]=R[type][-(w-1):]

15. returnR,W

16.End Function

算法2 获取训练集数据算法(Get the training set data algorithm,getTrainData)

输入:剩余时间迹矩阵R,活动事件日志L,滑动窗口大小w;

输出:训练数据L_x,L_y。

国家和社会的机构、组织以及个人在参加社会活动的过程里会直接出现一些具有保存意义的数字记录,这就是数字档案信息资源。数字档案信息资源属于崭新的档案信息资源,也是将来档案信息资源发展的主要方式。分类与检索是数字档案信息资源管理工作中的重要组成。数字档案信息资源分类与检索的效率直接影响到数字档案信息资源的利用效率。随着信息技术的发展,各类人工智能技术广泛应用到社会生活的方方面面,数字档案信息资源分类与检索中利用人工智能技术可以提升管理效率与提高档案资源的服务水平,对于数字档案管理工作的优化具有重要的意义。

1.Function getTrainData(R,L,w)

2.L_x=[]

3.L_y=[]

4. foriin range(len(L))do

5. forjin range(len(L[i])-1)do

6. forkin range(len(R[i])-w+1)do

7. window=normalise(R[i][j][k:

k+w])

9.y=window[-1,[0]]

10.L_x.append(x)

11.L_y.append(y)

12. returnL_x,L_y

13.End Function

离线状态中的训练集是根据长度为w宽度为1的滑动窗口进行构建,对每个类型的每个活动剩余时间向量x从上到下进行滑动如图3所示,这里采用的规范化和反规范化方法如公式(8)所示,其中ni,pi分别表示规范化值和滑动窗口内的值,这样操作是为了体现窗口内的其他值相对于窗口初始值的变化,即剩余时间在一段时间内的变化情况如算法2所示。

图3 滑动窗口

(8)

算法3: 预测剩余时间算法(Predict remaining time algorithm,prediction)

输入:机车类型i,活动位置j,开始位置n,滑动窗口矩阵W,滑动窗口大小w;

输出:预测剩余时间值predict。

1.Function prediction(i,j,n,W,w)

2.W_temp=W[i][j]

3. while(n>=1) do

4. if(n==1) then

5.W_temp=normalise(W_temp)

6. predict=model.predict(W_temp)

7. predict=inverse_normalise(W_

temp,predict)

8. else

9. predict=model.predict(normalise

(W_temp))

10. predict=inverse_normalise(W_

temp,predict)

11.W_temp=W_temp[1:]

12.W_temp=Insert(W_temp,w-2,predict)

13.n=n-1

14. return predict

15.End Function

算法4 更新滑动窗口矩阵算法(Update sliding window matrix algorithm,updateW)

输入:机车类型i,正在运行队列run_queue,滑动窗口矩阵W,滑动窗口大小w;

输出:滑动窗口矩阵W。

1.Function updateW(i,run_queue,W,w)

2. while run_queue[i]is not empty do

3. if run_queue[i].GetHead is complete then

4.W[i]=W[i][1:]

5.W[i]=Insert(W[i],w-2,run_

queue[i].GetHead)

6. run_queue[i].DeQueue()

7. else

8. returnW

9. returnW

10.End Function

但是需要注意的是,在线状态中的滑动窗口矩阵并不能实时更新,因为有的迹的开始时间虽然晚但是结束时间可能比较早,如果每完成一个迹就进行更新,会导致与开始集训练的模型冲突,因此更新时需要保证按照迹开始时间进行更新。算法4中更新滑动窗口矩阵函数可以做到这点,即如果先完成的迹并不是先开始的,需要等待它上一个开始迹完成后一起进行更新,最后像队列一样将最开始的迹移除,后面开始的迹进行填充,始终保持滑动窗口矩阵是最新的w-1个迹。

3 案例仿真与分析

3.1 实验数据和参数设置

图4为通过对机车调度模拟日志简单的删除预处理之后,运用pm4py的InductiveMiner[15-16]方法得到的BPMN[17]流程图,与表1的进程区段表相对应,具体日志描述如表3所示。本次机车调度模拟了10辆机车运行操作,随机分配机车类型,行驶进路的模拟时间服从均值为2、标准差为0.5、偏差为1的正态分布,而挖矿时间服从的正态分布均值改为3,它们的单位均为s。

表3 处理后的模拟日志

图4 机车调度BPMN流程图

本文的LSTM神经网络模型基于Tensorflow框架,采用6层网络架构,第一层LSTM层(100个输入神经元,时间步长为49,维度为1),第二次层Dropout层(比率为0.2),第三层LSTM层(100个输入神经元),第四层LSTM层(100个神经元),第五层Dropout层(比率为0.2),最后一层为Dense层(1个输出神经元,线性激活函数),设置的迭代次数为2,batchsize大小为32,训练集所占比例为0.8,即每种机车类型的前80%,而后面的20%用作验证集。采用滑动窗口大小w=50,其中前49个为已知迹活动剩余时间序列,最后一个为预测迹的剩余时间值。

3.2 仿真实验结果分析

这里仅对每个类型的第一个活动的剩余时间进行预测,测试集的预测结果如图5所示。其中类型3预测比较好,而类型1和类型2由于模拟场景的间隔时间较短、区段较多导致竞争资源多,使得随机可能性加大,预测结果相比类型3较差。

(a)类型1 LSTM预测图

4 总结与展望

本文从构建智慧矿山的数字孪生系统的背景出发,以井下机车调度系统的实时系统预测与监控为研究对象进行研究与分析。本文的主要贡献是:(1)构建迹的剩余时间向量,使用LSTM神经网络模型直接对迹的活动剩余时间进行预测;(2)考虑到矿场机车的类型特性,根据类型对事件日志进行划分,进而得到不同类型的剩余时间迹矩阵,然后维持不同类型的滑动窗口矩阵,实现实时预测不同机车不同活动的剩余时间。本文对不同类型机车的预测采用了一个预测模型,相比于多个类型的预测模型准确性可能有所降低,但是可以减少模型数量,一个模型就可以实现不同类型不同活动的剩余时间预测。

在未来的研究工作中,将对预测方法进行进一步调参,尝试使用机车调度的关键活动来进行实时的预测和监控分析,在这个过程中,对非关键活动采用统计方法,减少实时算法的时空消耗。此外,还将尝试使用改进迭代预测,克服滑动窗口矩阵的更新存在滞后性的问题,进一步提升剩余事件预测的准确度。

猜你喜欢

日志机车滑动
一名老党员的工作日志
HXN5型机车牵引力受限的分析与整治
扶贫日志
基于CTC3.0系统机车摘挂功能的实现
一种新型滑动叉拉花键夹具
雅皮的心情日志
Big Little lies: No One Is Perfect
游学日志
一种机车联接箱工艺开发
滑动供电系统在城市轨道交通中的应用