本发明的目的在于克服上述
现有技术的缺点,提供了一种结合环境因素 优先级别,计算当前上下文环境对每种判别条件偏移度,并根据偏移度大小 选择相应的执行策略的上下文感知计算中的冲突消解方法。
为达到上述目的,本发明采用的技术方案是:
1)针对每一种选择策略,计算其策略选择中心;
2)获取当前上下文数值;
3)如果上下文数值为数值型,则转步骤4),否则转步骤5);
4)计算当前上下文数值与每个策略的差值,命名为偏移度值,转步骤6);
5)根据Pos函数及Count函数,计算偏移度数值,转步骤6);
6)记录两个策略的偏移度数值,作为下一次计算持久系数的依据;
7)根据上次记录的偏移度数值,计算此次持久系数
persistence=persistence+(pastOffset2-pastOffset1)/pastOffset1
其中persistence为持久系数数值,pastOffset1和pastOffset2为上一次 记录的偏移度数值;
8)根据持久系数计算新的偏移度数值;
9)根据新得到的两个策略所对应的偏移度数值选择执行策略;
10)执行
选定的策略。
本发明的数值型偏移度值的计算步骤如下:
偏移度函数:offset,P*E->R+
偏移度为当前环境值对于策略中所有环境
声明条目的偏移度的加权和, 其中,Pi∈P,e0∈E,Pi包含m个声明条目,记为entry(i),1<=i<=m,offset(i) 表示每一个环境声明条目的偏移度
在上述公式中
用于计算环境条目的选择中心, 分母计算条目的选择范围,将每一个偏移度值按照其条目的比重进行加权即 可得到该策略的偏移度值;
若当前环境值在两个策略中都处于其条目的选择中心,故偏离度为0, 因此在(1)式中引入常数C,修正offset(i)的计算公式得到
C是一个大于0的常数,通常取值为1。
枚举类型的偏移度值的计算方法为:首先需要在定义策略时,指定策略 中枚举类型的条目的可能值列表,随后通过将枚举值映射到其位置的函数, 将所有对枚举值得计算转化为对其在列表中所处位置的计算,得出其偏移度 值,其具体步骤为;
定义如下两个函数
Pos函数:R*Entry->N,给出一个值在一个条目的可能值列表中的位置;
Count函数:Entry->N,给出策略中一个条目所包含的限定值个数;
1<=k<=m。
本发明的持久系数是一个介于0和1之间的实数,随着互相冲突的若干 策略的偏移度值变化而变化,并将影响加入偏移度计算结果中,以下是持久 系数的计算以及对偏移度影响的计算公式:
offset1=offset(value,policy1);//此次计算的策略1的偏移度
offset2=offset(value,policy2);//此次计算的策略2的偏移度
persistence=persistence+(pastOffset2-pastOffset1)/
pastOffset1;
//上一次计算的策略1和策略2的偏移度,并据此计算持久系数
if(persistence<0)persistence=0;//持久系数始终大于等于0
//将持久系数影响添加在偏移度上
//并记录此次偏移度值
if(pastOffset1
pastOffset1=offset1;
pastOffset2=offset2;
offset1=offset1*(1-persistence);
else
pastOffset1=offset1;
pastOffset2=offset2;
offset2=offset2*(1-persistence)。
本发明通过计算策略偏移度解决冲突。该方法结合环境因素优先级别, 计算当前上下文环境对每种判别条件偏移度,并根据偏移度大小选择相应的 执行策略。在此基础上,考虑环境因素连续变化因素,引入持久系数,防止 环境在小范围内频繁变化造成策略选择抖动的问题。
在上下文感知计算中,应用需要根据不同的上下文环境选择不同的执行 策略。这些策略可能会出现冲突,大多数解决方法采用优先级策略。
本发明提出偏移度算法对冲突进行消解,计算每个策略的选择中心,当 冲突发生时,计算每个冲突的策略的选择中心与当前上下文环境的偏移度, 并选择偏移度最低的策略作为执行策略。为了避免环境在小范围内抖动的现 象,算法引入了持久系数,使上一次选中的执行策略在本次计算中具有一定 优势,从而减少抖动的现象。
具体过程如下:
为了更准确的对本发明进行描述,首先对冲突问题进行定义及形式化描 述。
定义1:符号。在系统中所有能够获取到的环境信息称为系统环境信息。 所有环境信息的名称的集合成为EName,所有可能环境值的集合为E,每一种 环境信息的值的集合为V;当前环境下的环境值计为e0(e0∈E)。服务的集合称 为S。所有服务的配置的集合称为C。服务S的所有策略的结合成为P(S), 在不产生歧义的情况下简记为P。
定义2:服务。服务是在上下文感知系统中,根据用户的上下文环境动 态调整自身行为,为用户提供信息的功能实体。服务包含服务代码及其配置 文件,配置文件是一组策略的集合,每个策略对应一个环境声明以及一个执 行标识。环境声明用于指定该策略能够生效的上下文环境,执行标识指导服 务针对这一上下文环境调整其服务方式,执行标识根据实现方式的不同可能 代表一个方法名称、一个参数值或者一个属性值等等。
Service::=serviceImplement configuration
Configuration::=policySet
policySet::=policy policySet|policy
policy::=context identity
定义3:环境声明。策略中的环境声明用于界定这个策略能够生效的上 下文环境。每个环境声明包含一组声明条目,每个条目用于限定一种环境信 息,例如,“温度在10至20摄氏度之间”是对温度这一环境信息限定条目的 文字描述。环境声明条目中值的类型可以是枚举类型或者布尔值,也可以通 过指定一个范围来定义,可能的例子包括location=high,power=true, temperature>10等。每个环境声明条目需要指定其在整个策略中的权重,同 时需要给出值的边界(对于枚举或布尔类型的值,需要给出所有可能值的列 表)。
Context::=contextEntrySet
contextEntrySet::=contextEntry contextEntrySet|contextEntry
contextEntry::=name operator value type weight bound
type::=Boolean|enumerate|number
bound::=min max if type=number
valueList if type=enumberate or boolean
定义4:评估函数evaluate:EName*E->V。得到某个指定名称的上下文 信息值。
在环境声明条目cEntry中的operator与value共同组成了对环境信息 的界定条件。cEntry.operator(cEntry.value,evaluate(e0,cEntry.name) =true意味着该条目满足当前上下文环境。
定义5:适应性函数:fit:P*E->Boolean
Fit(p,e)=fit(entry(1),e)& fit(entry(2),e)&..& fit(entry(n),e)
Fit(entry(k),e)=fit(entry(k),evaluate(e,entry(k).name))
fit(entry(k),v)=entry.operator(entry(k).value,v)
定义6:适应策略集合:adaptSet:C*E->2P
adaptSet(c,e)=adaptSet(p1,e)∪adaptSet(pset/p1,e)
adaptSet(p,e)=if fit(p,e)then{p}else空集
定义7:冲突。如果||adaptSet(C,e0)||=0说明配置中没有满足当前环 境的策略,=1说明只有一个满足当前环境。>1说明有两个以上的策略满足 当前环境,我们称这种情况为冲突。此时系统需要使用冲突解决方法来选择 执行策略。
1)上下文冲突的偏移度算法
偏移度函数:offset。P*E->R+
偏移度为当前环境值对于策略中所有环境声明条目的偏移度的加权和, 偏移度越高表明当前环境对于策略中定义的环境需求偏差越大。
其中,Pi∈P,e0∈E,Pi包含m个声明条目,记为entry(i),1<=i<=m。 offset(i)表示每一个环境声明条目的偏移度
在上述公式中
用于计算环境条目的选择中心, 分母计算条目的选择范围。将每一个偏移度值按照其条目的比重进行加权即 可得到该策略的偏移度值。
当前环境值在两个策略中都处于其条目的选择中心,故偏离度为0。因 此在(1)式中引入常数C,修正offset(i)的计算公式得到
C是一个大于0的常数,通常取值为1。
对于枚举类型的上下文数值,给出在这种情况下的偏移度计算办法。首 先需要在定义策略时,指定策略中枚举类型的条目的可能值列表。随后通过 将枚举值映射到其位置的函数,将所有对枚举值得计算转化为对其在列表中 所处位置的计算,得出其偏移度。
定义如下两个函数
Pos函数:R*Entry->N。给出一个值在一个条目的可能值列表中的位置
Count函数:Entry->N。给出策略中一个条目所包含的限定值个数。
1<=k<=m
2)防止冲突选择策略抖动
在使用偏移度算法时,在某些情况下,随着上下文环境的变化,策略会 发生频繁抖动的现象。究其原因,当在某一环境下发生冲突时,当前环境同 时满足两个策略的环境限定(P1,P2属于adaptSet(C,E))。如果某个环境 因素在一个小范围
波动,会导致计算偏移度时,两个策略的偏移度值频繁上 下交错,从而策略选择结果不断变化,产生策略抖动现象,这有可能会降低 用户的满意度,因此需要对算法加以调整。
在计算偏移度时,算法引入持久系数这一变量。持久系数的作用是,在计 算偏移度时,降低上一次选中的策略的偏移度值,使其更有可能被再次选中, 从而较少抖动发生的几率。
持久系数是一个介于0和1之间的实数,随着互相冲突的若干策略的偏移 度值变化而变化,并将影响加入偏移度计算结果中。以下算法对持久系数的 计算以及对偏移度影响的计算公式的简要描述。
offset1=offset(value,policy1);//此次计算的策略1的偏移度
offset2=offset(value,policy2);//此次计算的策略2的偏移度
persistence=persistence+(pastOffset2-pastOffset1)/
pastOffset1;
//上一次计算的策略1和策略2的偏移度,并据此计算持久系数
if(persistence<0)persistence=0;//持久系数始终大于等于0
//将持久系数影响添加在偏移度上
//并记录此次偏移度值
if(pastOffset1
pastOffset1=offset1;
pastOffset2=offset2;
offset1=offset1*(1-persistence);
else
pastOffset1=offset1;
pastOffset2=offset2;
offset2=offset2*(1-persistence);
持久系数体现了上一次计算的偏移度的差别程度,并且具有累积效应。持 久系数能够有效地平衡环境的小范围频繁变化对策略选择造成的影响。后一 次环境变化的幅度如果小于前一次变化幅度,持久系数可以消除这种变化带 来的策略切换,但如果第二次环境变化幅度过大或者环境持续向一个方向变 化,那么持久系数会将这种变化传递给偏移度,进而进行策略的切换。
算法的详细步骤如下:
1)针对每一种选择策略,计算其策略选择中心;
2)获取当前上下文数值;
3)如果上下文数值为数值型,则转步骤4),否则转步骤5);
4)计算当前上下文数值与每个策略的差值,命名为偏移度值,转步骤6);
5)根据Pos函数及Count函数,计算偏移度数值,转步骤6);
6)记录两个策略的偏移度数值,作为下一次计算持久系数的依据;
7)根据上次记录的偏移度数值,计算此次持久系数
persistence=persistence+(pastOffset2-pastOffset1)/pastOffset1
其中persistence为持久系数数值,pastOffset1和pastOffset2为上一次 记录的偏移度数值;
8)根据持久系数计算新的偏移度数值;
9)根据新得到的两个策略所对应的偏移度数值选择执行策略;
10)执行选定的策略。