计算机实施的用于设计用二叉树来建模的工业产品的方法

文档序号:6635287阅读:159来源:国知局
计算机实施的用于设计用二叉树来建模的工业产品的方法
【专利摘要】一种计算机实施的用于设计用二叉树来建模的工业产品的方法,所述二叉树具有代表基本体积的叶子节点、代表将体积进行组合的二元可交换操作的非叶子节点,所述方法包括以下步骤:执行触发添加或移除叶子节点的设计操作;并且理想化所述二叉树,即,通过将弱叶子节点的数量最小化来修改所述二叉树而同时保持该树的最优性,弱叶子节点是这样节点:当其被移除后,所得到的二叉树不再是最优的。
【专利说明】计算机实施的用于设计用二叉树来建模的工业产品的方法

【技术领域】
[0001] 本发明涉及计算机程序和系统领域,并且更具体地涉及例如在缩写为CAD的计算 机辅助设计中由计算机实施的用于设计用二叉树来建模的工业产品的方法。

【背景技术】
[0002] 本发明涉及计算机辅助设计CAD,并且更确切地,涉及声明性建模(也叫功能性建 模)。声明性建模CAD系统包括预定义的历史树以及声明性特征。在CAD系统用户将声明 性特征实例化之后,支持所得到的实体的数据结构为历史树,该历史树包括通过可交换操 作(比如并集或交集)而将基本体积(basic volume)进行组合的许多子树。本发明利用 这种特定情况以在用户要求改变之后提高实体更新性能。
[0003] 给定声明性建模系统的预定义历史树(如图1的左图所示),并且给定该预定义历 史树的输入桶(input bucket),声明性特征在被实例化时,将基本体积分布在于输入桶中。 因此,在实例化了一些特征之后,每个输入桶通过可交换操作(主要是被记为" + "的布尔并 集),将多个基本体积进行组合。目前,如图1的右图所示,基本体积的每个组合都是通过有 序表来实施的,其中,在所述有序表中,根据创建顺序来存储体积。在附图中,根节点被记为 RN,叶子节点被记为LN,以及内部节点被记为IN,并且弧段或边连接了节点。
[0004] 应该注意到声明性实体的更新包括两步。第一步是更新输入桶(基本体积的并 集的表)而第二步是更新预定义历史树,在该预定义历史树中存储有可交换和不可交换操 作。根据工业测试,声明性建模技术的首个实施显示出总体计算时间主要花费在预定义历 史树的更新上(相对于输入桶更新时间)。但是,在本领域中的近期性能改进(通过正在进 行的 Dassault SystSmes 专利 EP2474928、EP2474929 和 EP2474930)减少了预定义历史树 的更新时间,使得:现在基本体积的更新时间是显著的,并因此值得优化。
[0005] 如将在下文中所详述的,本发明对"最优二叉树"的概念进行了深入的利用。这个 概念在对在字典中的有序数据(被称为"记录")进行排序和搜索的领域内是众所周知的。 根据排序和搜索技术,在每次向字典中添加新纪录时都要更新所谓的"二叉搜索树",并且 其结构被设计以便于搜索给定的记录。搜索效率基于二叉树的平衡。为了这个目的,存在 详尽的算法以在每次向字典中添加新纪录时保持该平衡。搜索技术用于数据库管理以及计 算几何。经典的参考书目是D. Knuth所著的书籍:《排序和搜索》。
[0006] 如前所述,预定义历史树的每个输入桶都通过有序表将其基本体积进行组合。当 用户修改该部分的声明性特征时,执行基本体积的修改(删除、尺寸变化、位置变化…)并 且输入桶需要被更新。这导致了大量的更新时间,这是因为更新每个列表与所修改的体积 的年龄成正比。在实体建模领域中,从更新时间的角度来看,有序表并不是最优的数据结构 这一点是众所周知的。
[0007]

【背景技术】的另一个问题如下。声明性建模技术被设计为独立于特征创建顺序而 进行。Dassault SystSmes专利EP1501026保证了所得到的实体的形状独立于特征创建顺 序。但是,输入桶的列表实施使得对较早特征的更新长于对较晚特征的更新,这显然与用户 对声明性行为所应当的样子的认知相违背。
[0008] 搜索技术是要保持二叉搜索树的平衡。二叉搜索树的拓扑展示了一种结构,所述 结构与叶子节点是有序记录这个事实密切相关。例如,典型的要求是左子树的所有节点比 右子树的所有节点低(根据记录排序)。这是平衡算法复杂度的来源。


【发明内容】

[0009] 本发明的目的是要提供一种计算机实现的方法和系统以克服上述问题。
[0010] 根据本发明的一个方面,提出一种计算机实施的用于设计用二叉树来建模的工业 产品的方法,所述二叉树具有代表基本体积的叶子节点、代表将体积进行组合的二元可交 换操作的非叶子节点以及连接节点的弧段,所述方法包括以下步骤:
[0011] 执行触发添加或移除叶子节点的设计操作;并且
[0012] 理想化所述二叉树,即,通过将弱叶子节点的数量最小化来修改二叉树同时保持 该树的最优性,其中,弱叶子节点是这样的叶子节点:当其被移除时,所得到的二叉树不再 是最优的,最优二叉树的任意两个叶子节点(LN)之间的深度差的绝对值为0或1。
[0013] 保持这样的理想树,这允许缩短声明性CAD系统所需要的用于在用户要求改变之 后计算实体的新形状所需的时间。此外,所述声明性CAD系统的响应时间是更加平滑的,这 意味着特征的更新时间并不依赖于其创建日期。也就是说,任意特征的更新时间是基本相 同的,并且,平均来说,比现有技术的状况更短。
[0014] 在CAD行业中,由于相对于通过从零开始创建新模型而花费的20%的设计时间, 80%的设计时间是通过修改而花费的,因此,更快的更新是有价值的改进。通过性能提升所 节约的时间能够缩短新产品的上市时间或者能够被用来研究替代设计。
[0015] 通过缩短总体更新时间以及通过使特征之间的更新时间不均衡变得平滑,本发明 使得声明性CAD系统更适于使用。
[0016] 本发明在比在字典中搜索有序记录更简便的情况下利用了最优二叉树。确实,二 叉树的所有非叶子节点都是相同的可交换操作(主要是布尔并集)并且所有叶子节点都是 基本体积。这大大简化了状况并且本发明算法的效率是这些算法的直接性的结果。因此, 更易于设计、测试和维护计算机程序,并且这些计算机程序也更为可靠。应该注意的是,涉 及二叉树的用于搜索目的的算法在本发明的上下文中不能重复使用。
[0017] 根据一个实施例,当所述设计操作为添加新叶子节点时,所述计算机实施的方法 包括以下步骤:
[0018] -通过从根节点到现有叶子节点遍历所述二叉树来确定节点路径,其中,通过迭代 地选择定义了具有最小叶子节点数量的子树的下一个节点来遍历所述二叉树;并且
[0019] -在结束路径的现有叶子节点处添加所述新叶子节点。
[0020] 从而以与该树的深度成正比的计算开销,添加新叶子节点保存了或增强了树的结 构。
[0021] 根据另一个实施例,当所述设计操作为移除叶子节点时,所述计算机实施的方法 包括以下步骤:
[0022] -确定具有最小深度的叶子节点以作为已经不再是最优二叉树的所述二叉树上的 非最优叶子节点;
[0023] -在从非最优叶子节点到根节点的路径中,确定枢轴节点,所述枢轴节点是其子树 非最优的第一个节点;
[0024] -在所述枢轴节点的所述非最优子树中,确定V子树,所述V子树是有最深深度的、 具有两个叶子节点的子树;并且
[0025] -将所述非最优叶子节点与所述V子树进行交换。
[0026] 从而以与该树的深度成正比的计算开销,来执行在节点移除之后恢复最优性。
[0027] 根据一个实施例,所述计算机实施的方法进一步包括以下步骤:提供预定义树以 用于输入适用于设计特定工业产品的二叉树。
[0028] 从而所述CAD系统以声明性行为作为特征,并且为用户提供高级设计特征。
[0029] 根据一个实施例,对于二叉树的每个节点,其子树的最大深度被存储在存储器中。
[0030] 这可以限制计算。
[0031] 根据一个实施例,对于二叉树的每个节点,其子树的最小深度被存储在存储器中。
[0032] 这可以限制计算。
[0033] 根据一个实施例,对于二叉树的每个节点,其子树的叶子节点的数量被存储在存 储器中。
[0034] 这可以限制计算。
[0035] 也就是说,存储器可以是非瞬时性计算机可读介质。
[0036] 根据一个实施例,所述二叉树是通过将非最优二叉树转换为最优二叉树来获得 的。
[0037] 从而,也可以使用不是用根据本发明的方法所创建的工业产品或物体的二叉树。
[0038] 例如,所述方法进一步包括通过以下来将代表工业产品的任何二叉树理想化的预 备步骤:通过将代表基本体积的叶子节点的线性表转化为理想二叉树,其中,在所述理想二 叉树中,所述叶子节点为所述基本体积。
[0039] 从而,也可以使用不是用根据本发明的方法所创建的工业产品或物体的二叉树。
[0040] 例如,所述方法进一步包括通过以下来将代表工业产品的任何二叉树理想化的预 备步骤:使用根据叶子节点数量的相关范围而预先计算出的理想二叉树的库,,并且读取代 表了二叉树的线性表的基本体积的叶子节点数量,以加载对应于叶子节点数量的预先计算 出的理想二叉树并且将所述线性表的所述基本体积设置到该预先计算出的二叉树的叶子 节点。
[0041] 从而,也可以使用不是用根据本发明的方法所创建的工业产品或物体的二叉树。
[0042] 根据本发明的另一个方面,还提出了一种具有计算机可执行指令的计算机可读介 质,所述计算机可执行指令使得计算机系统执行如上所述的用于设计用二叉树来建模的工 业产品的方法。
[0043] 根据本发明的另一个方面,还提出了一种存储在计算机可读介质上的用于设计用 二叉树来建模的工业产品的计算机程序产品,所述计算机程序产品包括用于使系统采用上 文所述方法的步骤的代码单元。
[0044] 根据本发明的另一个方面,还提出了一种用于设计用二叉树来建模的工业产品的 装置,所述装置包括用于实施上文所述方法的步骤的单元。
[0045] 根据本发明的另一个方面,还提出了用权利要求1-10中的任意一项所述的方法 所设计的工业产品。

【专利附图】

【附图说明】
[0046] 通过研究由非限定性示例的方式所描述的并且由附图所示出的一些实施例,将更 好地理解本发明,在所述附图中:
[0047] 图1示出了根据【背景技术】的树的示例,
[0048] 图2到图30示出了根据本发明的各个方面的计算机实施的方法;
[0049] 图31示出了在其中可以实施本发明的计算机网络或类似的数字处理环境;以及
[0050] 图32示出了计算机的内部结构的示意图。

【具体实施方式】
[0051] 以下附图更详细地说明了本发明的功能。
[0052] 如图2所示,与如图1的右图中所示出的现有有序表相比,本发明通过平衡二叉树 实现了输入桶的基本体积的组合。从而,相对于与有序表的基本体积总数成正比的有序表 更新时间,每个输入桶的更新时间与其基本体积数量的对数成正比。此外,以如下方式来管 理每个平衡二叉树:通过创建和删除基本体积来保持平衡二叉树的形状最优。
[0053] 本发明的说明集中在对一个二叉树的管理。当然,在声明性CAD系统中实施本发 明是要根据预定义历史树的结构来使用必要数量的二叉树,其中每个二叉树都根据本说明 书而进行管理。
[0054] 所使用的图形定义如下。
[0055] 如图3所示,树是非循环图。树包括比弧段的数量正好多一个的节点。图3的最 左图并不是树(注意有很多循环)。图3的最右图是树。
[0056] 如图4所示,二叉树是具备以下特征的树:具有两个弧段的一个节点,其被命名为 根节点RN ;具有三个弧段的多个节点,其被命名为内部节点IN ;以及具有一个弧段的多个 节点,其被命名为叶子节点LN。通常,如图4所示,在附图中将根节点RN置于最低的位置而 将叶子节点LN置于较高的位置。
[0057] 在本申请中,p是叶子节点LN的数量,并被写作p = 2q+r,其中q和r是满足0彡r < 2^的整数。q常被写作q = log2p。从图论(通过将Euler关系应用到二叉树)中所公 知的是,节点的总数以及弧段的数量完全由叶子节点LN的数量所定义。
[0058] 如图5所示,按照惯例,二叉树的弧段从叶子节点LN朝向根节点RN :在图中由上 至下。如图5所示,根节点RN没有输出弧段而具有两个输入弧段,叶子节点LN没有输入弧 段而具有一个输出弧段,内部节点IN具有一个输出弧段和两个输入弧段。在本发明的上下 文中,根据由二叉树所展现的数据流来选择这种传统的取向。这是在附图中隐含的。
[0059] 如图6所示,由节点X所定义的子树是通过裁剪节点X的输出弧段所获得的树。因 此,节点X就成为其子树的根节点。叶子节点可以被视为子树。
[0060] 按照定义,两个同级节点具有相同的输出节点。在图7中,虚线轮廓围绕共享相同 输出节点X的两个同级子树。
[0061] 节点的深度是从所述节点到根节点RN的路径中弧段的数量。树的深度是最大的 叶子节点深度。根节点RN的深度是零。在图8中,节点X的深度是3,叶子节点y的深度是 3,叶子节点z的深度是5,树的深度是5。
[0062] 每个非叶子节点具有两个输入节点,习惯上被命名为"左"和"右"。按照定义,给 定的非叶子节点的左子树是由其左输入节点所定义的子树,类似地,右子树是由其右输入 节点所定义的子树。按照定义,平衡二叉树是这样的:对于每个非叶子节点,其左子树和右 子树之间的深度差的绝对值小于或等于一。图9中最左树并不是平衡的,而最右树是平衡 的(节点被标有其各自的子树深度)。
[0063] 最优二叉树OBT是特殊的平衡二叉树。按照定义,最优二叉树的任意两个叶子节 点LN之间的深度差的绝对值等于零或一。也就是说,如图10所示,对叶子节点LN来说最 多存在两个深度等级。图9中的平衡二叉树不是最优的,而图10中最左平衡二叉树是最优 的。
[0064] 按照定义,如图10的最右图所示,完美二叉树的所有叶子节点LN具有相同的深 度。完美二叉树的叶子节点LN的数量总是2的整数次幂,这意味着p = 2q。因此,具有p =2q+r个叶子节点LN的最优二叉树的任意叶子节点LN的深度为q或q+Ι。以下性质在现 有技术中是公知的:在具有同样叶子节点LN数量的所有二叉树中,最优二叉树以具有最小 深度为特征。
[0065] 在二叉树上所进行的并在本发明中所使用的操作为"添加新的叶子节点"以及"移 除现有叶子节点"。该添加操作是如下进行的。给定现有叶子节点a,其象征性地代表一个 基本体积,并且给定被命名为c的新的基本体积,如图11所示,该添加操作是要用由根节点 +与叶子节点a和c所定义的子树来替换叶子节点a。
[0066] 显然,添加叶子节点可以增加二叉树的深度。
[0067] 移除操作是如下进行的。移除二叉树的叶子节点LN是要用其同级子树的根节点 RN来替换其输出节点。例如,在图12中,移除叶子节点b是要用叶子节点b的同级子树a+c 的根节点+来替换节点b的输出节点+。
[0068] 显然,移除叶子节点LN可以减少二叉树的深度。
[0069]目前为止,所有的定义和性质都是在现有技术中已知的。它们在不同的引文中可 能不同;这就是为什么要确切地回忆它们的原因。据我们所知,接下来的定义是本发明原创 的。
[0070] 现在定义最优二叉树的弱叶子节点WLN的概念。给定最优二叉树,按照定义,弱叶 子节点是这样的叶子节点:当其被移除时,所得到的二叉树不再是最优二叉树。例如,在图 13中,移除叶子节点X并不会破坏最优性。
[0071] 相反地,在图14中,移除节点y实际上破坏了最优性,这使得叶子节点y成为弱叶 子节点WLN。最右树不是最优的,这是因为具有三个叶子节点深度值:2、3和4。
[0072] 弱叶子节点的特征如下。其深度为q,其同级节点为叶子节点LN(而不是子树)并 且在二叉树中的某处存在具有深度为q+Ι的节点。
[0073] 现在来定义理想二叉树IBT。按照定义,理想二叉树IBT是以最少数量的弱叶子 节点WLN为特征的最优二叉树0ΒΤ。如图15所示,并不是所有的最优二叉树OBT都是理想 的。最左二叉树是最优的但不是理想的,而最右二叉树是理想的。它们都具有十个叶子节 点LN,最左二二叉树具有六个弱叶子节点WLN,而最右二叉树具有四个弱叶子节点WLN。弱 叶子节点WLN是白色方块。
[0074] 具有p = 2q+r个叶子节点LN的最优二叉树OBT的弱叶子节点数量0由弱叶子 节点的最小数量Pmin来限定下限并由弱叶子节点的最大数量来限定上限,这意味着 ^01?,其中如果1' = 〇则炉_=〇,如果1'尹〇则^1=脱乂{〇,29-2^,并且其中 如果r = 0则Pmax = 0而如果r关0,则沪max = - 2?Λ·ν(" + 1,2)。符号div (a, b)是整数a 被整数b进行欧几里得除法的商。
[0075] 在本发明的上下文中,叶子节点LN是体积,而非叶子节点是将体积组合在一起的 二元可交换操作。此外,每个非叶子节点存储了从它的两个输入实体的组合所得到的实体 形状。每当用户创建或删除声明性特征时,新叶子节点LN就被添加到二叉树或被从二叉树 上移除。下文描述了通过任意编辑顺序来保持二叉树的最优性和理想性的算法。理想二叉 树的概念有助于在删除叶子节点的情况下减少最优性的失去。减少弱叶子节点WLN的数量 也减少了二叉树失去最优性的概率和系统恢复最优性的概率。
[0076] 给定现有的二叉树,并且给定要添加到所述二叉树的新叶子节点LN,"理想增长算 法"计算出添加新叶子节点LN的最佳现有叶子节点LN。对于每个节点,数据结构保存其子 树的叶子节点LN的数量。也就是说,每个节点X都知道其子树的叶子节点LN的数量,记为 入(X),其中如果X是叶子节点LN,贝U λ (X) =〇。所述算法始于根节点RN并且访问当前节 点的、以最小λ值为特征的输入节点,直到到达叶子节点LN。
[0077]

【权利要求】
1. 一种计算机实施的用于设计用二叉树来建模的工业产品的方法,所述二叉树具有代 表基本体积的叶子节点(LN)、代表将体积进行组合的二元可交换操作的非叶子节点,所述 方法包括W下步骤: 执行触发添加或移除叶子节点(LN)的设计操作;并且 理想化所述二叉树,即,通过将弱叶子节点(WLN)的数量最小化来修改所述二叉树而 同时保持该树的最优性(OBT),弱叶子节点(WLN)是该样的叶子节点(LN):当其被移除后, 所得到的二叉树不再是最优的,最优二叉树的任意两个叶子节点(LN)之间的深度差的绝 对值为零或一。
2. 根据权利要求1所述的计算机实施的方法,当所述设计操作为添加新的叶子节点 (LN)时,所述方法包括W下步骤: 通过从根节点(RN)到现有叶子节点(LN)遍历所述二叉树来确定节点路径,其中,通过 迭代地选择定义了具有最少叶子节点(LN)数量的子树的下一个节点来遍历所述二叉树; 并且 在结束路径的所述现有叶子节点(LN)处添加所述新的叶子节点(LN)。
3. 根据权利要求1所述的计算机实施的方法,当所述设计操作为移除叶子节点(LN) 时,所述方法包括W下步骤: 确定具有最小深度的叶子节点(LN) W作为已经不再是最优二叉树的所述二叉树上的 非最优叶子节点(LN); 在从所述非最优叶子节点(LN)到根节点(RN)的路径中,确定枢轴节点任脚,所述枢轴 节点是其子树非最优的第一个节点; 在所述枢轴(PN)节点的该非最优子树中,确定具有最深深度的V子树,V子树是具有 两个叶子节点(LN)的子树;并且 将所述非最优叶子节点(LN)与所述V子树进行交换。
4. 根据权利要求1-3中的一项所述的计算机实施的方法,其中,所述方法进一步包括 W下步骤;提供预定义树W用于输入适用于设计特定工业产品的二叉树。
5. 根据权利要求1-4中的一项所述的计算机实施的方法,其中,对于所述二叉树的每 个节点,其子树的最大深度被存储在存储器中。
6. 根据权利要求1-5中的一项所述的计算机实施的方法,其中,对于所述二叉树的每 个节点,其子树的最小深度被存储在存储器中。
7. 根据权利要求1-6中的一项所述的计算机实施的方法,其中,对于所述二叉树的每 个节点,其子树的叶子节点(LN)的数量被存储在存储器中。
8. 根据权利要求1-7中的一项所述的计算机实施的方法,其中,所述二叉树是通过将 非最优二叉树转换为最优二叉树(OBT)来获得的。
9. 根据权利要求8所述的计算机实施的方法,进一步包括通过W下来将代表工业产品 的任何二叉树理想化的预备步骤;将代表基本体积的叶子节点(LN)的线性表转化为理想 二叉树(IBT)其中,在所述理想二叉树(IBT)中,所述叶子节点(LN)为所述基本体积。
10. 根据权利要求8所述的计算机实施的方法,进一步包括通过W下来将代表工业产 品的任何二叉树理想化的预备步骤:使用根据叶子节点(LN)数量的相关范围的预先计算 出的理想二叉树的库,并且读取代表了所述二叉树的线性表的基本体积的叶子节点(LN) 数量,W加载对应于所述叶子节点数量的预先计算出的理想二叉树(IBT)并将该预先计算 出的二叉树的叶子节点(LN)设置到所述线性表的所述基本体积。
11. 一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令使得计算 机系统执行根据权利要求1-10中的任意一项所述的用于设计用二叉树来建模的工业产品 的方法。
12. -种存储在计算机可读介质上的计算机程序产品,所述计算机程序产品用于设计 用二叉树来建模的工业产品,所述计算机程序产品包括用于使系统采用根据权利要求1-10 中的任意一项所述的方法中的步骤的代码单元。
13. -种装置,其用于设计用二叉树来建模的工业产品,所述装置包括用于实施根据权 利要求1-10中的任意一项所述的方法中的步骤的单元。
14. 使用根据权利要求1-10中的任意一项所述的方法而设计的工业产品。
【文档编号】G06F17/50GK104462668SQ201410674194
【公开日】2015年3月25日 申请日期:2014年9月10日 优先权日:2013年9月11日
【发明者】J-F·拉莫 申请人:达索系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1