一种车载网环境下基于深度强化学习的任务调度方法与流程

文档序号:11230231阅读:1646来源:国知局

本发明属于计算机移动云计算领域,尤其涉及一种车载网环境下基于深度强化学习的任务调度方法。



背景技术:

移动云计算(mobilecomputing),是随着近几年随着移动终点的迅猛发展而兴起的一种新的云计算模式。它为移动终端用户,以及云服务提供商提供了丰富的计算资源。移动终端可以将任务卸载到云端,云端将计算的结果返回移动终端以克服移动终端计算能力有限的问题并可以减小移动端电量的损耗。

车载网(vehicularad-hocnetwork简称vanet)作为自组织网络的典型案例,可以通过车与车的通信(v2v)与车到基础设施的通信(v2i)来进行数据共享与任务卸载。随着中国城市化进程的发展,越来越多家庭购买汽车以方便家庭出行。汽车厂商的一大买点就是在汽车上装载了丰富的传感器与车载设备,用户可以使用这些设备观看多媒体视频,享受基于位置的服务以达到提高出行体验的目的。而在这些丰富的设备中,大量设备是闲置的。“arifs,olarius,wangj,etal.datacenterattheairport:reasoningabouttime-dependentparkinglotoccupancy[j].ieeetransactionsonparallelanddistributedsystems,2012,23(11):2067-2080.”在文章中利用相对稳定,但是资源丰富的停车场作为一个移动的车云中心。“olarius,khalili,abuelelam.takingvanettotheclouds[j].internationaljournalofpervasivecomputingandcommunications,2011,7(1):7-21.”在文章中利用固定的路侧单元作为车载网环境下的云中心。

云计算为移动终端提供了丰富的资源,但是用户到云中心有时候因为通信带宽的问题,即使云中心有着强大的计算能力,但是因为通信的时延依然使得任务无法及时完成。基于此,一种称为朵云(cloudlet)的技术应运而生。”zhangy,niyatod,wangp.offloadinginmobilecloudletsystemswithintermittentconnectivity[j].ieeetransactionsonmobilecomputing,2015,14(12):2516-2529.”论证了即便在时断时续的链接情况下,依然可以将任务卸载到移动朵云。

强化学习又称评价学习,激励学习,是机器学习中与监督学习,无监督学习并列的一种重要的学习范式,在智能控制领域得到了广泛的应用。它可以有效的解决在开放环境下为了自己学习规则并达到长期目标最优的效果。深度强化学习,是将深度学习与强化学习结合的一个技术,近年来在自动驾驶,围棋(alphago)取得了巨大的成功。深度强化学习主要分为基于策略(policybased)的强化学习与基于q值的强化学习。其中,基于策略的强化学习有收敛快的优点。

随着机器学习发展尤其是强化学习的成熟以及车载网移动云计算的成熟,研究利用强化学习来进行任务调度是比较符合当前实际情况的。



技术实现要素:

发明目的:本发明基于车载网环境下,请求到达强度不稳定的特点,提出了一种基于强化学习的任务调度方法。

为了解决上述技术问题,本发明公开了一种车载网环境下基于深度强化学习的任务调度方法,包括以下步骤:

步骤1:在一定范围内(通常为一个路段,或者城际高速公路的起点到终点),有n个路侧单元,获取每一个路侧单元(roadsideunit)在t时间段内的车流量。用qi,t表示路侧单元ri在t时间段内的车流量,ri取值为1~n。时间段可以是1s,2s,视具体的路况(道路长度,道路宽度,路边经典等信息)决定。因为,一般情况下车流量较大的区域内路侧单元往往会有更多的任务请求,代表一种潜在负载压力。

步骤2:获取每一个路侧单元的负载数据,并将此数据以多播形式传递共享给其他路侧单元;每一个路侧单元ri记录当前队列长度li,并将其共享给其他n-1各路侧单元,使得每一个路侧单元可以获得一个全局的负载状况信息。

步骤3,构架神经网络,对相关变量进行初始化;

步骤4,初始时间内,对于步骤1所述一定范围内到达的请求,随机选择在本地执行或者负载到任意其他路侧单元执行记录请求从到达到完成的时间;

步骤5,当步骤4收集的数据到达一定规模,对神经网络进行更新;

步骤6,对于新到达的请求,使用更新过的神经网络进行分配;

步骤7,收集数据,重复执行步骤5~步骤6,得到新的神经网络。

步骤2包括以下步骤:

步骤2-1,每一个路侧单元ri记录当前任务((任务指车辆电子设备服务请求))队列长度li,并将其共享给其他n-1个各路侧单元;

步骤2-2,对于一个路侧单元,当该路侧单元共享其队列长度给其他路侧单元时,记录当前共享时刻的任务队列长度为llast,当新到达一个任务时队列长度加一,当完成一个任务时,队列长度减一;

步骤2-3,当|llast-li|>δ(δ为阈值,可以选择10到50,较小的阈值会使得本发明在具体应用中更为灵敏,也会相应的增加通信开销)时,路侧单元ri将当前的最新队列长度通知到其余n-1个路侧单元,其中δ是一个触发状态共享的阈值;

步骤2-4,每个路侧单元都得到一个当前全局的环境变量vt,vt=[q1,t,q2,t,…qn,t,l1,l2,…ln]t,qn,t表示路侧单元rn在t时间段内的车流量,ln表示路侧单元rn的当前队列长度。步骤3:定义神经网络,确定神经网络的输入节点,隐层数目以及输出,并初始化参数。

步骤3包括以下步骤:

步骤3-1:神经网络输入层为2n(即神经元输入设置为路侧单元数目的两倍)个神经元,即为路侧单元的当前全局的环境变量vt与任务包的大小packagesize,任务包在网络间传播时间正比于任务包的大小,隐层为k个神经元,为了便于收敛将隐层设置为两层,输出层为n个神经元。使用relu函数作为神经网络的激活函数,relu函数定义为对于给定变量x,其输出为g(x)=max(0,x),神经网络在第l层传播按照下面公式进行计算:

fl(xl)=wlxl+bl

其中,在输入层wl为(2n)×k的矩阵,在第一个隐层到第二个隐层wl为k×k的矩阵,在隐层到输出层wl为k×n的矩阵,bl为第l层的偏移量,xl为第l层的输入;

步骤3-2:对于神经元传播的权重,根据下述区间的一个均匀分布来初始化权重:

其中fanin和fanout分别表示输入神经元的个数与输出神经元的个数,对于输出层到隐层fanin和fanout分别为2n+1和k,对于隐层到隐层fanin和fanout分别为k和k,从隐层到输出层fanin和fanout分别为k和n;

步骤3-3:对于神经网络最后的输出,再使用softmax函数得到每一个策略对应的概率,计算公式为:

其中pi代表当前任务派发到路侧单元ri的概率。yi和yj分别为输出层第i个神经元的输出与第j个神经元的输出。

步骤4包括以下步骤:

步骤4-1:对于新到达的任务,以概率ε(一般取值0.7到0.9)选择在本地执行任务,以1-ε(即1减ε的值)的概率选择在其他路侧单元执行此任务;

步骤4-2:如果选择其他路侧单元执行此任务,任务按照均匀分布分配到其余路侧单元,即分配到其余路侧单元的概率为1/(n-1);

步骤4-3:对于每一个任务ti={vt,proi,rsi},其中vt是步骤2-4得到的任务到达时刻的环境变量,proi为分配到当前路侧单元的概率,记录每一个任务ti的响应时间rsi,即从任务到达路侧单元开始到执行为止的时间;如果任务在当前路侧单元即本地执行,则响应时间等于在当前任务队列的等待数件,如果任务在其它路侧单元执行,则响应时间等于网络传输时间加上在新的路侧单元的任务队列的等待时间。对于到达的每一个任务,收集记录其对应的环境变量、分配概率和相应时间信息。

步骤5中,当步骤4收集的数据到达一定规模,定为batchsize(为n的3到10倍),对神经网络各层权重w与偏移量b进行基于反向传播(backpropagation)算法的更新。

步骤5包括以下步骤:

步骤5-1:计算每一个任务在其对应环境下的分配策略对应的收益:对于batchsize个任务,根据到达时间进行排序,即任务集合为task={t1,t2,…tbatchsize},则按照如下公式计算第i个任务ti的收益ai:

其中,i取值为1~batchsize,γ为衰减因子,一般设定为0.99。收益顺序指数衰减,第i个任务衰减为γi,根据该公式得到收益数组at=[a1,a2,…abatchsize],abatchsize表示第batchsize个任务tbatchsize的收益;

本发明优化的目标函数是损失函数是收益分布函数与分配的路侧单元的概率分布的交叉熵,对收益函数进行标准化就很重要。本发明中希望丢弃掉那些收益低于平均水平的策略,对数据进行标准化,这样低于平均水平的收益adi将为负值。

步骤5-2:对收益数组进行标准化:通过如下公式计算第i个任务ti的收益ai的标准化值adi::

其中mean(at)是收益数组的均值,std(at)是收益数组的标准差。根据该公式计算得到标准化后的收益数组ad;

本发明使用随机梯度下降的方法对神经网络进行更新,最小化的损失函数是收益分布函数与分配的路侧单元的概率分布的交叉熵,即任务更容易被分配到收益较大的路侧单元,而尽量减小分配到收益较小的路侧单元。这里面,收益小指的是任务的响应时间比较大。步骤5-3具体阐述了这个方法。

步骤5-3:利用标准化后的收益数组ad与task对神经网络进行更新,最小化损失函数loss为:

使用随机梯度下降的方法进行梯度更新,更新公式为:

其中η表示学习率,分别表示损失函数相对于wl的梯度和损失函数相对于bl的梯度,其中梯度在基于minibatch的更新中计算公式如下:

更新后得到新的神经网络,其中lossi代表一个minibatch中第i个样本损失。

本发明对任务的分配并不直接按照输出概率最大的路侧单元进行支配,而是按照相应概率,概率大的路侧单元更容易被分配到,概率小的路侧单元也有被分配到的可能。本发明使用这样的一种策略保证了当网络环境改变或者某个路侧单元改变的情况下引起对应的响应时间发生改变,而这种改变更容易被及时的收集到并反馈给神经网络。步骤6具体阐述了这个方法。

步骤6中,对于新到达的请求,根据各区域车流量以及各路侧单元的负载,使用更新过的神经网络进行分配,

步骤6包括以下步骤:

步骤6-1:获得当前的环境状态向量vt作为更新后神经网络的输入,得到新任务分配到各个路侧单元的概率{p1,p2,…,pn}。pn表示新任务分配到第n个路侧单元的概率;

步骤6-2:产生一个[0,1]区间内的随机数。对于上面n个概率,得到n个区间,[0,pr1],[pr1,pr2],…,[prn-1,prn],其中pri-pri-1=pi,i取值1到n,pr的含义为,随机数落入到区间[pri-1,pri],其概率正好为pi,因此如果产生的随机数落在了区间[pri-1,pri]内,则将当前任务分配到路侧单元ri。

步骤7中,当新收集的任务数量积累到batchsize,重新进行步骤5的操作,对神经网络进行更新。

步骤7包括以下步骤:

步骤7-1:按照上一轮训练的神经网络,对任务进行分配,并记录响应时间。

步骤7-1包括以下步骤:

步骤7-1-1:对于新到达的任务,获得当前的各个路侧单元的负载以及道路的车流量信息,得到环境变量vz=[q1,z,q2,z,…qg,z,l1,l2,…lg]t,qg,z表示路侧单元rg在z时间段内的车流量,lg表示路侧单元rg的当前队列长度。

步骤7-1-2:然后根据环境变量,根据步骤5更新的神经网络,对任务进行分配,记录任务的响应时间rs1。

步骤7-1-3:持续收集环境变量以及在当前环境变量下的分配策略以及响应时间,到收集够batchsize个为止。

步骤7-2:将最新收集的batchsize个记录反馈到神经网络,对神经网络进行更新。

步骤7-2主要包括以下步骤:

步骤7-2-1:按照步骤5-1中的方法计算每一个任务的的收益advantages,并对收益值进行标准化;

步骤7-2-2:使用随机梯度下降的方法对神经网络进行更新,得到更新后的神经网络。将新的神经网络用于调度策略。

有益效果:利用强化学习进行任务调度的方法有易于初始化,容错性强的优点,而本发明使用基于策略的强化学习又可以使得调度策略快速收敛到最优。在移动环境,尤其是车载网环境下,因为车辆的高速移动性,周期性等特征,调度策略需要及时变化以达到资源利用最大化的目的。因为强化学习是利用手机的数据,自适应的达到最优化的目的,所以在进行部署的时候不需要特别的进行初始化。当部署的路侧单元有一个失效的时候,强化学习的神经网络可以利用新收集的响应时间及时的得到反馈并训练处在当前状态下的最优调度策略。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。

图1是本发明方法的流程图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

本发明公开了一种基于深度强化学习的任务调度方法,该方法流程图如图1所示,包括以下步骤:

步骤1:收集各个路侧单元覆盖范围内的在一段时间t内的车流量qi,t。然后共享给其他路侧单元。

步骤2:收集每个路侧单元的负载情况,即每个路侧单元的任务队列内的任务数,每当任务队列的任务数量变化超过一定的阈值δ,就将最新的负载信息通知其它路侧单元。这样,每个路侧单元都会得到一个在误差δ内的实时的各个路侧单元负载情况信息。

步骤3:定义以车流量以及各路侧单元负载信息为输入,即步骤1,2收集得到的环境变量vt=[q1,t,q2,t,…qn,t,l1,l2,…ln]t,以分配到路侧单元ri的概率pi为输出的神经网络,它本质上是一个神经网络。

本发明中神经网络初始为一个2n个神经元作为神经网络的输入层,以k个神经元作为神经网络的第一个隐层以k个神经元作为神经网络的第二个隐层,输出层为n个神经元,通过softmax函数进行变换得到分配到各个路侧单元的概率。其中输入层到隐层,隐层到隐层使用relu函数作为激活函数。

然后对神经网络的输入层到隐层权重初始化为范围内的均匀分布,隐层到隐层初始化为内的均匀分布,隐层到输出层初始化范围内的均匀分布。

步骤4:对于新到达的任务,然后选择ε的概率在本地执行任务,以1-ε的概率选择在其他路侧单元执行此任务。如果选择到其它路侧单元执行任务,则随机等概率的分配到其它路侧单元。

然后,每一个任务ti={vt,pro,rsi,}={,y}其中vt是任务到达时刻的环境变量,pro为分配到各个路侧单元的概率,记录每一个任务ti的响应时间rsi,即从任务到达路侧单元开始,到实行为止。如果任务在当前路侧单元执行,则响应时间等于在当前任务队列的等待数件,如果任务在其它路侧单元执行,则响应时间等于网络传输时间加上到在新的路侧单元的任务队列的等待时间。

步骤5:当步骤3收集的数据到达一定规模,我们定为batchsize,对神经网络各层权重w与偏移量b进行基于反向传播(backpropagation)算法的更新。

首先,计算对于每一个任务ti={vt,pro}的advantages,即ai.对于batchsize个任务,我们根据到达时间进行排序,即任务集合为task={t1,t2,…tbatchsize},根据公式(1)得到每个任务的收益,对于一个任务,响应时间越短,收益越大。

其中,γ为衰减因子,一般设定为0.99。

对于一批任务,得到收益数组at=[a1,a2,…abatchsize],然后对数组进行标准化,按照公式(2)进行标准化。

其中,mean(at)是收益数组的均值,std(at)是收益数组的标准差。

然后使用随机梯度下降的方法最小化交叉熵损失函数,本发明中损失函数定义为公式(3)。

然后使用公式(4)(5)按照η的学习率对梯度进行更新。

实际中我们使用minibatch的方式对梯度进行更新,即从batchsize个记录中选取minibatch个记录,根据公式(6),(7)得到梯度的无偏估计

步骤6:获得当前的环境状态向量vt,作为神经网络的输入,得到分配到各个路侧单元的概率{p1,p2,…,pn}。然后按照对应概率pi将当前任务分配到对应的路侧单元ri。

步骤7:重复执行步骤5,6,神经网络不断的收集新的信息进行自我更新,利用更新的神经网络对任务进行分配。

实施例

本实施例使用了a城市某某区域进行实验。

对于该区域内,有10个路侧单元,统计每个路侧单元在一定时间段内的车辆数,单位(辆){q1,q2,…q10}。得到每个路侧单元的任务队列长度{l1,l2,…l10}。

其次,对任务分配的神经网络进行初始化,初始化为20个神经元的输入层,7个神经元的第一个隐层,七个神经元的第二个隐层,10个神经元的输出层。

再次,对神经网络进行预热,将一段时间内的任务按照随机分配的策略,记录其响应时间与环境变量。

然后,根据响应时间计算每一个策略的收益值,为了厘清策略的好坏,对收益值进行标准化。

接下来,利用标准化的收益值以及其对应的环境变量对神经网络进行基于bp算法的更新,使用随机梯度下降,以一个一个的minibatch进行更新。

然后,利用更新后的神经网络,根据任务到达时候的环境变量,决定任务被分配到各个路侧单元的概率,然后随机按照对应概率对任务进行分配。

最后,反复收集数据,更新网络,渐进迭代的得到最优的神经网络。

本发明提供了一种车载网环境下基于深度强化学习的任务调度方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1