图案协同设计中的系统锁的预测方法 【技术领域】
本发明涉及基于因特网的分布式图案协同设计技术领域,特别是涉及一种图案协同设计中的系统锁的预测方法。
背景技术
20世纪人类的杰出成果之一计算机技术把人类社会带入了信息化时代。伴随着信息化进程的不断深入,通信技术、计算机及网络技术相融合,产生了一个新的研究领域—计算机支持的协同工作CSCW(Computer SupportedCooperative Work)。
群体协作方式的多样性为CSCW研究提供了丰富的内容。在CSCW系统中,人们围绕共同完成的任务要进行通信(Communication)、协调(Coordination)、协作(Collaboration)、协同(Cooperation)等基本活动。
CSCW有着广泛的应用领域和市场前景,CSCW已经应用到的领域有:军事、工业、协同计算机辅助设计、办公自动化和管理信息系统、医疗、远程教育、电子商务与商业、贸易、金融的应用、电子政务......
在CSCW研究和应用的众多领域中,图案协同设计是分布式协同工作的一个重要应用。基于Internet的图案协同设计可以使位于不同地理位置的协同设计者借鉴、共享其他成员的知识和经验,实时同步对同一个任务作品进行共同操作,协同完成图案的设计和制作,从而极大地提高设计的质量和效率。
锁在图案协同设计系统中常常用来保持一致性,锁的使用能大大降低冲突操作发生的次数。当某一个用户试图操作一个对象/区域时,需要获得在这个对象/区域上地一个排他锁。例如,要移动一个对象,就首先要获得这个对象上的锁,这就保证了只有一个用户,即锁的拥有者操作这个对象,从而避免冲突的产生。锁按不同的标准有不同的分类,常见的分类有强制锁与可选锁,非立即锁与立即锁,前锁与后锁,对象锁与区域锁,用户锁与系统锁。
前锁是在对对象操作之前锁定对象。后锁也叫冲突控制锁,在操作一个对象之前,不需要请求锁,如果冲突发生,系统自动上锁。
在使用前锁的系统中,如果加锁的操作由用户来完成,即用户如果试图编辑图案的一部分,必须先对该编辑的部分进行加锁操作,这势必会增加用户的负担,降低工作效率。所以,需要有一种能够预测用户的锁定意图,并帮助用户自动加锁的锁策略。而传统的锁定方法不可能预测用户的意图。
【发明内容】
本发明的目的在于提供一种用于图案协同设计中的系统锁的预测方法。
本发明解决其技术问题采用的技术方案如下:
1)原始图案栅格化
系统将一个图案协同设计二维空间分割为m个栅格;
2)初始化锁定
确定了其系统预测锁的拥有者,并以该拥有者Uk第一次点击的位置为基准,确定Uk的锁定区域,同时初始锁定操作;
3)确定扩展的基准栅格
处理采集到用户Uk在待已经锁定的n个单位栅格中的操作信息,根据计算操作强度确定预测锁待锁定方向;
第一步,计算该用户在这些栅格上的操作强度IRiUk,
IRiUk=Σi=0nNjRiαi,j∈[0,n],n∈[1,2,3...)]]>
IRiUk:用户UK在区域Ri上的操作强度
NjRi:用户在区域Ri上,时间槽Timeslot j上的操作次数,以点击次数表示操作次数,
时间槽长度n:由应用系统确定,即采样的对象为最近的n个时间槽,若在n个时间槽内用户没有操作则自动解锁,
αj:表示权重,离当前时间越近,权重越大;
第二步,对这些计算过的栅格按操作强度进行排序,操作强度由高到低排序后分别记做I1st,I2nd,I3rd,I4th…。则得到新的序列,分别记为:R1st,R2nd,R3rd,R4th…,
第三步,提取基准栅格集合,这个集合中的栅格就是扩展的基础,这些基准的栅格用来预测用户将要操作的栅格,选取基准栅格的总原则是:选取操作强度最大的一个或几个栅格;
4)确定待锁定的栅格,系统进行加锁操作
确定系统预测锁待锁定区域ForecLS Ukregion即确定系统待锁定的栅格集合W,具体做法是以基准栅格为出发点,将与基准栅格相邻的未被锁定的栅格加入集合W,如果新加入集合W的栅格所夹的栅格没有被锁定,则将这些所夹的栅格亦加入待锁定集合W。然后对待锁定集合中的元素(栅格)进行锁定。
本发明与背景技术相比,具有的有益的效果是:
本发明是一种基于预测的智能锁,其主要功能是系统采用扩展锁定集合预测法帮助在线操作用户预测其在未来的操作区域,并提前锁定该区域,当锁定时有冲突发生,就启动相应的冲突解决策略。通过该锁机制,系统可以在一定程度上智能地协助用户提前加锁,从而保证用户实现设计的流畅操作,并预防可能发生的操作冲突。
(1)智能性。系统对用户自动进行预测加锁,并一定的时间段自动解锁,且可以让用户自由选择采用系统预测锁与否,使系统预测锁具有一定的智能性。
(2)实用性。系统预测锁可以让用户开始操作时放心地选择锁定合适恰当地操作区域,经过反复试验证明有很好的实用性。
由于用户知道有系统预测锁帮助其锁定未来操作区域,因此他可以在开始设计时放心地锁定一个合适的区域即可,而不是贪图一次性锁定一个较大的区域。这样就既可以避免因为一个用户提前锁定一个较大的区域(大部分闲置)而影响其它用户的操作,也不会因为自己未来想要操作的区域被别的用户锁定而影响自己操作的流畅性。同时还保证了后加入用户仍可以开始新的设计操作,不至于由于其它在线用户的浪费“锁定”而致使新用户没有操作区域或者操作区域过小。
(3)预防性。由于系统预测锁是前锁机制,因此可以有效的预防冲突的发生,并且大多数冲突可以由系统锁以隐式的方式解决,从而大大减少用户因冲突而造成设计时间的浪费。
【附图说明】
图1是以点击次数表示操作次数时间槽的示意图;
图2是系统锁实现中用户Uk第一次点击的位置为基准,锁定其右下方的L*L个栅格的示意图;
图3是系统锁举例中Step4的case 1:首先加入R5和R6的示意图;
图4是系统锁举例中Step4的case 1:再加入R7的示意图;
图5是系统锁举例中Step4的case 2:首先加入R5、R6、R7和R8的示意图。
图6是系统锁举例中Step4的case 2:再加入R9和R0的示意图。
【具体实施方式】
在实施基于internet(因特网)的分布式图案协同设计技术时,锁机制被广泛的应用。
方法中涉及到相关的符号解释:
ForecLS Uk:系统预测锁的拥有者。
ForecLS Ukorientation:系统预测锁待锁定的方向。
ForecLS Ukrenion:系统预测锁待锁定的区域。
ForecCoEdLS Ukregion:系统预测冲突后彼此竞争锁定的区域。
ForecEdLS Ukregion:系统预测冲突解决后的最终锁定区域。
Lu Uxregion:某用户已锁定的区域。
Lu Uxtime:某用户已锁定的时间。
系统预测锁的具体实现流程如下。
第一步:原始图案栅格化。系统将一个图案协同设计二维空间分割为m个栅格。
第二步:初始化锁定。
确定某用户锁区域Lu Ukregion和其系统预测锁ForecLS Uk。
以某用户Uk第一次点击的位置为基准,锁定其周围的8个栅格,确定用户Uk的锁定区域Lu Ukregion,同时确定了其系统预测锁的拥有者ForecLS Uk。为了简化说明算法,在此仅以右下方的L*L个单位栅格{R1,R2,R3,R4}为例进行初始锁定操作,如图2所示。
第三步:确定系统预测锁待锁定方向ForecLS Ukorientation。
处理采集到用户Uk在上述L*L个单位栅格中的操作信息,根据计算操作强度确定预测锁待锁定方向ForecLS Ukorientation。
(1)计算各个栅格操作强度IRiUk
IRiUk=Σi=0nNjRiαi,j∈[0,n],n∈[1,2,3...)]]>
IRiUk:用户UK在区域Ri上的操作强度。
NjRi:用户在区域Ri上,时间槽Timeslot j上的操作次数,以点击次数表示操作次数,时间槽如图1所示。
n的值由系统确定,即采样的对象为最近的n个时间槽,若在n个时间槽内用户没有操作则自动解锁。
αj:表示权重,由αj=2αj+1定义,αj沿坐标轴逆方向线性递减。
(2)栅格排序
得到L*L个栅格的操作强度后,对这些栅格由高到低进行排序。以集合{R1,R2,R3,R4}为例,其对应操作强度为集合{IR1,IR2,IR3,IR4}。操作强度由高到低排序后分别记做I1st,I2nd,I3rd,I4th。若有关系IR2>IR1>IR4>IR3,]]>则得到新的序列:R2,R1,R4,R3,分别记为:R1st,R2nd,R3rd,R4th。
(3)提取基准栅格集合
这个集合中的栅格就是扩展的基础,这些基准的栅格用来预测用户将要操作的区域(栅格),选取基准栅格的总原则是:选取操作强度最大的一个或几个栅格。例如:
一旦确定了基准栅格集合,即确定了系统预测锁待锁定方向ForecLSUkorientation。
第四步:确定系统预测锁待锁定区域ForecLS Ukregion。
确定系统预测锁待锁定区域ForecLS Ukregion即确定系统待锁定的栅格集合W,具体做法是以基准栅格为出发点,将与基准栅格相邻的未被锁定的栅格加入集合W。如果已锁定集合{R1,R2,R3,R4},则:
1:若基准栅格集合为{R1st},即{R2},则此时首先将与R2相邻的未被锁定的{R5,R6}加入集合W,如图3所示。
其次,如果新加入集合W的栅格所夹的栅格没有被锁定,则将这些所夹的栅格亦加入待锁定集合W。图4中{R7}为{R5,R6}所夹的没有被锁定的栅格,则将{R7}加入集合W。
最终待锁定栅格集合W为{R5,R6,R7},将集合W进行加锁,若锁定成功,加入已锁定集合{R1,R2,R3,R4},得到集合{R1,R2,R3,R4,R5,R6,R7}。
2:若基准栅格集合为{R1st,R2nd},即{R2,R1},则首先将与{R2,R1}相邻的未被锁定的{R5,R6,R7,R8}加入集合W,如图5所示。
其次,如果新加入待锁定集合W的栅格所夹的栅格没有被锁定,则将这些所夹的栅格亦加入待锁定集合W。图6中{R9}为{R5,R6}所夹的没有被锁定的栅格,则将{R9}加入集合W,{R0}为{R7,R8}所夹的没有被锁定的栅格,则将{R0}加入集合W。
最终待锁定栅格集合W为{R5,R6,R7,R8,R9,R0},将集合W进行加锁,若锁定成功,加入已锁定集合{R1,R2,R3,R4},得到锁定集合{R1,R2,R3,R4,R5,R6,R7,R8,R9,R0}。
因此,该方法省去了用户锁定目标的步骤,提高了用户的工作效率并大大减少用户因冲突而造成设计时间的浪费。