发明名称 基于多层次方法和离散粒子群的赋权超图优化划分方法
摘要 本发明涉及一种基于多层次方法和离散粒子群的赋权超图优化划分方法,其读取赋权超图文件,采用改进压缩的内存存储格式进行存储,然后启动基于多层次方法和离散粒子群的赋权超图划分程序进行划分,将划分结果存储在赋权超图划分文件中。在粗化阶段,采用赋权超图的结点匹配程序将当前水平层粗化赋权超图的某些结点结合在一起,得到下一水平层的粗化赋权超图,重复此过程直到粗化赋权超图足够小为止;在初始划分阶段,运行基于FM方法的赋权超图划分程序,得到最小赋权超图的初始划分;在优化阶段,从最小赋权超图投影回初始赋权超图,在每一水平层的细化赋权超图中,采用离散粒子群搜索程序对细化赋权超图的投影划分进行优化。
申请公布号 CN104679966A 申请公布日期 2015.06.03
申请号 CN201510135672.8 申请日期 2015.03.26
申请人 孙凌宇;冷明;冷子阳 发明人 冷明;孙凌宇;冷子阳
分类号 G06F17/50(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 代理人
主权项 一种基于多层次方法和离散粒子群的赋权超图优化划分方法,其特征在于,具体步骤如下:步骤1,<b>读取赋权超图文件生成</b>,读取按照改进压缩的文件存储格式保存的赋权超图文件;步骤2,<b>在内存中存储赋权超图文件</b>,采用改进压缩的内存存储格式对赋权超图进行存储;步骤3,<b>对内存中的赋权超图划分</b>,启动基于多层次方法和离散粒子群的赋权超图划分程序,对内存中的赋权超图进行划分,将最终得到的划分结果存储在赋权超图划分文件中;上述的步骤1中,所述的赋权超图的改进压缩的文件存储格式如下:步骤1.1,文件格式的第1行第1个参数代表着赋权超边的数目m,第2个参数代表着赋权结点的数目n;步骤1.2,文件格式的第2行开始到第m+1行的每行代表着一条赋权超边的相关信息,第1个数值为赋权超边的权值信息,其余数值为赋权超边的结点信息,其中每行的最后一个数值代表赋权超边的尾端结点信息,且赋权超边的源端结点信息处于赋权超边的权值信息和尾端结点信息之间;步骤1.3,文件格式的第m+2行开始到第m+n+1行的每行代表着一个赋权结点的权值信息;上述的步骤2中,所述的赋权超图的改进压缩的内存存储格式如下:步骤2.1,使用vwgts数组存储赋权超图中结点的权值信息,且vwgts数组的大小为赋权超图中的结点个数;步骤2.2,使用xadj数组存储每个结点所有邻接赋权超边列表的起始位置信息,即第i个结点的终止位置为第i+1个结点的起始位置减1,且xadj数组的大小为赋权超图中的结点个数加1,xadj数组最后一个元素用于存放最后一个结点的终止位置;步骤2.3,使用adjncy数组存储每个结点所有邻接赋权超边的列表信息,第i个结点的邻接赋权超边列表存储在adjncy数组中,从adjncy[xadj[i]]到adjncy[xadj[i+1]‑1];步骤2.4,使用eptr数组存储每条赋权超边所包含的结点列表的起始位置信息,即第j条赋权超边的终止位置为第j+1条赋权超边的起始位置减1,且eptr数组的大小为赋权超图中的赋权超边条数加1,eptr数组最后一个元素用于存放最后一条赋权超边的终止位置;步骤2.5,使用eind数组存储每条赋权超边所包含结点的列表信息,其中每条赋权超边的尾端结点只有1个,且每条赋权超边尾端结点的所有直接前驱结点都包含在该赋权超边的源端子集中;第j条赋权超边的结点列表存储在eind数组中,从eind[eptr[j]]到eind[eptr[j+1]‑1],其中第j条赋权超边的源端结点为eind[eptr[j]]到eind[eptr[j+1]‑2],第j条赋权超边的尾端结点为eind[eptr[j+1]‑1];步骤2.6,使用hewgts数组存储赋权超边的权值信息,且hewgts数组的大小为赋权超图中的赋权超边数目;上述的步骤3中,所述的基于多层次方法和离散粒子群的赋权超图划分程序的步骤如下:步骤3.1,进入到多层次方法的粗化阶段,采用赋权超图的结点匹配程序将当前水平层粗化赋权超图的某些结点结合在一起,得到每一水平层的粗化赋权超图,重复此过程直到粗化赋权超图足够小为止,即得到一个最小赋权超图;步骤3.2,进入到多层次方法的初始划分阶段,运行基于FM方法的赋权超图划分程序,得到最小赋权超图的初始划分;步骤3.3,多层次方法优化阶段的离散粒子群优化划分程序初始化,初始化全体粒子的全局历史最优位置向量和每个粒子的自身位置向量、自身速度向量、自身历史最优位置向量;步骤3.4,进入到多层次方法的优化阶段,从最小赋权超图投影回初始赋权超图,在每一水平层的细化赋权超图中,采用离散粒子群优化划分程序对细化赋权超图的投影划分进行优化,得到每一水平层细化赋权超图的近似非劣最优划分集;步骤3.5,由于在基于多层次方法的赋权超图划分过程中,可能违背赋权超图划分问题的平衡约束条件,因此在基于多层次方法的赋权超图划分所求解的基础上,运行基于EE‑FM方法的赋权超图划分程序,使原始赋权超图的近似非劣最优划分解满足平衡约束条件,从而得到赋权超图划分问题的划分结果;步骤3.6,将最终得到的赋权超图划分结果存储在赋权超图划分文件中;上述的步骤3.1中,所述的当前水平层粗化赋权超图的结点匹配程序的步骤如下:步骤3.1.1,标注当前水平层粗化赋权超图中所有结点处于未匹配状态;步骤3.1.2,运行赋权超图的结点核值计算程序,基于结点属性函数值进行当前水平层粗化赋权超图中所有结点的核值求解,并按照结点的核值进行非严格降序排序;步骤3.1.3,按照结点核值的非严格降序访问处于未匹配状态的结点v;如果结点v还有邻接结点未匹配,那么选取处于未匹配状态的且权值最大的邻接超边的邻接结点u和结点v匹配,且标注这两个结点为匹配状态;如果结点v所有邻接结点均处于匹配状态,则结点v仍处于未匹配状态,在粗化过程中直接拷贝到下一水平层的粗化赋权超图中;步骤3.1.4,重复步骤3.1.3,直至所有结点访问结束;上述的步骤3.1.2中,所述的赋权超图的结点核值计算程序的步骤如下:步骤3.1.2.1,计算出所有结点的属性函数值;步骤3.1.2.2,对所有结点的属性函数值进行非严格降序排序;步骤3.1.2.3,按照结点属性函数值的非严格降序次序访问每个结点,计算每个结点的核值;上述的步骤3.1.2.2中,所述的对所有结点的属性函数值进行非严格降序排序的步骤如下:步骤3.1.2.2.1,根据结点的属性函数值属于在一定范围内的整数的特点,扫描所有结点的属性函数值,统计每一种属性函数值的结点个数,存储在计数辅助数组bin中;步骤3.1.2.2.2,针对每一种属性函数值,借助计数辅助数组bin,计算出在所有结点的属性函数值中,小于该属性函数值的结点个数,存储在位置辅助数组pos中;步骤3.1.2.2.3,扫描所有结点的属性函数值,针对每一个结点的属性函数值,借助位置辅助数组pos,得到该结点的属性函数值在非严格降序排序的次序,并将该次序存储在次序辅助数组vert中;上述的步骤3.1.2.3中,所述的计算结点v的核值的步骤如下:步骤3.1.2.3.1,将结点v的属性函数值作为核值输出;步骤3.1.2.3.2,标记结点v从所在的超边e中删除;步骤3.1.2.3.3,如果超边e删除结点v后,仍包含两个及以上未被标记删除的结点,则超边e仍然存在,否则删除超边e;步骤3.1.2.3.4,重新计算结点v的邻接结点u的属性函数值;步骤3.1.2.3.5,如果邻接结点u的属性函数值大于结点v的属性函数值,更新邻接结点u的属性函数值为结点v的属性函数值,并且借助计数辅助数组bin、位置辅助数组pos和次序辅助数组vert的信息,快速更新邻接结点u在所有结点的属性函数值非严格降序排序的次序;否则不更新邻接结点u的属性函数值及其排序的次序;上述的步骤3.3中,所述的离散粒子群搜索程序初始化的步骤如下:步骤3.3.1,设定全体粒子的全局历史最优位置向量的初值为最小赋权超图的初始划分;步骤3.3.2,遍历每个粒子,并设定每个粒子的自身位置向量的初值为最小赋权超图的初始划分,粒子在最小赋权超图的每个维度空间的位置代表着该维度空间对应的最小赋权超图结点所处划分的结点子集;步骤3.3.3,遍历每个粒子,并在速度阈值范围内随机给定每个粒子在每个维度空间的速度向量;步骤3.3.4,遍历每个粒子,并设定每个粒子的自身位置向量的初值为自身历史最优位置向量;上述的步骤3.4中,所述的离散粒子群搜索程序的步骤如下:步骤3.4.1,遍历每个粒子,并依据每个粒子的上一水平层粗化赋权超图的自身位置向量投影到当前水平层的细化赋权超图上,得到每个粒子在当前水平层细化赋权超图的自身位置向量;粒子在当前水平层的细化赋权超图的每个维度空间的位置代表着该维度空间对应的当前水平层的细化赋权超图结点所处划分的结点子集;步骤3.4.2,遍历每个粒子,并依据每个粒子的上一水平层粗化赋权超图的自身速度向量投影到当前水平层的细化赋权超图上,得到每个粒子在当前水平层细化赋权超图的自身速度向量,即粒子在当前水平层细化赋权超图的每个维度空间的速度;步骤3.4.3,遍历每个粒子,并依据每个粒子的当前水平层细化赋权超图的自身位置向量,计算每个粒子的二维辅助数组EDG[n][m] ;步骤3.4.4,遍历每个粒子,并依据每个粒子的二维辅助数组EDG[n][m],快速计算每个粒子在当前水平层的细化赋权超图的自身位置向量的割切值;步骤3.4.5,循环初始化,初始化循环计数器COUNT为0;步骤3.4.6,遍历每个粒子在当前水平层的细化赋权超图的所有维度,更新每个粒子在每个维度的自身速度、自身位置,进而得到每个粒子的自身速度向量和自身位置向量;步骤3.4.7,依据粒子的自身位置向量更新计算粒子的二维辅助数组EDG[n][m];步骤3.4.8,由于经过一系列结点的迁移后,粒子自身位置向量对应的划分可能违背赋权超图划分问题的平衡约束条件,因此每个粒子针对自身位置向量,运行基于EE‑FM方法的赋权超图划分方法,使划分解满足平衡约束条件,从而得到赋权超图划分问题的划分结果;步骤3.4.9,遍历每个粒子,并依据每个粒子的自身位置向量和二维辅助数组EDG[n][m],快速计算每个粒子的当前水平层细化赋权超图的自身位置向量的割切值;如果该粒子的自身位置向量的割切值小于自身历史最优位置向量的割切值,则更新该粒子的历史最优位置向量为当前的自身位置向量;如果该粒子的自身位置向量的割切值小于全体粒子的全局历史最优位置向量的割切值,则更新全体粒子的全局历史最优位置向量为该粒子当前的自身位置向量;步骤3.4.10,重复步骤3.4.6、3.4.7、3.4.8、3.4.9,直至循环计数器COUNT到达给定的上限;上述的步骤3.4.3和步骤3.4.7中,所述的计算粒子的二维辅助数组EDG[n][m]的步骤如下:步骤3.4.3.1,二维辅助数组EDG[n][m]清零;步骤3.4.3.2,读取eptr数组和eind数组存储的每条超边所包含的结点信息,基于粒子的当前水平层细化赋权超图的自身位置向量,计算每条超边在n个划分子集V<sub>1</sub>~V<sub>n</sub>的结点个数,即二维辅助数组EDG[n][m]存放m条超边在n个划分子集的结点个数;上述的步骤3.4.4和步骤3.4.9中,所述的快速计算粒子自身位置向量割切值的步骤如下:步骤3.4.4.1,划分割切值清零;步骤3.4.4.2,遍历每条超边是否结束,如果访问未结束,即存在超边e未被访问,则转步骤3.4.4.3;否则访问结束,返回划分割切值;步骤3.4.4.3,如果满足EDG[i][e] ≥1的条件1和EDG[j][e]≥1的条件2时,意味着超边e在划分子集Vi和Vj的结点个数都大于等于1,即可判定超边e是两栖边,并将划分割切值累加上当前超边的权值;否则判定超边e不是两栖边,划分割切值不变;步骤3.4.4.4,转步骤3.4.4.2;上述的步骤3.4.6中,所述的更新粒子在当前维度的自身速度和自身位置的步骤如下:步骤3.4.6.1,计算出粒子在当前维度的自身速度与惯性权重参数的乘积;步骤3.4.6.2,计算出粒子在当前维度的历史最优位置和粒子的当前自身位置的差,再和认知参数相乘;步骤3.4.6.3,计算出全体粒子在当前维度的全局历史最优位置和粒子的当前自身位置的差,再和社会参数相乘;步骤3.4.6.4,计算出步骤3.4.6.1、步骤3.4.6.2、步骤3.4.6.3得到的三个乘积的和,在速度阈值范围内更新粒子在当前维度的自身速度;步骤3.4.6.5,快速计算出粒子在当前维度的迁移收益值,如果收益值大于零,则对粒子在当前维度的位置进行迁移,更新粒子在当前维度的自身位置;否则计算出粒子在当前维度的粒子自身位置和自身速度向量的和,更新粒子在当前维度的自身位置;上述的步骤3.4.6.5中,所述的快速计算粒子在当前维度的迁移收益值的步骤如下:步骤3.4.6.5.1,迁移收益值清零;步骤3.4.6.5.2,读取粒子在当前维度的自身位置保存在from变量;步骤3.4.6.5.3,遍历当前维度对应结点的所有邻接超边eId,如果二维数组EDG[from][eId]值为1,则将收益值加上超边eId的权值;否则将收益值减去超边eId的权值。
地址 343000 江西省吉安市吉州区安宁路15号6栋101室
您可能感兴趣的专利