一种力引导算法的优化方法与流程

文档序号:17774468发布日期:2019-05-28 19:52阅读:297来源:国知局
一种力引导算法的优化方法与流程

本发明涉及数据可视化领域,用于关系图谱的绘制技术领域,尤其涉及一种力引导算法的优化方法。



背景技术:

关系图谱指用图的形式表达人、物、事等实体之间的关系,图中的顶点表达人、物、事等实体,图中的边表达实体间的相互关系。

在绘制关系图谱的时候,通常使用力引导算法,每个顶点看作一个点电荷,任两个顶点之间有库伦力(顶点是同性电荷,库仑力均表现为斥力,为方便理解,以下均称为斥力),而图中的每个边看作一个弹簧,弹簧有弹力(弹簧拉伸时表达为拉力,弹簧压缩时表达为推力);初始状态在一个有限的区域内随机每个点的位置,然后对每个点受力进行计算并更新位置信息,直到每个点都达到平衡位置。

力引导算法的全量绘制步骤:

(1)给所有顶点在一定范围内设置一个随机的初始位置;

(2)开始迭代;

(3)遍历顶点,设顶点电荷为1,根据每两个顶点间的距离,计算每个顶点受到的斥力;

(4)遍历边,根据每条边的长度,计算边对顶点施加的弹簧弹力;

(5)遍历顶点,对每个顶点受到的斥力和弹力求和;

(6)遍历顶点,按照顶点受力大小,在单位时间δt内进行小范围移动;

(7)当所有顶点的受力合计足够小,或迭代超过一定次数时,停止迭代,否则跳转到步骤(2)进行下一次迭代。

力引导算法的新增顶点步骤:

(1)给新增顶点在一定范围内设置一个随机的初始位置;

(2)开始迭代;

(3)遍历顶点,设顶点电荷为1,根据每两个顶点间的距离,计算每个顶点受到的斥力;

(4)遍历边,根据每条边的长度,计算边对顶点施加的弹簧弹力;

(5)遍历顶点,对每个顶点受到的斥力和弹力求和;

(6)遍历顶点,按照顶点受力大小,在单位时间δt内进行小范围移动;

(7)当所有顶点的受力合计足够小,或迭代超过一定次数时,停止迭代,否则跳转到步骤(2)进行下一次迭代。

力引导算法的优势在于使用很简单的算法就可以完成图的绘制,但在绘制关系图谱的过程中,由于实体间关系往往错综复杂,使用传统力引导算法绘制的图形,存在不够美观、覆盖区域趋向为圆形不适合宽屏显示器显示、同一关系圈顶点位置不够集中、新增顶点时老顶点位置变化大且收敛速度慢等问题。



技术实现要素:

本发明的目的在于提供一种力引导算法的优化方法。

本发明是通过如下措施实现的:一种力引导算法的优化方法,该方法对顶点的斥力公式,边的弹力公式进行优化,同时引入了背景压力、顶点质量等因素,并且在新增顶点时动态调整参数配置和收敛机制,使得绘制的关系图谱更美观、覆盖区域趋向为椭圆形、同一关系圈位置集中、新增顶点时老顶点位置变化小且收敛速度明显加快,这样就很好的解决了这些问题。

一种力引导算法的优化方法,其中,包括以下步骤:

步骤一:对顶点的库仑力进行优化:

优化库仑力公式为:

步骤二:对边的弹力公式进行优化:

原有弹力公式为:fs=ks(d-l);

优化弹力公式为:

步骤三:增加背景压力的因素:

使用的压力公式为:fg=kgdy;

步骤四:增加顶点质量的因素:

使用的质量公式为:

使用的加速度公式为:

定义:一个多边顶点和与他相邻的若干个单边顶点,构成一个顶点团簇;

步骤五:新增顶点时动态调整参数配置和收敛机制:

全量绘制的收敛机制:单位时间内顶点位移的平均值avg<停止常数sa;

增量绘制的收敛机制:单位时间内顶点位移的合计值sum<停止常数sn;

在全量绘制时,当绝大部分顶点单位时间位移稳定,就会停止迭代,不会出现因个别顶点不稳定,而产生的无限抖动现象;而增量绘制时,由于原有顶点产生的位移很小,如果使用全量绘制的收敛机制,会导致迭代不充分,新增顶点无法位移到合适位置,而改用增量绘制机制后,只有当全部顶点的单位时间内位移稳定,才会停止迭代。

这样的机制,即能在全量绘制时,保证快速收敛,减少抖动,又能在增量绘制时,确保迭代充分。

所述步骤一中,kr为库仑力常数,p1、p2为2个顶点电荷数,r为顶点间的距离,maxr为顶点斥力的最大有效距离,当超出有效距离时,顶点斥力消失,这样处理的好处在于消除相距较远的顶点斥力带来的微扰动,简化运算量,加快收敛速度。

所述步骤二中,ks为弹力常数,l为弹簧静态长度,d为弹簧当前长度,link1、link2分别为弹簧连接的2个顶点的总边数;这样处理的好处在于,使得2个边都比较多的顶点之间的拉力(2个多边顶点之间受到的整体斥力会比较大,弹簧必然被拉伸,这里表现为拉力)减弱,能够有更远的间距,这样能够有更大的空间去放置与他们相连的顶点,不会使2个较大的顶点团簇挤在一起;同时,也会使1个多边顶点和1个单边顶点之间的推力(这种情况下,单边顶点一般会被压到靠近多边顶点的位置,弹簧被压缩,表现为推力)减弱,使得同一个团簇的顶点分布的更加密集;这样在团簇内密集、团簇间稀疏的显示效果能够更美观清晰的表达关系图谱。

所述步骤三中,kg为压力常数,dy为各顶点到x轴的垂直距离;这样处理的目的,是为了打破原本完全对称的力空间,完全对称的力空间,会使得整体图形的趋向为正圆形,不适合现在宽屏显示器的显示;而打破对称的力空间,使得所有顶点都受到向x轴的压力(并且离x轴越远压力越大)时,通过调整kg常数大小,可以将原来的正圆形稍微压扁成为椭圆的形状,而又不至于完全压扁变成一条线,这样就非常适合宽屏的显示。

所述步骤四中,m为质量,link为顶点相邻边的数量,a是顶点加速度;即单位时间内,顶点需要运动的位移;引入顶点质量使得单边顶点或孤立顶点加速度更大,而多边顶点的加速度较小,这样每个顶点团簇的中心顶点位置相对比较稳定,不会出现因中心顶点移动导致的大规模顶点跳动情况,可以有效加快收敛速度。

所述步骤五中全量绘制计算步骤如下:

(1)给所有顶点在0-100坐标范围内设置一个随机的初始位置;

(2)开始迭代;

(3)遍历顶点,设顶点电荷为1,根据每两个顶点间的距离r,计算每个顶点受到的斥力fr,并且当顶点距离大于maxr时,斥力为0;

(4)遍历边,根据每条边的长度d和该边顶点的总边数link,计算边对顶点施加的弹簧弹力fs;

(5)遍历顶点,根据每个顶点到x轴的距离dy,计算顶点受到的背景压力fg;

(6)遍历顶点,对每个顶点受到的斥力、弹力和背景压力求和得到合力f;

(7)遍历顶点,按照顶点总的受力大小f,和顶点质量m,计算顶点的运动加速度a;

(8)遍历顶点,根据加速度a,对各顶点在单位时间δt内进行a与δt乘积的位移距离移动;

(9)当所有顶点的位移平均值足够小avg<sa,或迭代超过一定次数时,停止迭代,否则跳转到步骤(2)进行下一次迭代。

所述步骤五中增量绘制计算步骤如下:

(1)给新增顶点在0-100坐标范围内设置一个随机的初始位置;

(2)开始迭代;

(3)遍历顶点,设顶点电荷为1,根据每两个顶点间的距离r,计算每个顶点受到的斥力fr,并且当顶点距离大于maxr时,斥力为0;

(4)遍历边,根据每条边的长度d和该边顶点的总边数link,计算边对顶点施加的弹簧弹力fs;

(5)遍历顶点,根据每个顶点到x轴的距离dy,计算顶点受到的背景压力fg;

(6)遍历顶点,对每个顶点受到的斥力、弹力和背景压力求和得到合力f;

(7)遍历顶点,按照顶点总的受力大小f,和顶点质量m,计算顶点的运动加速度a;

(8)遍历顶点,根据加速度a,对各顶点在单位时间δt内进行a与δt乘积的位移距离移动;

(9)当所有顶点的位移合计值足够小sum<sn,或迭代超过一定次数时,停止迭代,否则跳转到步骤(2)进行下一次迭代。

(10)步骤(2)到(9)中的距离r、斥力fr、弹力fs、压力fg、合力f、加速度a、单位时间内的位移均为直角坐标系中的向量。

为了更好地实现上述发明目的,本发明又提供一种力引导算法的优化方法,其中,可以根据绘图需要,调整各常量使得顶点受力能够达到最终平衡,包括斥力常量kr、斥力消散的距离maxr、弹力常量ks、弹簧静态长度l、压力常量kg、单位时间常量δt、停止因子sa、停止因子sn;例如将斥力常量kr、弹簧静态长度l为原常量基础上减小20%-50%,这样能使顶点分布更加密集,从而绘制紧凑型的关系图谱;而将斥力常量kr、弹簧静态长度l为原常量基础上增大50%-100%,这样能使顶点分布更加稀疏,从而绘制松散型的关系图谱。

本发明的有益效果为:本发明提供的力引导算法的优化方法,该方法对顶点的斥力公式,边的弹力公式进行优化,同时引入了背景压力、顶点质量等因素,并且在新增顶点时动态调整参数配置和收敛机制,使得绘制的关系图谱更美观、覆盖区域趋向为椭圆形、同一关系圈位置集中、新增顶点时老顶点位置变化小且收敛速度明显加快。

附图说明

图1为全量顶点绘制效果图。

图2为增量顶点绘制效果图。

图3为大量顶点复杂关系绘制效果图。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式,对本方案进行阐述。

参见图1至图3,本发明是:一种力引导算法的优化方法,其中,包括以下步骤:

步骤一:对顶点的库仑力进行优化:

优化库仑力公式为:

步骤二:对边的弹力公式进行优化:

原有弹力公式为:fs=ks(d-l);

优化弹力公式为:

步骤三:增加背景压力的因素:

使用的压力公式为:fg=kgdy;

步骤四:增加顶点质量的因素:

使用的质量公式为:

使用的加速度公式为:

定义:一个多边顶点和与他相邻的若干个单边顶点,构成一个顶点团簇;

步骤五:新增顶点时动态调整参数配置和收敛机制:

全量绘制的收敛机制:单位时间内顶点位移的平均值avg<停止常数sa;

增量绘制的收敛机制:单位时间内顶点位移的合计值sum<停止常数sn;

在全量绘制时,当绝大部分顶点单位时间位移稳定,就会停止迭代,不会出现因个别顶点不稳定,而产生的无限抖动现象;而增量绘制时,由于原有顶点产生的位移很小,如果使用全量绘制的收敛机制,会导致迭代不充分,新增顶点无法位移到合适位置,而改用增量绘制机制后,只有当全部顶点的单位时间内位移稳定,才会停止迭代。

这样的机制,即能在全量绘制时,保证快速收敛,减少抖动,又能在增量绘制时,确保迭代充分。

所述步骤一中,kr为库仑力常数,p1、p2为2个顶点电荷数,r为顶点间的距离,maxr为顶点斥力的最大有效距离,当超出有效距离时,顶点斥力消失,这样处理的好处在于消除相距较远的顶点斥力带来的微扰动,简化运算量,加快收敛速度。

所述步骤二中,ks为弹力常数,l为弹簧静态长度,d为弹簧当前长度,link1、link2分别为弹簧连接的2个顶点的总边数;这样处理的好处在于,使得2个边都比较多的顶点之间的拉力(2个多边顶点之间受到的整体斥力会比较大,弹簧必然被拉伸,这里表现为拉力)减弱,能够有更远的间距,这样能够有更大的空间去放置与他们相连的顶点,不会使2个较大的顶点团簇挤在一起;同时,也会使1个多边顶点和1个单边顶点之间的推力(这种情况下,单边顶点一般会被压到靠近多边顶点的位置,弹簧被压缩,表现为推力)减弱,使得同一个团簇的顶点分布的更加密集;这样在团簇内密集、团簇间稀疏的显示效果能够更美观清晰的表达关系图谱。

所述步骤三中,kg为压力常数,dy为各顶点到x轴的垂直距离;这样处理的目的,是为了打破原本完全对称的力空间,完全对称的力空间,会使得整体图形的趋向为正圆形,不适合现在宽屏显示器的显示;而打破对称的力空间,使得所有顶点都受到向x轴的压力(并且离x轴越远压力越大)时,通过调整kg常数大小,可以将原来的正圆形稍微压扁成为椭圆的形状,而又不至于完全压扁变成一条线,这样就非常适合宽屏的显示。

所述步骤四中,m为质量,link为顶点相邻边的数量,a是顶点加速度;即单位时间内,顶点需要运动的位移;引入顶点质量使得单边顶点或孤立顶点加速度更大,而多边顶点的加速度较小,这样每个顶点团簇的中心顶点位置相对比较稳定,不会出现因中心顶点移动导致的大规模顶点跳动情况,可以有效加快收敛速度。

所述步骤五中全量绘制计算步骤如下:

(1)给所有顶点在0-100坐标范围内设置一个随机的初始位置;

(2)开始迭代;

(3)遍历顶点,设顶点电荷为1,根据每两个顶点间的距离r,计算每个顶点受到的斥力fr,并且当顶点距离大于maxr时,斥力为0;

(4)遍历边,根据每条边的长度d和该边顶点的总边数link,计算边对顶点施加的弹簧弹力fs;

(5)遍历顶点,根据每个顶点到x轴的距离dy,计算顶点受到的背景压力fg;

(6)遍历顶点,对每个顶点受到的斥力、弹力和背景压力求和得到合力f;

(7)遍历顶点,按照顶点总的受力大小f,和顶点质量m,计算顶点的运动加速度a;

(8)根据加速度a,对各顶点在单位时间δt内进行a与δt乘积的位移距离移动;

(9)当所有顶点的位移平均值足够小avg<sa,或迭代超过一定次数时,停止迭代,否则跳转到步骤(2)进行下一次迭代。

所述步骤五中增量绘制计算步骤如下:

(1)给新增顶点在0-100坐标范围内设置一个随机的初始位置;

(2)开始迭代;

(3)遍历顶点,设顶点电荷为1,根据每两个顶点间的距离r,计算每个顶点受到的斥力fr,并且当顶点距离大于maxr时,斥力为0;

(4)遍历边,根据每条边的长度d和该边顶点的总边数link,计算边对顶点施加的弹簧弹力fs;

(5)遍历顶点,根据每个顶点到x轴的距离dy,计算顶点受到的背景压力fg;

(6)遍历顶点,对每个顶点受到的斥力、弹力和背景压力求和得到合力f;

(7)遍历顶点,按照顶点总的受力大小f,和顶点质量m,计算顶点的运动加速度a;

(8)遍历顶点,根据加速度a,对各顶点在单位时间δt内进行a与δt乘积的位移距离移动;

(9)当所有顶点的位移合计值足够小sum<sn,或迭代超过一定次数时,停止迭代,否则跳转到步骤(2)进行下一次迭代。

为了更好地实现上述发明目的,本发明又提供一种力引导算法的优化方法,其中,可以根据绘图需要,调整各常量使得顶点受力能够达到最终平衡,包括斥力常量kr、斥力消散的距离maxr、弹力常量ks、弹簧静态长度l、压力常量kg、单位时间常量δt、停止因子sa、停止因子sn;例如将斥力常量kr、弹簧静态长度l适当减小,这样能使顶点分布更加密集,从而绘制紧凑型的关系图谱;而将斥力常量kr、弹簧静态长度l适当增大,这样能使顶点分布更加稀疏,从而绘制松散型的关系图谱。

为了实现本发明的目的,下面通过具体实施方式,对本发明进一步详细说明。

假设有一组人员关系:

{张三->李四,张三->王五,张三->赵六}

首先,我们基于html5的canvas组件进行绘制,使用浏览器查看绘制效果。我们用人的图标表示顶点,用紫色带箭头线段表示边,按照优化后的力引导算法全量绘制张三的人员关系可得到图1的效果;

其次,我们实现如下操作,当双击某个顶点时,将该顶点的人员关系增量绘制到图中,为方便示例,每次新增均使用以下关系:

{顶点x->李武1,顶点x->李武2,顶点x->李武3,…顶点x->李武8,

}

其中顶点x表示被双击的顶点,按照优化后的力引导算法进行增量绘制可得到图2的效果。

再次,我们随机对任意顶点,进行增量添加关系,并按照优化后的力引导算法进行增量绘制,在若干次添加后,可以得到图3的效果。

从示例中可以看到绘制的关系图谱很美观,覆盖区域整体趋向为椭圆形,适合宽屏显示,同一顶点团簇位置集中,不同顶点团簇位置分散,而新增顶点时老顶点位置变化较小且收敛速度很快。

以上实施例使用了一组可以使得顶点受力最终平衡的常量,包括斥力常量kr、斥力消散的距离maxr、弹力常量ks、弹簧静态长度l为原常量的基础上减小20%-50%、压力常量kg、单位时间常量δt、停止因子sa、停止因子sn;经过测试这些常数可以使得顶点能够快速收敛到平衡态,并且有较好的顶点分布效果。

以上实例使用的一组常量如下,其中距离和长度单位均为像素pt:

kr(库仑力常数):10000;

maxr(顶点斥力的最大有效距离):400;

ks(弹力常数):0.00005;

l(弹簧静态长度):200;

kg(压力常数):0.0005;

sa(全量绘制停止常数):0.01;

sn(增量绘制停止常数):0.01;

δt(单位时间):10。

本发明未经描述的技术特征可以通过或采用现有技术实现,在此不再赘述,当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。

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