通过多个移动终端采集数据的细粒度任务分配方法及系统
技术领域
本公开属于信息技术领域,特别涉及一种通过多个移动终端采集数据的细粒度任务分配方法及系统。
背景技术
近年来,随着移动计算和无线通信技术的快速发展,移动智能设备(如智能手机、平板电脑、智能手表等)得到广泛普及,其存储、计算、通信能力得到不断加强,并配备了众多智能传感器,比如摄像头、麦克风、重力仪、GPS、陀螺仪、温度传感器、血压传感器等等。这使得人们通过移动智能设备可以自动、实时地感知和收集周围环境信息,并通过无线通信模块将信息传输到服务器,如云平台,从而可以完成复杂的环境和社会感知任务。云平台需要根据任务请求者的任务需求,将各个任务分配给参与的众多用户,分配的依据是实现特定的优化目标,如最大化任务接收率等。
从目前的研究成果上看,已有的任务分配方法和系统主要考虑简单的任务分配需求和离线式任务分配方法,比如假设一个任务只能由一个用户完成。在一个典型的离线式任务分配方法中,系统首先收集所有任务,并向所有用户发送当前需要执行的任务集合,然后根据自身能力等情况,各个用户选择并提交自身愿意完成的任务子集,系统在收集到所有用户的数据后,在特定优化目标下,实施最优或近似最优任务分配,并将分配结果反馈给相应用户,最后,用户完成所分配的任务并将数据回传给系统。由此可见,当前任务分配方法需要用户自行浏览所发布的任务需求并提交,其耗时较多,且需要用户主动参与。因此实时任务分配方法应用而生,即考虑了任务到达的随机性和实时性。系统首先收集用户的兴趣、能力等属性信息,然后对于实时随机提交的每个任务,系统依据用户的信息,自动完成任务分配,并将分配结果传输给用户。
但是,目前在线任务分配方法中均未考虑能力多样性需求的细粒度任务分配,任务需求中的每种能力需要用户的数量以及用户的能力限制问题。能力多样性需求是指一个任务需要多个具有不同能力的用户才能完成,而一般用户的能力都是有限制的,这需要多个具有不同能力的用户相互合作才能完成。而且对于一个细粒度任务,不仅需要指定用户,还需要指定用户采用何种能力执行任务。为了提高任务质量,需要多样性用户,即每个任务对每种能力的用户,指定数量上的需求。比如对某一个需求的能力,需要2个用户。所需数量越多,表示多样性程度越高,则任务质量越高。因为每个用户的能力是有限的,所以每个用户在采用某种能力同时执行不同任务的数目有限制的。当前的在线任务分配方法尚未考虑这些因素,在很大程度上限制了该任务分配方法的应用范围。
为了减少用户主动参与时所耗的时间,在考虑能力多样性需求的细粒度任务分配的基础上,设计一种通过多个移动终端采集数据的细粒度任务分配方法是十分必要的。
发明内容
鉴于此,本公开提供了一种通过多个移动终端采集数据的细粒度任务分配方法,包括如下步骤:
S100:任务请求者向云平台提交任务需求,包括任务所需能力值和每种能力需要的用户数量;
S200:多个用户通过各自的移动终端向云平台提交各自的能力值、每个用户使用每种能力同时执行不同任务的数目以及每个用户当前正在采用不同能力同时执行不同任务的数目;
S300:云平台根据所述任务需求和各个移动终端提交上来的自身数据进行任务分配;
S400:所述多个用户收到任务分配结果后利用其携带的移动终端根据所分配的任务采集相应的数据,并回传所采集的数据给云平台;
S500:云平台将上述回传的数据传输给所述任务请求者。
通过上述技术方案,本公开的方法提供了一种自动的不依赖于用户主动交互的细粒度任务分配方法,用户只需提交各自的能力值、每个用户使用每种能力同时执行不同任务的数目以及每个用户当前正在采用不同能力同时执行不同任务的数目,系统自动完成任务分配,用户的移动智能设备在收到分配的任务时,可在规定的时间自动启动后台感知程序,减少了用户交互次数。此外,本方法考虑了需要一定数量的具有多种能力的用户相互合作完成的任务的分配方法。对于一个待分配任务,不仅需要指定用户,还需要指定用户采用何种能力执行任务。为了提高任务质量,本方法还指定了每个任务对每种能力的用户数量,从而使得本方法具有更好的实用性。
本公开还提供了一种通过多个移动终端采集数据的细粒度任务分配系统,包括任务请求者、云平台和多个用户,其中,
所述任务请求者向所述云平台提交任务需求,包括任务所需能力值和每种能力需要的用户数量;所述多个用户通过各自的移动终端向云平台提交各自的能力值、每个用户使用每种能力同时执行不同任务的数目以及每个用户当前正在采用不同能力同时执行不同任务的数目;所述云平台根据所述任务需求和各个移动终端提交上来的自身数据进行任务分配;所述多个用户收到任务分配结果后利用其携带的移动终端根据所分配的任务采集相应的数据,并回传所采集的数据给所述云平台;所述云平台将上述回传的数据传输给所述任务请求者。
本公开的方法和系统能够通过计算来保证任务的多样性能力需求的细粒度任务分配得到满足,以使得一个任务可以由多个具有不同能力的用户合作完成,进一步优化了现有的任务分配方法,扩大了任务分配方法的应用范围。
附图说明
图1是本公开一个实施例中所提供的一种通过多个移动终端采集数据的任务分配方法的流程示意图;
图2是本公开一个实施例中所提供的一种通过多个移动终端采集数据的任务分配系统的结构示意图。
具体实施方式
参见图1至图2,在一个实施例中,其公开了一种通过多个移动终端采集数据的细粒度任务分配方法,包括如下步骤:
S100:任务请求者向云平台提交任务需求,包括任务所需能力值和每种能力需要的用户数量;
S200:多个用户通过各自的移动终端向云平台提交各自的能力值、每个用户使用每种能力同时执行不同任务的数目以及每个用户当前正在采用不同能力同时执行不同任务的数目;
S300:云平台根据所述任务需求和各个移动终端提交上来的自身数据进行任务分配;
S400:所述多个用户收到任务分配结果后利用其携带的移动终端根据所分配的任务采集相应的数据,并回传所采集的数据给云平台;
S500:云平台将上述回传的数据传输给所述任务请求者。
在另一个实施例中,所述步骤S100还进一步包括如下步骤:
所述任务需求用τ=(Γ,Dτ)表示,其中,Γ表示任务τ的多样性能力需求列表,Dτ=(q1,...,qj,...,qK)表示任务τ的用户数量需求,qj表示任务τ需要能力j的用户数量;
其中,A是所有能力构成的集合,A={1,...,j...,K},K是集合A的基数,为一个有限的自然数,j表示第j种能力,j∈{1,...,K}。
在另一个实施例中,所述步骤S200还进一步包括如下步骤:
所述多个用户以集合U={u1,u2,...,un}表示,其中ui是第i个用户,i∈{1,...,n},n为集合U的基数,为一个有限的自然数;ui=(Ai,Di,Qi),Ai是用户ui具备的能力列表,ui∈U,Di=(λi1,...,λij,...,λiK)是用户ui采用不同能力同时执行不同任务的最大数量列表,λij表示用户ui∈U采用能力j∈Ai同时执行不同任务的最大数量;Qi=(λ′i1,...,λ′ij,...,λ′iK)是用户ui当前正在采用不同能力同时执行不同任务的数量列表,λ′ij表示用户ui当前正在采用能力j执行任务的数量,并且每当用户ui采用能力j执行任务的数量增加1时,按照λ′ij=λ′ij+1更新λ′ij的值。
在另一个实施例中,所述步骤S300还进一步包括如下步骤:
所述任务分配按照以下公式计算:
式中,qj表示任务τ需要能力j的用户数量,xij表示用户ui是否采用能力j执行当前任务τ,xij=1表示用户ui采用能力j执行当前任务τ,否则,xij=0表示用户ui不采用能力j执行当前任务τ,yi表示是否把用户ui分配给当前任务τ,yi=1表示用户ui被分配给当前任务τ,否则,yi=0表示用户ui没有被分配给当前任务;其中,cij表示用户ui执行任务τ的代价,可用公式表示;其中表示用户ui采用能力j执行单个任务时的代价,σi,j,k表示用户ui采用能力j正在执行任务的数量为k时的代价折扣因子,其中σi,j,k∈(0,1],σi,j,0=1,且满足σi,j,k≤σi,j,k-1;μ表示所选用户由于相互合作所产生的通信代价,用公式表示;式中dii’表示用户ui和ui′之间的通讯代价,dii’为非负实数,ui,ui’∈U,且dii’=di’i,dii=0。
其中,公式(1)的解是寻找一种任务分配结果(即一组xij和yi的取值,i∈U,j∈Γ),其目标是使得任务分配的总代价最小,即用户执行该任务的代价和执行该任务的用户之间产生的通讯代价之和最小;条件1表示对于任务τ的每个能力需求j,必须至少分配nj个具有能力j的用户,即如果对于j∈Γ,表示正在采用能力j执行任务τ的用户数量已满足任务τ对能力j的用户数量需求;条件2表示如果允许用户ui采用能力j,则其正在执行的任务数目小于其可执行的最大任务数目;条件3表示若用户ui被分配用能力j执行任务τ,则该用户一定被选中;条件4表示用户ui可被选中采用能力j执行任务τ;条件5表示用户ui不会使用任务τ所不需要的能力来执行任务;条件6表示用户ui可被选中执行任务τ。
公式(1)是一个整数规划问题,且是一个NP难问题,不存在解决该问题的多项式时间算法;此外,上述公式可能无解,即不存在一个任务分配方案能够满足所有条件。
在另一个实施例中,所述步骤S300还进一步包括如下步骤:
S301:设所求的用户能力分配矩阵为X=(xij)n*K,用户分配向量为Y=(yi)n,初始设置X=(0)n*K,Y=(0)n;令集合U+为计算过程中被选中的用户构成的集合,初始集合Γ*为计算过程中任务τ已被满足的能力构成的集合,初始令集合Uτ为可选用的用户集合,初始Uτ=U;令集合Bi表示用户ui∈Uτ所具备的满足任务τ的能力集合,初始Bi={j|j∈Γ∩Ai,λ′ij<λij};
S302:对于ui∈Uτ,计算Bi={j|j∈(Γ-Γ*)∩Ai,λ′ij<λij},并从Uτ中去除不具备任务所要求的任何一种能力的用户,即
S303:若转至步骤S304;否则,对于矩阵X中每一项xij,若xij=1,更新λ′ij的值,即λ′ij=λ′ij-1,并且根据更新cij的值;设置X=(0)n*K,Y=(0)n,并停止运行,表示现有用户不满足任务需求,即云平台拒绝接受该任务;
S304:计算Uτ中每个用户ui执行任务的单位能力代价 的计算公式如下:
S305:在用户集合Uτ中,按照公式选出具有最小执行任务总代价的用户ui*,其中dU+i表示用户ui∈Uτ和U+中用户的通讯代价,计算公式为dsi表示用户us∈U+和用户ui∈Uτ之间的通讯代价;
S306:对于Bi*中的每一个能力j,分别按照λ′i*j=λ′i*j+1和更新λ′i*j和ci*j的值,并把xi*j设为1,即xi*j=1,更新yi*=1;如果yi*=1,则把用户ui*加入U+中;
S307:对于Bi*中的每一个能力j,若则将能力j加入Γ*;
S308:把ui*从Uτ中删除;
S309:判断|Γ*|=|Γ|是否成立,若成立表示任务需求已满足,则停止;否则转至步骤S302。
在另一个实施例中,在步骤S305中,
在另一个实施例中,所述步骤S200还进一步包括如下步骤:
每当收集到新的用户时,将新用户增加到集合U中;每当检测到用户离开时,将该用户从集合U中删除。
在另一个实施例中,如果用户ui不具备能力j执行单个任务,则
在另一个实施例中,其公开了一种通过多个移动终端采集数据的细粒度任务分配系统,包括任务请求者、云平台和多个用户,其中,
所述任务请求者向所述云平台提交任务需求,包括任务所需能力值和每种能力需要的用户数量;所述多个用户通过各自的移动终端向云平台提交各自的能力值、每个用户使用每种能力同时执行不同任务的数目以及每个用户当前正在采用不同能力同时执行不同任务的数目;所述云平台根据所述任务需求和各个移动终端提交上来的自身数据进行任务分配;所述多个用户收到任务分配结果后利用其携带的移动终端根据所分配的任务采集相应的数据,并回传所采集的数据给所述云平台;所述云平台将上述回传的数据传输给所述任务请求者。
在另一个实施例中,
在步骤S100:任务请求者提交的任务设为τ,τ=(Γ,Dτ),Γ={1,2,3,4},Dτ=(2,1,2,2)。
在步骤S200:收集到的用户集合为U={u1,u2},u1=(A1,D1,Q1),u2=(A2,D2,Q2),A1={1,2,4},A2={3,4},D1=(3,1,0,2),D2=(0,0,1,1),Q1=(1,0,0,2),Q2=(0,0,0,0)。其中,能力集合A={1,2,3,4}。
在步骤S300:设用户ui采用能力j单独执行任务τ时的代价和用户集合U中任意两个用户之间的通讯代价可分别用矩阵表示,其中i∈{1,2},j∈{1,2,3,4},以及折扣因子σi,j,k分别为σ1,1,1=0.6,σ1,1,2=0.4,σ1,1,3=0.3,σ1,2,1=0.7,σ1,4,1=0.5,σ1,4,2=0.4,σ2,3,1=0.8,σ2,4,1=0.7,σ1,1,0=σ1,2,0=σ1,4,0=σ2,3,0=σ2,4,0=1,k∈{0,1,2,3}。另外,用户u1不具备能力3,用户u2不具备能力1和2,所以设
根据以上矩阵以及式可得
在步骤S301:所求的用户能力分配矩阵为X=(xij)2*4,用户分配向量为Y=(yi)2,初始设置X=(0)2*4,Y=(0)2,Uτ=U={u1,u2},B1={j|j∈Γ∩A1,λ′1j<λ1j}={1,2},B2={j|j∈Γ∩A2,λ′2j<λ2j}={3,4}。
在步骤S302:对于ui∈Uτ,计算B1={j|j∈(Γ-Γ*)∩A1,λ′1j<λ1j}={1,2},B2={j|j∈(Γ-Γ*)∩A3,λ′2j<λ2j}={3,4},并从Uτ中去除不具备任务τ所要求的任何一种能力的用户,即
在步骤S303:因为所以转至步骤304。
在步骤S304:计算Uτ中每个用户执行任务τ的单位能力代价,
在步骤S305:在用户集合Uτ中,按照公式 所以选出的具有最小执行任务总代价的用户为u1。
在步骤S306:对于B1中的能力1,分别按照式λ′11=λ′11+1和更新λ′11和c11的值,即λ′11=2,c11=1.6,并且x11=1,y1=1;对于B1中的能力2,分别按照式λ′12=λ′12+1和更新λ′12和c12的值,即λ′12=1,c12=2.1,并且x12=1,y1=1。因为y1=1,所以把用户u1加入U+中,此时U+={u1}。
在步骤S307:对于B1中的能力2,则将能力2加入Γ*,即Γ*={2}。
在步骤S308:把u1从Uτ中删除,Uτ={u2}。
在步骤S309:|Γ*|<|Γ|,转至步骤S302。
在步骤S302:因为Uτ={u2},对于ui∈Uτ,B2={3,4}。
在步骤S303:因为所以转至步骤S304。
在步骤S304:计算Uτ中每个用户执行任务τ的单位能力代价,即
在步骤S305:在用户集合Uτ中,按照公式因为U+={u1},所以所以选出的具有最小执行任务总代价的用户为u2。
在步骤S306:对于B2中的能力3,分别按照式λ′23=λ′23+1和更新λ′23和c23的值,即λ′23=1,c23=2.7,并且x23=1,y2=1;对于B2中的能力4,分别按照式λ′24=λ′24+1和更新λ′24和c24的值,即λ′24=1,c24=2.8,并且x24=1,y2=1。因为y2=1,所以把用户u2加入U+中,此时U+={u1,u2}。
在步骤S308:把u2从Uτ中删除,
在步骤S309:|Γ*|<|Γ|,转至步骤S302。
在步骤S302:因为u1和u2已从Uτ中删除,所以对于矩阵X中每一项xij,其中x11=x12=x23=x24=1,更新λ′11、λ′12、λ′23和λ′24的值,即λ′11=1,λ′12=0,λ′23=0,λ′24=0,并且根据式更新c11、c12、c23和c24的值分别为2.5、3、3.4、4;设置X=(0)2*4,Y=(0)2,并停止运行,表示现有用户不满足任务需求,即云平台拒绝接受该任务τ。
在上述实例中,在步骤S100中,若用户u1离开系统,则将该用户从用户集合U中删除;若收集到一个新用户(如u3),则将该用户信息加入到用户集合U中。
在另一个实施例中,
在步骤S100:任务请求者提交的任务设为τ,τ=(Γ,Dτ),Γ={1,2,3,4},Dτ=(2,1,1,2)。
在步骤S200:收集到的用户集合为U={u1,u2,u3},u1=(A1,D1,Q1)、u2=(A2,D2,Q2)、u3=(A3,D3,Q3),A1={1,2,4},A2={1,3,4},A3={3,4},D1=(3,1,0,2),D2=(1,0,2,1),D3=(0,0,1,1),Q1=(1,0,0,2),Q2=(0,0,1,0),Q3=(0,0,0,0)。其中,能力集合A={1,2,3,4}。
在步骤S300:设用户ui采用能力j单独执行任务τ时的代价和用户集合U中任意两个用户之间的通讯代价可分别用矩阵表示,其中i∈{1,2,3},j∈{1,2,3,4},以及折扣因子σi,j,k(k∈{0,1,2,3})分别为σ1,1,1=0.6,σ1,1,2=0.4,σ1,1,3=0.3,σ1,2,1=0.7,σ1,4,1=0.5,σ1,4,2=0.4,σ2,1,1=0.7,σ2,3,1=0.8,σ2,3,2=0.6,σ2,4,1=0.6,σ3,3,1=0.8,σ3,4,1=0.7,σ1,1,0=σ1,2,0=σ1,4,0=σ2,1,0=σ2,3,0=σ2,4,0=σ3,3,0=σ3,4,0=1。另外,用户u1不具备能力3,用户u2不具备能力2,用户u3不具备能力1和2,所以设
根据以上矩阵以及式可得
在步骤S301:所求的用户能力分配矩阵为X=(xij)3*4,用户分配向量为Y=(yi)3,初始设置X=(0)3*4,Y=(0)3,Uτ=U={u1,u2,u3},B1={j|j∈Γ∩A1,λ′1j<λ1j}={1,2},B2={j|j∈Γ∩A2,λ′2j<λ2j}={1,3,4},B3={j|j∈Γ∩A3,λ′3j<λ3j}={3,4}。
在步骤S302:对于ui∈Uτ,计算B1={j|j∈(Γ-Γ*)∩A1,λ′1j<λ1j}={1,2},B2={j|j∈(Γ-Γ*)∩A2,λ′2j<λ2j}={1,3,4},B3={j|j∈(Γ-Γ*)∩A3,λ′3j<λ3j}={3,4},并从Uτ中去除不具备任务τ所要求的任何一种能力的用户,即
在步骤S303:因为所以转至步骤S304。
在步骤S304:根据式(5)计算Uτ中每个用户执行任务τ的单位能力代价,
在步骤S305:在用户集合Uτ中,按照公式 所以选出的具有最小执行任务总代价的用户为u1。
在步骤S306:对于B1中的能力1,分别按照式λ′11=λ′11+1和 更新λ′11和c11的值,即λ′11=2,c11=1.6,并且x11=1,y1=1;对于B1中的能力2,分别按照式λ′12=λ′12+1和更新λ′12和c12的值,即λ′12=1,c12=2.1,并且x12=1,y1=1。因为y1=1,所以把用户u1加入U+中,此时U+={u1}。
在步骤S307:对于B1中的能力2,则将能力2加入Γ*,即Γ*={2}。
在步骤S308:把u1从Uτ中删除,Uτ={u2,u3}。
在步骤S309:|Γ*|<|Γ|,转至步骤302。
在步骤S302:因为Uτ={u2,u3},对于ui∈Uτ,B2={1,3,4},B3={3,4}。
在步骤S303:因为所以转至步骤S304。
在步骤S304:根据式计算Uτ中每个用户执行任务的单位能力代价,即
在步骤S305:在用户集合Uτ中,按照公式因为U+={u1},所以所以选出的具有最小执行任务总代价的用户为u3。
在步骤S306:对于B3中的能力3,分别按照式λ′33=λ′33+1和更新λ′33和c33的值,即λ′33=1,c33=2.7,并且x33=1,y3=1;对于B3中的能力4,分别按照式λ′34=λ′34+1和更新λ′34和c34的值,即λ′34=1,c34=2.8,并且x34=1,y3=1。因为y3=1,所以把用户u3加入U+中,此时U+={u1,u3}。
在步骤S307:对于B3中的能力3,则将能力3加入Γ*,即Γ*={2,3}。
在步骤S308:把u3从Uτ中删除,Uτ={u2}。
在步骤S309:|Γ*|<|Γ|,转至步骤S302。
在步骤S302:因为Uτ={u2},对于ui∈Uτ,B2={j|j∈(Γ-Γ*)∩A2,λ′2j<λ2j}={1,4}。
在步骤S303:因为所以转至步骤S304。
在步骤S304:根据式计算Uτ中每个用户执行任务的单位能力代价,即
在步骤S305:在用户集合Uτ中,按照公式因为U+={u1,u3},所以所以选出的具有最小执行任务总代价的用户为u2。
在步骤S306:对于B2中的能力1,分别按照式λ′21=λ′21+1和更新λ′21和c21的值,即λ′21=1,c21=2.4,并且x21=1,y2=1;对于B2中的能力4,分别按照式λ′24=λ′24+1和更新λ′24和c24的值,即λ′24=1,c24=2.6,并且x24=1,y2=1。因为y2=1,所以把用户u2加入U+中,此时U+={u1,u2,u3}。
在步骤S307:对于B2中的能力1,则将能力1加入Γ*;对于B2中的能力4,则将能力4加入Γ*,即Γ*={1,2,3,4}。
在步骤S308:把u2从Uτ中删除。
在步骤S309:|Γ*|=|Γ|,表示任务需求已满足,则停止。
S400、所以最终用户u1使用能力1和2利用其携带的移动终端采集相应的数据,并回传给云平台;u2使用能力1和4利用其携带的移动终端采集相应的的数据,并回传给云平台;u3使用能力3和4利用其携带的移动终端采集相应的数据,并回传给云平台。
S500、云平台将上述回传的采集数据传输给所述任务请求者。
以上对本公开进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。