作者简介:李文辉(1961-),男,教授,博士生导师.研究方向:计算机辅助设计,计算机图形学.E-mail:liwenhui2050@163.com
采用表达几何基元参数和基本几何约束的二部图模型表示几何约束系统,提出一种新的基于二部图最大匹配的几何约束求解方法,并由二部图分解法对几何约束系统的欠、过约束属性进行识别。通过加入几何约束优先级,改进几何约束装配机制来处理欠约束几何约束系统;当处理过约束的几何约束系统时,由改进的人工蜂群算法识别一致性与非一致性过约束并对识别的过约束子域进行有效处理。研究结果表明,本文基于新的二部图模型的几何约束求解方法是行之有效的。
In this paper, a geometric constraint system is represented by a bipartite graph model, which expresses geometric primitive parameters and basic geometric constraints, and a new Geometric Constraint Solving (GCS) method based on the maximum matching of bipartite graph is proposed. The under- and over-constrained sub-domains are identified by using the bipartite graph decomposition method. An under-constrained sub-domain is processed by introducing the geometric constraint priority and improving the geometric constraint assembly mechanism. The consistent and inconsistent over-constraints are identified by the modified artificial bee colony algorithm, and the identified over-constrained sub-domain is also effectively processed. Research results show that the GCS method based on the new bipartite graph model is effective.
几何约束求解[1](Geometric constraint solving, GCS)可理解为几何造型(如:产品模型、分子结构造型、工程设计用图等)设计的自动化, 即给定造型的几何约束关系后, 自动生成用户所需设计造型的过程。它作为现代参数化、变量化设计体系的核心, 是现代化计算机辅助设计(Computer aided design, CAD)和计算机辅助制造(Computer aided manufacture, CAM)的重要标志之一[2, 3]。几何约束求解也被广泛应用于产品造型、装配设计、虚拟现实、运动学分析、化学分子建模、机器人动力学和教学几何等诸多领域。
目前, 几何约束求解方法主要包括:数值计算法[4, 5, 6]、符号代数法[7]、基于规则的方法[8]和基于图论的方法[9]。其中, 基于图论的几何约束求解方法以其求解效率高、求解性能稳定在其他各几何约束求解方法中已占据主导地位。该方法使用图来表达一个几何约束系统, 采用一种“ 分而治之” 的策略, 首先, 将系统分解为一系列独立可解的子约束域; 其次; 对分解后获得的子域采用代数或几何的方法进行求解; 最后, 对子域的解进行合并, 获得原几何约束系统的最终解。
本文在使用二部图模型表达几何约束系统的基础上, 提出一种新的基于二部图最大匹配的几何约束求解方法, 该方法由二部图分解机制正确识别一个几何约束系统包含的欠约束和过约束子域, 并通过添加几何约束优先级和改进几何约束装配机制的策略处理欠约束子域, 通过文献[10]中改进的人工蜂群(ABC)算法识别出过约束子域内的一致性与非一致性过约束, 不同类型的过约束问题采用不同的处理方法。
对几何约束系统建模是分析系统冗余和几何约束求解的重要前提。本文采用二部图模型对一个几何约束系统实施建模。二部图[11]是图论中一种特殊的图表达方式, 其主要特点是:图的顶点集被划分为两个不相交的子集, 每条边所关联的两顶点分别属于这两个子集。由二部图模型表示的几何约束系统中, 一个子集表示几何基元, 另一个子集表示几何约束, 边集则表示几何基元与几何约束相关联。该二部图模型完全建立在几何基元与几何约束的相关性上, 因此, 识别系统约束属性(良、欠和过约束)也完全是根据几何基元自由度和几何约束的约束度二者间的这种相关性进行, 导致约束属性的识别仅是建立在结构意义上而绝非几何意义上, 使二者不完全等价, 而本文旨在有效识别出几何约束系统在几何意义上的欠和过约束属性。因此, 针对传统二部图建模方法存在的缺陷进行改进, 新二部图建模方法建立在几何基元参数和基本几何约束的关系上, 用以准确描述几何基元参数和基本几何约束的关系。
假设存在几何约束系统GS=(O, C), 其中O={gi|1≤ i≤ m}为m个几何基元, C={cj|1≤ j≤ n}为n个几何约束。假设G=(V+, V-, E)为二部图, 其中V+={
图1为基于本文二部图模型所表示的几何约束系统实例。其中, uij(1≤ i≤ 2, 1≤ j≤ 3)为几何基元
提出的新的几何约束系统建模方法能够将几何基元和基本几何约束的具体参数相关联, 进一步精确描述约束关系。假设分解获得的基本约束的约束度为1, 任何复杂几何约束均可由分解后的基本几何约束来表示。
二部图最大匹配的目的是:由适合方法使二部图顶点的可匹配对的数量达到最大。二部图最大匹配的方法众多, 典型的有:①枚举方法, 该方法的时间复杂度过大, 通常不适用于规模较大的二部图模型。②最小点覆盖方法, 该方法虽能获得最大匹配, 但时间复杂度仍然过大, 为NP难问题。③网络流量算法, 该算法实现较为复杂, 难于理解。④匈牙利算法, 是对网络流算法的简化, 但时间复杂度也较大, 难于理解。本文提出基于结点度优先级的最优选择算法, 时间复杂度为O(mn)。
二部图的最大匹配可以简化, 从另一角度, 若假设:当前无匹配对可再进行匹配, 但匹配不是最大的, 则必然存在某个不是最优的匹配, 它使某一顶点失去了选择最佳匹配的机会。因此, 在最大匹配过程中应保证每一匹配对均为最优。本算法的目的是花费最小代价以获得数量最多的匹配对, 换言之, 使用最少的选择权获得二部图的最大匹配。
根据上述分析, 为有效保证二部图模型的最大匹配, 可使度越小的顶点具有越高的优先级, 使匹配选择均为最优。假设二部图为G=(V+, V-, E), 该匹配算法如下:
算法1 基于顶点度的几何约束系统的二部图最大匹配。
步骤1 遍历V+(或者V-)包含的顶点, 如果V+不为空集, 找到V+中所包含的优先级最高的顶点u, 否则, 算法终止。
步骤2 通过遍历关联u的顶点找到优先级最高的顶点v。
步骤3 装配一条边(u, v)到最大匹配集M。
步骤4 分别拆卸V+、V-的顶点u、v和E的边(u, v)。
步骤5 拆卸该二部图G中所有度等于0的顶点, 转步骤1。
记D(u)为顶点u的度。由算法1构造的集合M为二部图G的一个最大匹配。
定理1 由算法1所获得的每一匹配都是当前最优选择。
证明:令u、v分别为V+和V+中包含的优先级最高的顶点。
(1)当D(u)=D(v)=1, 此时, 二者仅彼此相互连接。那么, 显然u、v为最佳匹配。
(2)当D(u)=1, D(v)> 1, 同时存在u'∈ V+满足:D(u')=1, u'与v相连接。那么, u和u'具有相同的优先级, 其中任一顶点与v相匹配时, 另一顶点将成为孤立点。此时, 将u和v相匹配, 拆卸u'。
(3)当D(u)> 1, D(v)=1, 同时存在v'∈ V-满足:D(v')=1, v'与u相连接。与(2)中情况相类似, 针对顶点u, v和v'的优先级相同。此时, u与v相匹配, 拆卸v'。
(4)当D(u)> 1, D(v)> 1, 由于顶点u在V+中的优先级最高, 所以u将作为对V-中影响最小的匹配对象。类似地, v将作为对V+中影响最小的匹配对象。同时, 由于D(u)> 1, 则与v相连接的顶点的度必然大于1, 同样, 与u相连接的顶点的度也必然大于1, 而在二者相匹配和拆卸关联它们的边后, 与u和v相连接的顶点的度均减少1, 但这些顶点的度仍大于1, 因此仍然具有匹配机会, 则u与v的匹配是当前最佳的。
由算法1 能够找到图1中二部图模型G的一个最大匹配, 如图2中的粗线部分所示, 最大匹配为M={(u11, v11), (u12, v12), (u21, v13), (u22, v21), (u23, v22)}。根据遍历顺序的不同, 被选择的优先级相同的顶点不同, 因此获取的最大匹配并非唯一。
针对几何约束系统约束属性的识别, 可使用DM分解法[12]将二部图模型分解为由子图构成的集合, 集合中的每一子图也均为二部图。由分析识别出这些子图的约束属性, 并根据偏序关系推导出系统的求解序列。
仍然假设GS=(O, C)为一个几何约束系统, G=(V+, V-, E)为二部图模型, G0, G1, G2, …, Gr,
定理2 在DM分解法的生成序列G0, G1, G2, …, Gr,
证明:G0, G1, G2, …, Gr为DM分解的强联通子图, 其任一子图Gi中几何基元的自由度与几何约束的约束度相等, 几何基元参数与几何约束一一对应使Gi的几何约束方程组中约束方程的数量与求解变量的数量相等。因此, 约束方程组满秩, 存在唯一解, 由提出的二部图建模方法得到G1, G2, …, Gr为良约束子域。
根据几何约束系统欠约束的定义, 若子图G0满足DOF(G0)> 0, 则G0为欠约束子图。根据DM分解法, G0=S+∪ {u|u∈ V+∪ V-, v∈ S+, v→ u}, 其中S+⊂V+为非饱和顶点集, 且若存在饱和顶点v∈ G0∩ V-, 则必然存在顶点u∈ V+满足u是饱和顶点, v→ u, 进一步地v∈ G0。G0中分别属于V+和V-的饱和顶点数相等, 则有
本文通过改进几何约束装配机制处理欠约束的几何约束系统提高算法效率, 并针对传统符号算法实现复杂、计算量大和求解效率低等不足, 采用文献[10]中改进的ABC算法识别过约束子域的一致性与非一致性。
由几何约束系统的偏序关系可以知道, 若系统同时包含欠约束和过约束子域, 它的过约束子域应优先予以处理; 其次为良约束子域; 最后为欠约束子域。按照这一顺序处理子域的优点是:针对欠约束子域的处理, 可由草图判断所装配的几何约束是否与设计者的设计意图保持一致。
几何约束系统欠约束的本质是对几何造型在形态或位置上限制不足导致其产生形变或位移, 反映在几何约束方程组上是指待解未知量在数量上大于方程的数量, 使约束方程组包含无限数量的解。因此, 需要在几何约束系统中装配几何约束使之转换为良约束的几何约束系统。转换的核心思想是:首先, 分解该子域为元素互不相关的集合, 该集合的每一元素仍为欠约束子域; 其次, 由优先级选择性地装配满足条件的几何约束或几何约束组合; 最后, 对所装配几何约束的有效性进行判断。
由于几何约束系统出现欠约束的位置可能不是唯一的, 因此, 分解是针对G0在整体进行, 所有欠约束子域的顶点均包含于V0。此时, V0被分解为r个相互独立的子集V01, V02, …, V0r, 其中任意一个V0i(1≤ i≤ r)为独立且不可分解的欠约束子域的顶点集, V0i∩ V0j=φ , 1≤ i, j≤ r。按顺序对V0i进行处理。
添加几何约束优先级时, 由于顶点集V0中仅有其饱和性质受最大匹配影响, 所以装配几何约束时, V0中所有顶点的优先级相同, 且除V0外的几何基元间的几何约束或几何约束组合与V0不相关, 对V0的欠、过约束属性无任何影响, 导致装配失效。这里, 针对欠约束子域的处理设置3个装配几何约束的优先级:
(1)V0i中几何基元间的几何约束或几何约束组合。
(2)V0i中与V0i以外的几何基元间的几何约束或几何约束组合。
(3)V0i中与V0j几何基元间的几何约束或几何约束组合。
若优先级相同, 优先选择一元几何约束, 其次是二元、三元, 以此类推, 且优先选择拓扑几何约束。需要注意:装配几何约束或几何约束组合时应避免使用同类型几何约束, 包括距离和角度。换言之, 在几何基元内部或几何基元间装配时, 需对同类型几何约束是否已经存在做出准确判断, 若存在, 则装配无效, 继续选取另一个满足条件的几何约束或几何约束组合进行装配。
对于装配是否有效, 仍然使用DM分解法判断新生成的二部图是否为最大匹配, 若是, 则装配有效。由于V0外的二部图是良约束子域, 且与它所包含的几何约束不相关, 所以, 判断只需对装配了几何约束或几何约束组合的V0进行即可。当装配的几何约束对设计者未知, 则装配仍然无效。若判断出所装配的几何约束有效, 则由求解序列求解几何约束系统, 生成满足约束的几何造型。若生成的几何造型与设计意图不相符, 表明装配了不正确的几何约束, 需重新选择进行装配。
算法2 欠约束子域的处理
步骤1 分解欠约束子域的顶点集V0为r个不相关的子欠约束域顶点集{V0i|1≤ i≤ r}, 其中V0i∩ V0j=φ , 1≤ i, j≤ r。
步骤2 按照V0i的生成顺序计算所有V0i的子约束域的自由度DOF(G0i), 记为k。
步骤3 按照装配优先级, 搜索几何基元内部或几何基元之间满足DOC(c)=k的几何约束c或满足∑ jDOF(cj)=k的几何约束组合∪ jcj。
步骤4 分解搜索到的满足DOC(c)> 1的几何约束或者满足∑ jDOF(cj)> 1的几何约束组合为基本几何约束的组合, 并判断与其相关联的几何基元内部或几何基元间参数是否已经存在同类型的几何约束, 若存在, 表明该基本几何约束无效, 转步骤3。
步骤5 添加搜索到的几何约束或几何约束组合到V0i, 并由DM分解法判断装配几何约束后的子图是否为最大匹配, 若不是, 设置装配部分中包含于过约束子域的基本几何约束为无效, 转步骤3。
步骤6 若所装配的几何约束对设计者而言不可知, 则设置该约束为无效, 转步骤3; 否则, 按照求解序列求解几何约束系统, 生成满足约束的几何造型, 若造型与设计意图不相符, 则将装配的几何约束中不相符约束设为无效, 转步骤3。
步骤7 若i≠ r, i=i+1, 转步骤2; 否则, 算法终止。
几何约束系统过约束是指在形态和位置上对造型限制过多, 换言之, 几何约束方程组中待解变量的数量大于方程数量, 导致方程组可能无解。因此, 需要通过拆卸多余的几何约束, 使系统转换为良约束的几何约束系统。
针对过约束子域的处理, 首先, 分解该子域为不相关的过约束域的集合; 其次, 对集合中每一元素的过约束类型做出有效判断; 最后, 根据不同的过约束类型选择适合的处理方法。
同样地, 由于过约束存在于几何约束系统的位置并非唯一, 所以仍然在整体上分解子图
过约束的几何约束系统包括一致性过约束子域和非一致性过约束子域。其中, 一致性过约束子域是指结构上过约束但几何上良约束的约束子域, 几何约束方程组中存在相容方程, 如x+y+z=1和2x+2y+2z=2, 一致性过约束的约束子域具有唯一解; 相对应地, 非一致性过约束子域是指结构上和几何上均为过约束的约束子域, 其几何约束方程组包含的不相容的约束方程导致系统是不可解的, 如2x+y+z=1和2x+3y+5z=2。识别过约束约束子域的一致性与非一致性, 普遍的做法是进行符号计算, 但效率低, 需要消耗大量的计算时间和计算空间。本文采用文献[10]中改进的ABC算法识别过约束的一致性与非一致性。由DM分解法可知
对于一致性过约束, 几何约束是相容的, 替换对应的几何约束方程组能够保持几何约束系统的解不变, 因此, 只保留其中的一个几何约束, 且拓扑几何约束被优先保留, 并拆卸其他的冗余几何约束; 对于非一致性过约束, 几何约束不相容, 替换将导致几何约束方程组的解并非唯一, 除只有唯一的正确解以外, 其他不相容几何约束均不符合设计意图, 因此, 输出不相容的几何约束, 并由设计者选择性地拆卸其中不符合设计意图的几何约束。如果过约束子域仅包含一致性过约束或者非一致性过约束中由设计者拆卸的几何约束恰好是
算法3 过约束子域的处理算法
步骤1 分解过约束子域的顶点集
步骤2 按照
步骤3 由
步骤4 若替换后的几何约束方程组被S所满足, 则拆卸冗余几何约束和对应的非饱和顶点。
步骤5 若几何约束方程组不能被S所满足, 对非饱和顶点的几何约束予以输出, 并由设计者拆卸不符合设计意图的冗余几何约束和顶点; 若拆卸的几何约束与饱和顶点相对应, 则设置保留几何约束的顶点为饱和顶点, 使用保留几何约束的约束方程替换冗余几何约束的约束方程, 求解替换后的几何约束方程组的解S。
步骤6 k=k-1, 若k≠ 0, 转步骤3。
步骤7 若i≠ r, i=i+1, 转步骤2; 否则, 算法终止。
为阐述本文算法的正确性, 给出求解实例如图3所示, 已知点Pi(1≤ i≤ 4)和直线Lj(1≤ j≤ 2), 其中(P1, P2)、(P2, P3)、(P1, P3)和(P1, P4)之间的距离分别为d1、d2、d3和d4, (L1, L2)之间的夹角为α 。
首先, 使用二部图模型表示该造型实例的几何约束系统, 几何基元包括:点Pi(1≤ i≤ 4)和直线Lj(1≤ j≤ 2), 确定Pi的参数为(xi, yi), 确定Lj的参数为(Lj1, Lj2); 若使用描述DisPP(A, B, d)表示点A到点B的距离为d, AngleLL(LA, LB, θ )表示直线LA和LB之间的夹角为θ 和OnLine(A, L)表示点A在直线L上, 则系统几何约束包括:
DisPP(P1, P2, d1), DisPP(P2, P3, d2),
DisPP(P1, P3, d3), DisPP(P1, P4, d4), AngleLL(L1, L2, a), OnLine(P1, L1), OnLine(P2, L1), OnLine(P2, L2),
OnLine(P3, L2)
几何约束系统二部图模型见图4, 其中vb1、vb2和vb3为基本几何约束, 用于固定几何造型; on1, on2, on3和on4分别表示几何约束OnLine(P1, L1), OnLine(P2, L1), OnLine(P2, L2)和OnLine(P3, L2)。
其次, 识别出该几何约束系统的欠、过约束子域, 由算法1获得二部图的最大匹配为:M={(x1, vb1), (y1, vb2), (L11, vb3), (L12, on1), (x2, d1), (y2, on2), (L21, α ), (L22, on3), (x3, d2), (y3, on4), (x4, d4)}。
再由DM分解法分解获得最大匹配, 分解后S+={y4}, S-={d3}, 且进一步可以得到V0={x4, y4, d4}和
同样地, V0包含的顶点不可分解, 不相关的欠约束子域顶点集合族中仅包含
使用DM分解法可以获得该二部图的一个DM分解序列为:V0=φ , V1={x1, vb1}, V2={y1, vb2}, V3={L12, vb3}, V4={L12, on1}, V5={x2, y2, d1, on2}, V6={L21, α }, V7={L22, on3}, V8={x3, y3, d2, on4}, V9={x4, y4, d4, d5},
可以看出, 处理后的几何约束系统为良约束几何约束系统。且由偏序关系能够确定系统求解序列, 其偏序关系如图6所示。
根据偏序关系, 可选择一种适合的几何约束求解方法, 依顺序获得处理后的各参数并生成符合设计意图的几何造型。
本文从几何可解性上识别和处理几何约束系统的欠、过约束子域。采用二部图模型来表达几何约束系统, 改进基于二部图的建模方法。利用DM分解法识别出几何约束系统的欠、过约束子域。由实例证明了新建模方法的优点。提出以结点度为优先级的最优选择算法获得二部图的最大匹配, 证明了该算法的有效性。针对欠约束子域的处理, 添加约束优先级改进算法的几何约束装配机制, 并在装配几何约束的同时判定装配有效; 针对过约束子域的处理, 使用改进的ABC算法来判定过约束的一致性与非一致性, 不同类型的过约束子域采用不同的处理方法, 一致性过约束的处理方法是选择任意的冗余约束并拆卸, 而非一致性过约束的处理方法是输出过约束, 由设计者选择拆卸不符合设计意图的几何约束。最后, 通过实例证明了本文欠、过约束识别及处理算法的可行性和有效性。
The authors have declared that no competing interests exist.
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
|