CN111932011B - 基于二元组块树的矩形优化排样方法及装置 - Google Patents
基于二元组块树的矩形优化排样方法及装置 Download PDFInfo
- Publication number
- CN111932011B CN111932011B CN202010796212.0A CN202010796212A CN111932011B CN 111932011 B CN111932011 B CN 111932011B CN 202010796212 A CN202010796212 A CN 202010796212A CN 111932011 B CN111932011 B CN 111932011B
- Authority
- CN
- China
- Prior art keywords
- rectangular
- height
- width
- node
- subset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000005457 optimization Methods 0.000 title claims description 8
- 238000013507 mapping Methods 0.000 claims abstract description 27
- 230000006870 function Effects 0.000 claims description 77
- 102000003676 Glucocorticoid Receptors Human genes 0.000 claims description 53
- 108090000079 Glucocorticoid Receptors Proteins 0.000 claims description 53
- 238000010276 construction Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000007781 pre-processing Methods 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 6
- 230000007547 defect Effects 0.000 abstract description 5
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 239000002994 raw material Substances 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000000059 patterning Methods 0.000 description 2
- 238000002922 simulated annealing Methods 0.000 description 2
- 229910000831 Steel Inorganic materials 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 239000010959 steel Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
- G06Q10/043—Optimisation of two dimensional placement, e.g. cutting of clothes or wood
Landscapes
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Marketing (AREA)
- Game Theory and Decision Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Development Economics (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Editing Of Facsimile Originals (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于二元组块树的矩形件优化排样方法及装置,该方法基于预设映射关系,属于矩形优化排列技术领域,该方法及装置,将目标板材坐标映射为预设分辨率位图坐标;根据矩形件集合和预设组合规则,在预设分辨率位图坐标上构造二元组块树;基于目标板材坐标,获取二元组块树的根节点的实例,确定矩形件集合的排样结果。通过将目标板材坐标映射到预设分辨率位图坐标,克服了现有基于二元组块树的排样技术的不足,减少生成的二元组块数量,避免因为消耗过多计算机内存资源导致的排样失败。
Description
技术领域
本发明属于矩形优化排列技术领域,具体涉及一种基于二元组块树的矩形优化排样方法及装置。
背景技术
矩形件排样优化的问题是指将一系列规格大小不一的矩形件原料在矩形区域中按最优方式进行排布,使零件排放在矩形区域内,各个零件互不重叠,并满足相应的工艺要求,从而尽可能多地排放所需的矩形件,以使材料的利用率达到最高。此类问题广泛地存在现实生产中,如钣金下料、造纸工业、玻璃切割、家具生产、印刷、照片冲印等各行业中。当前社会的发展对于资源的消耗日益增大,特别对于钢材、纸张等工业原料的需求越来越大。提高原材料的利用率对于保护生态环境,提高企业的生产率进而获得更大的经济效益具有重大意义。
通常矩形件排样优化问题属于NP(Non-deterministic Polynomial Complete,多项式复杂程度的非确定性)完全问题,无法在短时间内求得最优解。现有的排样方法通常采用启发式算法,例如遗传算法,模拟退火算法,蚁群算法,粒子群算法等,再结合某种排布规则,例如BL算法,最低水平线算法,分层排布算法等。
但是,在现有的很多矩形件排样应用场景中,存在尺寸很大的矩形件,而且数量多,矩形件尺寸规格多,从而导致启发式算法搜索空间太大,有限时间内无法找到理想目标板材利用率的排样方案的技术问题。而一些基于二元组块树的排样技术虽然在很多场景下获得很好的效果,但在计算机内存资源消耗过量时,存在排样失败的可能。因此,如何解决二元组块树排样技术因在计算机内存资源消耗过量时,存在排样失败的可能的问题,成为现有技术中亟待解决的问题。
发明内容
为了至少解决现有技术存在的上述问题,本发明提供了一种基于二元组块树的矩形优化排样方法及装置,以克服基于二元组块树的排样技术的不足,减少生成的二元组块数量,避免因为消耗过多计算机内存资源导致的排样失败。
本发明提供的技术方案如下:
一方面,一种基于二元组块树的矩形件优化排样方法,包括:
基于预设映射关系,将目标板材坐标映射为预设分辨率位图坐标;
根据矩形件集合和预设组合规则,在所述预设分辨率位图坐标上构造二元组块树;
基于所述目标板材坐标,获取所述二元组块树的根节点的实例,确定所述矩形件集合的排样结果。
可选的,还包括:
基于预设处理方法,对残留矩形件进行处理。
可选的,所述根据矩形件集合和预设组合规则,在所述预设分辨率位图坐标上构造二元组块树,包括:
确定矩形节点Ri=(wi,hi,PSi,GSi),其中wi为矩形件宽度,hi为矩形件高度;PSi为矩形件集合的子集,包含所有宽度高度为(wi,hi)的所有矩形件;GSi为二元组块的子集,包含所有宽度高度等于(wi,hi)的所有二元组块集合;
利用xreduce函数或yreduce函数计算每个矩形件Pi在所述预设分辨率位图坐标上的宽度w’和高度h’;
对于矩形件集合P中的矩形件Pi,遍历矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于Pi的宽度w’和高度h’,若不存在,则创建宽度和高度分别等于Pi的宽度w’和高度h’的矩形节点Ri,并将Ri加入集合R;将Pi加入Ri的PSi子集;遍历矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于Pi的高度h’和宽度w’,如果不存在,则创建宽度和高度分别等于Pi的高度h’和宽度w’的矩形节点Ri,并将Ri加入集合R;将Pi加入Ri的PSi子集;
计算矩形节点集合R与自身的笛卡尔积,获取二元组块集合GCR=R*R*{0,1};
计算所述二元组块集合GCR的子集GC,遍历每个GCR中的二元组块GCRi,如果满足预设条件,且GCRi的宽度和高度均分别小于w’max和h’max,则将GCRi加入子集GC;
对每个GC中的二元组块GCj,查找矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于GCi的宽度和高度,如果不存在,则创建宽度和高度分别等于GCi的宽度和高度的矩形节点Ri,加入集合R;把GCj加入Ri的GSi子集;查找矩形节点集合R中是否存在一个矩形节点Ri,满足Ri宽度和高度分别等于GCi的宽度和高度,如果不存在,则创建宽度和高度分别等于GCi的宽度和高度的矩形节点Ri,加入集合R;把GCj加入Ri的GSi子集;
计算R集合的二元组块森林根节点子集RR,如果矩形节点Ri高度h’i等于h’max或者h’max-h’i小于某个阈值,不存在于任何其他矩形节点Rj的GSj子集中,则把Ri加入RR子集;
在R集合中添加虚根节点Rvr=(w’max,h’max,{},RR),虚根节点的矩形件子集为空集,宽和高设置为极限值;GS子集为RR集合;获取二元组树块。
可选的,所述预设条件,包括:
fg(GCRi)>Tfg,其中,fg(GCRi)为二元组块GCRi利用率,Tfg为组块利用率阈值,GC是GCR的组块利用率大于阈值Tfg的子集;和/或,
lg(GCRi)<Tlg,其中,lg(GCRi)为二元组块GCRi损耗,Tlg为组块损耗率阈值。
可选的,所述基于所述目标板材坐标,获取所述二元组块树的根节点的实例,确定所述矩形件集合的排样结果,包括:
根据所述二元组块树,获取所述二元组块树的根节点的实例ivrk=createinstance(Rvr,0,0,selector),其中,createinstance为递归函数,selector用于挑选矩形件或者二元组块作为排版方案;
调用ivrk=createinstance(Rvr,0,0,selector);
若ivrk等于空值,则说明排样完成;
若ivrk不等于空值,则调用L=getLayout(iik)函数,L是一个排样结果,输出L,并且把L中的所有矩形件设置为不可用,防止被下次createinstance调用再次排入。
可选的,所述createinstance递归函数的调用方法,包括:
基于selector函数选择矩形件或者二元组块;
若所述selector函数选中一个矩形件,则createinstance递归函数直接构造并返回一个实例节点(Ri,offsetX,offsetY,indexP,-1,wp,hp,null,null),其中,wp和hp分别为矩形件的宽和高;
若所述selector函数选中二元组块Gj=GSi[indexG],则递归计算ig1和ig2,若Gj的两个矩形节点为Rj1和Rj2,
如果Gj水平拼接,则:
ig1=createinstance(Rj1,offsetX,offsetY,selector);
ig2=createinstance(Rj2,offsetX+wj1,offsetY,selector),其中wj1为ig1的宽度;
如果Gj垂直拼接,则:
ig1=createinstance(Rj1,offsetX,offsetY,selector);
ig2=createinstance(Rj2,offsetX,offsetY+hj1,selector),其中hj1为ig1的高度;
构造并返回实例节点(Ri,offsetX,offsetY,wi,hi,-1,indexP,ig1,ig2);其中,wi,hi是Ig1和Ig2在所述目标板材坐标下合并之后的宽度和高度;
如果Gj水平拼接,则:
wi=width(lg1)+width(lg2);
hi=max(height(lg1),height(lg2));
如果Gj垂直拼接,则:
wi=max(width(lg1),width(lg2));
hi=height(lg1)+height(lg2);
其中,width为从Ijk=(Rj,offsetX,offsetY,wj,hj,indexP,indexG,Igj1,Igj2)中提取宽度的函数,即返回wj;height为从Ijk=(Rj,offsetX,offsetY,wj,hj,indexP,indexG,Igj1,Igj2)中提取高度的函数,即返回hj;max为从两个数值中取最大值的函数;
如果ig1或者ig2的计算结果为空值,或者offsetX+wi>wmax,或者offsetY+hi>hmax,此时把Gj标记为不可用,再次调用selector函数选择新的Gj,计算ig1和ig2;如果本节点Ri的GSi子集中所有二元组块都被标记为不可用,则返回空值,表示本节点Ri生成实例失败。
可选的,所述函数getLayout(iik)用于遍历二叉树的叶子节点并返回矩形件位置集合;所述函数getLayout(iik)的调用方法,包括:
判断iik是否是叶子节点,如果indexPk小于0则iik不是叶子节点;
若iik为叶子节点,则返回集合{(Pk,offsetXk,offsetYk)},其中Pk=PSi[indexP],PSi是Ri的矩形件子集;
若iik不是叶子节点,则递归调用getLayout,返回getLayout(igk1)U getLayout(igk2)。
可选的,所述selector函数选择矩形件或者二元组块的实现方法,包括:
以目标板材利用率最高的方式选择矩形件或者二元组块;或,
选择最大尺寸的矩形件,或者包含最大矩形件的二元组块。
可选的,所述以目标板材利用率最高的方式选择矩形件或者二元组块,包括:
若节点Ri的矩形件子集PSi包含有可用的矩形件,则选择其中的任意一个可用矩形件;若节点Ri的矩形件子集PSi是空集或者没有任何可用的矩形件,则返回GSi集合中组块利用率最高的可用组块,或,返回GSi集合中实际排样利用率最高的可用组块,进行预处理,计算所有组块的实际最大可能排样利用率,时间复杂度小于O(n*m),其中n是组块集合中所有组块的数目,m是可用矩形件的数目;
所述选择最大尺寸的矩形件,或者包含最大矩形件的二元组块,包括:
若节点Ri的矩形件子集PSi包含有可用的矩形件,则选择其中的任意一个可用矩形件;若节点Ri的矩形件子集PSi是空集或者没有任何可用的矩形件,则返回GSi集合中的可用组块Gk,Gk直接或者间接包含的最大矩形件。
又一方面,一种基于二元组块树的矩形优化排样装置,包括:映射模块、构建模块和排样模块;
所述映射模块,用于基于预设映射关系,将目标板材坐标映射为预设分辨率位图坐标;
所述构建模块,用于根据矩形件集合和预设组合规则,在所述预设分辨率位图坐标上构造二元组块树;
所述排样模块,用于获基于所述目标板材坐标,获取所述二元组块树的根节点的实例,确定所述矩形件集合的排样结果。
本发明的有益效果为:
本发明实施例提供的基于二元组块树的矩形件优化排样方法及装置,该方法基于预设映射关系,将目标板材坐标映射为预设分辨率位图坐标;根据矩形件集合和预设组合规则,在预设分辨率位图坐标上构造二元组块树;基于目标板材坐标,获取二元组块树的根节点的实例,确定矩形件集合的排样结果。通过将目标板材坐标映射到预设分辨率位图坐标,克服了现有基于二元组块树的排样技术的不足,减少生成的二元组块数量,避免因为消耗过多计算机内存资源导致的排样失败。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于二元组块树的矩形优化排样方法流程示意图;
图2本发明实施例提供的二元组块构建示意图;
图3为本发明实施例提供的一种基于二元组块树的矩形优化排样装置结构示意图;
图4为本发明实施例提供的一种基于二元组块树的矩形优化排样设备结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
为了至少解决本发明中提出的技术问题,本发明实施例提供一种基于二元组块树的矩形优化排样方法。
图1为本发明实施例提供的一种基于二元组块树的矩形优化排样方法流程示意图,请参阅图1,本发明实施例提供的方法,可以包括以下步骤:
S11、基于预设映射关系,将目标板材坐标映射为预设分辨率位图坐标。
例如,在本实施例中,如果把矩形件和二元组块在目标板材上的排列看做是一张图片,看到的二元组块太多是因为图片分辨率太高,如果把图片分辨率降低,那么会有大量的尺寸相似的二元组块看起来完全一样,实现相似二元组块和矩形件的合并。
在本发明实施例中,将即将使用的目标板材定义为目标板材,预设分辨率可以为低分辨率,在本发明实施例中,以低分辨率为例,进行说明。目标板材的最大尺寸(wmax,hmax)映射到一个低分辨率位图(w’max,h’max),其中w’max和h’max均为整数,xreduce和yreduce分别为x,y坐标的映射函数,把目标板材坐标映射为低分辨率位图坐标。
其中round是取整函数。
S12、根据矩形件集合和预设组合规则,在预设分辨率位图坐标上构造二元组块树。
在本实施例中,定义两个矩形的组合为二元组块2-groups,被组合的两个矩形的尺寸可以相同,也可以不同。被组合的矩形可以是待排矩形件,也可以是另一个二元组块。例如,图2本发明实施例提供的二元组块构建示意图,参阅图2,二元组块G,可以由矩形A和矩形B组成,矩形A和矩形B的组合过程可以为水平,也可以为垂直。任何两个矩形都可以组合成为一个二元组块,但无条件组合会导致组合爆炸,为了减少组块数目必须对组合进行一些限制。矩形A和矩形B拼接成为二元组块G(A,B,0),定义二元组块利用率fg(G)=(area(A)+area(B))/area(G),其中area是面积函数,area(A)表示矩形A的面积。如果二元组块的利用率fg太低,则这个二元组块是没有价值的,应该丢弃。另外也可以用组块损耗lg(G)=area(G)-area(A)-area(B)来表示组块的质量。参见图2,两个矩形B和A的拼接有水平和垂直两种方式,使用三元组(A,B,0)表示一个组块的结构,最后一个元素取值0和1,0表示水平排列的拼接方式,1表示垂直排列的拼接方式。
任意二元组块可以和矩形件或者另一个二元组块再次组合,得到一个新的更大的二元组块,组合过程可以持续进行下去,直到得到的二元组块的宽或者高超过最大版面限制。这个过程可以得到二元组块森林。
二元组块树/森林的节点为矩形节点,每个矩形节点有一个宽度和高度,一个矩形件集合和二元组块集合;其中矩形件集合中的所有矩形件的宽度和高度都等于矩形节点的宽度和高度,同样,二元组块集合中的每个二元组块的宽度和高度都等于矩形节点的宽度和高度。
第i个矩形节点Ri=(wi,hi,PSi,GSi),其中wi是矩形宽度,hi是矩形高度,PSi是一个矩形件的子集,包含所有宽度高度为(wi,hi)的所有矩形件;GSi是一个二元组块的子集,包含所有宽度高度等于(wi,hi)的所有二元组块集合。
定义二元组块G=(Rl,Rr,d)是一个三元组,一个二元组块包含两个矩形节点,分别为Rl和Rr,d取值0和1,0表示水平排列的拼接方式,1表示垂直排列的拼接方式。
可选的,根据矩形件集合和预设组合规则,在预设分辨率位图坐标上构造二元组块树,包括:输入矩形件集合P,最大版面宽度wmax和最大版面高度hmax,低分辨率位图宽度w’max和高度h’max,组块利用率阈值Tfg,二元组块树的构造函数construct2Groups如下:
第一步:确定矩形节点Ri=(wi,hi,PSi,GSi),其中wi为矩形件宽度,hi为矩形件高度;PSi为矩形件集合的子集,包含所有宽度高度为(wi,hi)的所有矩形件;GSi为二元组块的子集,包含所有宽度高度等于(wi,hi)的所有二元组块集合。
利用xreduce函数或yreduce函数计算每个矩形件Pi在预设分辨率位图坐标上的宽度w’和高度h’。
第二步:对于矩形件集合P中的矩形件Pi,遍历矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于Pi的宽度w’和高度h’,若不存在,则创建宽度和高度分别等于Pi的宽度w’和高度h’的矩形节点Ri,并将Ri加入集合R;将Pi加入Ri的PSi子集;遍历矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于Pi的高度h’和宽度w’(即,Ri宽度和高度等于Pi的高度和宽度(旋转90度)),如果不存在,则创建宽度和高度分别等于Pi的高度h’和宽度w’的矩形节点Ri,并将Ri加入集合R;将Pi加入Ri的PSi子集。
第三步:计算矩形节点集合R与自身的笛卡尔积,获取二元组块集合GCR=R*R*{0,1};其中,笛卡尔积是现有技术中本领域技术人员所公知内容,其计算过程此处不做赘述。
第四步:计算二元组块集合GCR的子集GC,遍历每个GCR中的二元组块GCRi,如果满足预设条件,且GCRi的宽度和高度均分别小于w’max和h’max,则将GCRi加入子集GC。
例如,预设条件,包括:fg(GCRi)>Tfg,其中,fg(GCRi)为二元组块GCRi利用率,Tfg为组块利用率阈值,GC是GCR的组块利用率大于阈值Tfg的子集;和/或,lg(GCRi)<Tlg,其中,lg(GCRi)为二元组块GCRi损耗,Tlg为组块损耗率阈值。用户可以根据组块损耗阈值Tlg或组块利用率阈值Tfg来控制组块的质量。例如,要求lg(GCRi)<Tlg,也可以联合使用Tlg和Tfg,或者对于面积小的组块使用Tlg控制,面积大的组块使用Tfg控制。此处不做具体限定,用户可以根据实际情况进行限定。
第五步:对每个GC中的二元组块GCj,查找矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于GCi的宽度和高度,如果不存在,则创建宽度和高度分别等于GCi的宽度和高度的矩形节点Ri,加入集合R;把GCj加入Ri的GSi子集。查找矩形节点集合R中是否存在一个矩形节点Ri,满足Ri宽度和高度分别等于GCi的宽度和高度,如果不存在,则创建宽度和高度分别等于GCi的宽度和高度的矩形节点Ri,加入集合R;把GCj加入Ri的GSi子集。如果此过程中R集合发生变化则回到第三步,否则R集合构造完成。
第六步:计算R集合的二元组块森林根节点子集RR,如果矩形节点Ri高度hi等于hmax或者hmax-hi小于预设阈值,不存在于任何其他矩形节点Rj的GSj子集中,则把Ri加入RR子集。其中预设阈值可应根据需求进行设定,此处不做具体限定。得到的RR子集是一个二元组块森林,为本算法计算结果。
第七步:在R集合中添加虚根节点Rvr=(w’max,h’max,{},RR),虚根节点的矩形件子集为空集,宽和高设置为极限值;GS子集为RR集合;获取二元组树块。在本实施例中,为了便于处理,构造二元组块树,添加了虚根,如果不构造虚根,生成的就是一个二元组块森林,构造虚根之后就成为树,对于后续步骤,树的处理比森林更加便捷,易于描述。
S13、基于目标板材坐标,获取二元组块树的根节点的实例,确定矩形件集合的排样结果。
在本实施例中,下面提到的PSi和GSi集合均为有序集合,其每个元素不能重复,每个元素对应一个确定的序号(下标),可以通过序号取得对应元素。在程序设计阶段,有序集合应该用数组来实现。
对于任何一个矩形节点Ri=(w’i,h’i,PSi,GSi)对应多个排样方案,矩形实例节点iik=(Ri,offsetX,offsetY,wi,hi,indexP,indexG,ig1,ig2)表示某个矩形节点Ri在目标板材的左上角坐标为(offsetX,offsetY),宽度高度等于wi,hi的矩形区域上的一个具体的排样方案。其中,indexP表示选中的矩形件在Ri的PSi子集中的下标,如果没有选中矩形件则设置为-1,indexG表示选中的二元组块在Ri的GSi子集中的下标,如果没有选中二元组块则设置为-1;因为必须要为矩形节点选中一个矩形件或者二元组块,所以indexP和indexG必须有一个等于-1,另一个大于等于0;如果选中某个二元组块Gj=GSi[indexG],则ig1和ig2必须不为空值,分别为Gj的两个矩形节点的矩形实例节点。
可选的,基于目标板材坐标,获取二元组块树的根节点的实例,确定矩形件集合的排样结果,包括:
步骤一:根据二元组块树,获取二元组块树的根节点的实例ivrk=createinstance(Rvr,0,0,selector),其中,createinstance为递归函数,selector用于挑选矩形件或者二元组块作为排版方案;调用ivrk=createinstance(Rvr,0,0,selector)。
在本实施例中,由于虚根节点Rvr的任何实例ivrk都是一个最终的排样结果,因此只要找到生成任意矩形节点Ri的实例的方法,就可以解决矩形件排样问题。可以通过一个递归函数createinstance求解矩形节点Ri的实例:递归函数createinstance(Ri,offsetX,offsetY,selector)的参数Ri为矩形节点,offsetX和offsetY是排版区域左上角在目标板材上的坐标,selector是一个函数,用来为Ri挑选一个矩形件或者一个二元组块作为其排版方案。
步骤二:若ivrk等于空值,则说明排样完成;
步骤三:若ivrk不等于空值,则调用L=getLayout(iik)函数,L是一个排样结果,输出L,并且把L中的所有矩形件设置为不可用,防止被下次createinstance调用再次排入。
可选的,createinstance递归函数的调用方法,包括:
步骤一:基于selector函数选择矩形件或者二元组块;
步骤二:若selector函数选中一个矩形件,则createinstance递归函数直接构造并返回一个实例节点(Ri,offsetX,offsetY,indexP,-1,wp,hp,null,null),wp和hp分别为矩形件的宽和高;
步骤三:若selector函数选中二元组块Gj=GSi[indexG],则递归计算ig1和ig2,若Gj的两个矩形节点为Rj1和Rj2,分以下两种情况,进行计算:
(1)如果Gj水平拼接,则:
ig1=createinstance(Rj1,offsetX,offsetY,selector);
ig2=createinstance(Rj2,offsetX+wj1,offsetY,selector),其中wj1为
ig1的宽度;
(2)如果Gj垂直拼接,则:
ig1=createinstance(Rj1,offsetX,offsetY,selector);
ig2=createinstance(Rj2,offsetX,offsetY+hj1,selector),其中hj1为
ig1的高度;
步骤四:构造并返回实例节点(Ri,offsetX,offsetY,wi,hi,-1,indexP,ig1,ig2);其中,wi,hi是是Ig1和Ig2在板材坐标下合并之后的宽度和高度。
如果Gj水平拼接,则:
wi=width(lg1)+width(lg2);
hi=max(height(lg1),height(lg2));
如果Gj垂直拼接则:
wi=max(width(lg1),width(lg2));
hi=height(lg1)+height(lg2);
其中,width为从Ijk=(Rj,offsetX,offsetY,wj,hj,indexP,indexG,Igj1,Igj2)中提取宽度的函数,就是返回wj。height为从Ijk=(Rj,offsetX,offsetY,wj,hj,indexP,indexG,Igj1,Igj2)中提取高度的函数,就是返回hj。max为从两个数值中取最大值的函数。
如果ig1或者ig2的计算结果为空值,或者offsetX+wi>wmax,或者offsetY+hi>hmax,此时把Gj标记为不可用,再次调用selector函数选择新的Gj,计算ig1和ig2;如果本节点Ri的GSi子集中所有二元组块都被标记为不可用,则返回空值,表示本节点Ri生成实例失败。
可选的,selector函数选择矩形件或者二元组块的实现方法,包括:
以目标板材利用率最高的方式选择矩形件或者二元组块;或,
选择最大尺寸的矩形件,或者包含最大矩形件的二元组块。
可选的,以目标板材利用率最高的方式选择矩形件或者二元组块,包括:
若节点Ri的矩形件子集PSi包含有可用的矩形件,则选择其中的任意一个可用矩形件;若节点Ri的矩形件子集PSi是空集或者没有任何可用的矩形件,则返回GSi集合中组块利用率最高的可用组块,或,返回GSi集合中实际排样利用率最高的可用组块,进行预处理,计算所有组块的实际最大可能排样利用率,时间复杂度小于O(n*m),其中n是组块集合中所有组块的数目,m是可用矩形件的数目。
在本实施例中,使用这种selector函数可以在每次调用createinstance函数获得当时状态下最优的排样结果。但一般不可能一次调用createinstance函数就可以安排所有的矩形件,需要多次调用createinstance函数,每次调用得到最优的结果,最后的结果不一定是最优的。
选择最大尺寸的矩形件,或者包含最大矩形件的二元组块,包括:
若节点Ri的矩形件子集PSi包含有可用的矩形件,则选择其中的任意一个可用矩形件;若节点Ri的矩形件子集PSi是空集或者没有任何可用的矩形件,则返回GSi集合中的可用组块Gk,Gk直接或者间接包含的最大矩形件
在本实施例中,这种形式的selector优先选择包含大矩形件的方案,在照片排样问题中表现最好,因为照片排样问题中大矩形件特别多且不容易安排,而小矩形件不论先排还是后排,不论和什么其他矩形件在一起排利用率都会很高,所以先排大件后排小件容易获得最好的整体利用率。
一般的,矩形实例节点iik=(Ri,offsetX,offsetY,wi,hi,indexP,indexG,ig1,ig2)是一棵树的节点,其中ig1,ig2是iik节点的子节点。
最终排样可以简单调用ivrk=createinstance(Rvr,0,0,selector)实现,其中Rvr是虚根节点。矩形实例ivrk是一个二叉树,其叶子节点iik=(Ri,offsetXk,offsetYk,indexPk,indexGk,igk1,igk2)表示一个矩形件Pk被安排在目标板材上(offsetXk,offsetYk)坐标点上,其中Pk=PSi[indexP],PSi是Ri的矩形件子集。只需要一个简单的二叉树遍历方法就可以获得ivrk内部所有矩形件及其在目标板材上的位置。递归函数getLayout(iik)遍历二叉树的叶子节点并返回矩形件位置集合,函数getLayout(iik)的调用方法,包括:
判断iik是否是叶子节点,如果indexPk小于0则iik不是叶子节点;
若iik为叶子节点,则返回集合{(Pk,offsetXk,offsetYk)},其中Pk=PSi[indexP],PSi是Ri的矩形件子集;
若iik不是叶子节点,则递归调用getLayout,返回getLayout(igk1)U getLayout(igk2)。
可选的,还包括:基于预设处理方法,对残留矩形件进行处理。
例如,上述技术方案中,通常不能把所有矩形件都全部排入而剩余少量矩形件未排,此时,可以用人工排样或者用传统方法进行排样来处理这些剩余矩形件,例如剩余矩形法和模拟退火算法的结合等。
本发明实施例提供的基于二元组块树的矩形件优化排样方法,基于预设映射关系,将目标板材坐标映射为预设分辨率位图坐标;根据矩形件集合和预设组合规则,在预设分辨率位图坐标上构造二元组块树;基于目标板材坐标,获取二元组块树的根节点的实例,确定矩形件集合的排样结果。通过将目标板材坐标映射到预设分辨率位图坐标,克服了现有基于二元组块树的排样技术的不足,减少生成的二元组块数量,避免因为消耗过多计算机内存资源导致的排样失败。
基于一个总的发明构思,本发明实施例还提供一种基于二元组块树的矩形优化排样装置。
图3为本发明实施例提供的一种基于二元组块树的矩形优化排样装置结构示意图,请参阅图3,本发明实施例提供的装置,可以包括以下结构:映射模块31、构建模块32和排样模块33;
映射模块31,用于基于预设映射关系,将目标板材坐标映射为预设分辨率位图坐标;
构建模块32,用于根据矩形件集合和预设组合规则,在预设分辨率位图坐标上构造二元组块树;
排样模块33,用于获基于目标板材坐标,获取二元组块树的根节点的实例,确定矩形件集合的排样结果。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本发明实施例提供的基于二元组块树的矩形件优化排样装置,基于预设映射关系,将目标板材坐标映射为预设分辨率位图坐标;根据矩形件集合和预设组合规则,在预设分辨率位图坐标上构造二元组块树;基于目标板材坐标,获取二元组块树的根节点的实例,确定矩形件集合的排样结果。通过将目标板材坐标映射到预设分辨率位图坐标,克服了现有基于二元组块树的排样技术的不足,减少生成的二元组块数量,避免因为消耗过多计算机内存资源导致的排样失败。
基于一个总的发明构思,本发明实施例还提供一种基于二元组块树的矩形优化排样设备。
图4为本发明实施例提供的一种基于二元组块树的矩形优化排样设备结构示意图,请参阅图4,本发明实施例提供的一种虚拟电厂内部多元主体的竞价设备,包括:处理器41,以及与处理器相连接的存储器42。
存储器42用于存储计算机程序,计算机程序至少用于上述任一实施例记载的基于二元组块树的矩形优化排样方法;
处理器41用于调用并执行存储器中的计算机程序。以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (5)
1.一种基于二元组块树的矩形件优化排样方法,其特征在于,包括:
基于预设映射关系,将目标板材坐标映射为预设分辨率位图坐标;
根据矩形件集合和预设组合规则,在所述预设分辨率位图坐标上构造二元组块树,包括:
确定矩形节点Ri=(wi,hi,PSi,GSi),其中wi为矩形件宽度,hi为矩形件高度;PSi为矩形件集合的子集,包含所有宽度高度为(wi,hi)的所有矩形件;GSi为二元组块的子集,包含所有宽度高度等于(wi,hi)的所有二元组块集合;
利用xreduce函数或yreduce函数计算每个矩形件Pi在所述预设分辨率位图坐标上的宽度w’和高度h’;
对于矩形件集合P中的矩形件Pi,遍历矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于Pi的宽度w’和高度h’,若不存在,则创建宽度和高度分别等于Pi的宽度w’和高度h’的矩形节点Ri,并将Ri加入集合R;将Pi加入Ri的PSi子集;遍历矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于Pi的高度h’和宽度w’,如果不存在,则创建宽度和高度分别等于Pi的高度h’和宽度w’的矩形节点Ri,并将Ri加入集合R;将Pi加入Ri的PSi子集;
计算矩形节点集合R与自身的笛卡尔积,获取二元组块集合GCR=R*R* {0,1};
计算所述二元组块集合GCR的子集GC,遍历每个GCR中的二元组块GCRi,如果满足预设条件,且GCRi的宽度和高度均分别小于w’max和h’max,则将GCRi加入子集GC;
对每个GC中的二元组块GCj,查找矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于GCi的宽度和高度,如果不存在,则创建宽度和高度分别等于GCi的宽度和高度的矩形节点Ri,加入集合R;把GCj加入Ri的GSi子集;查找矩形节点集合R中是否存在一个矩形节点Ri,满足Ri宽度和高度分别等于GCi的宽度和高度,如果不存在,则创建宽度和高度分别等于GCi的宽度和高度的矩形节点Ri,加入集合R;把GCj加入Ri的GSi子集;
计算R集合的二元组块森林根节点子集RR,如果矩形节点Ri高度h’i等于h’max或者h’max-h’i小于某个阈值,不存在于任何其他矩形节点Rj的GSj子集中,则把Ri加入RR子集;
在R集合中添加虚根节点Rvr=(w’max,h’max,{},RR),虚根节点的矩形件子集为空集,宽和高设置为极限值;GS子集为RR集合;获取二元组树块;
其中,所述预设条件,包括:
fg(GCRi)>Tfg,其中,fg(GCRi)为二元组块GCRi利用率,Tfg为组块利用率阈值,GC是GCR的组块利用率大于阈值Tfg的子集;和/或,
lg(GCRi)<Tlg,其中,lg(GCRi)为二元组块GCRi损耗,Tlg为组块损耗率阈值;
基于所述目标板材坐标,获取所述二元组块树的根节点的实例,确定所述矩形件集合的排样结果,包括:
根据所述二元组块树,获取所述二元组块树的根节点的实例ivrk=createinstance(Rvr,0,0,selector),其中,createinstance为递归函数,selector用于挑选矩形件或者二元组块作为排版方案;
调用ivrk=createinstance(Rvr,0,0,selector);
若ivrk等于空值,则说明排样完成;
若ivrk不等于空值,则调用L=getLayout(iik)函数,L是一个排样结果,输出L,并且把L中的所有矩形件设置为不可用,防止被下次createinstance调用再次排入;
其中,所述createinstance递归函数的调用方法,包括:
基于selector函数选择矩形件或者二元组块;
若所述selector函数选中一个矩形件,则createinstance递归函数直接构造并返回一个实例节点(Ri,offsetX,offsetY,indexP,-1,wp,hp,null,null),其中,wp和hp分别为矩形件的宽和高;
若所述selector函数选中二元组块Gj=GSi[indexG],则递归计算ig1和ig2,若Gj的两个矩形节点为Rj1和Rj2,
如果Gj水平拼接,则:
ig1=createinstance(Rj1,offsetX,offsetY,selector);
ig2=createinstance(Rj2,offsetX+wj1,offsetY,selector),其中wj1为ig1的宽度;
如果Gj垂直拼接,则:
ig1=createinstance(Rj1,offsetX,offsetY,selector);
ig2=createinstance(Rj2,offsetX,offsetY+hj1,selector),其中hj1为ig1的高度;
构造并返回实例节点(Ri,offsetX,offsetY,wi,hi,-1,indexP,ig1,ig2);其中,wi,hi是Ig1和Ig2在所述目标板材坐标下合并之后的宽度和高度;
如果Gj水平拼接,则:
wi=width(lg1)+width(lg2);
hi=max(height(lg1),height(lg2));
如果Gj垂直拼接,则:
wi=max(width(lg1),width(lg2));
hi=height(lg1)+height(lg2);
其中,width为从Ijk=(Rj,offsetX,offsetY,wj,hj,indexP,indexG,Igj1,Igj2)中提取宽度的函数,即返回wj;height为从Ijk=(Rj,offsetX,offsetY,wj,hj,indexP,indexG,Igj1,Igj2)中提取高度的函数,即返回hj;max为从两个数值中取最大值的函数;
如果ig1或者ig2的计算结果为空值,或者offsetX+wi>wmax,或者offsetY+hi>hmax,此时把Gj标记为不可用,再次调用selector函数选择新的Gj,计算ig1和ig2;如果本节点Ri的GSi子集中所有二元组块都被标记为不可用,则返回空值,表示本节点Ri生成实例失败;
所述函数getLayout(iik)用于遍历二叉树的叶子节点并返回矩形件位置集合;所述函数getLayout(iik)的调用方法,包括:
判断iik是否是叶子节点,如果indexPk小于0则iik不是叶子节点;
若iik为叶子节点,则返回集合{(Pk,offsetXk,offsetYk)},其中Pk=PSi[indexP],PSi是Ri的矩形件子集;
若iik不是叶子节点,则递归调用getLayout,返回getLayout(igk1) U getLayout(igk2)。
2.根据权利要求1所述的方法,其特征在于,还包括:
基于预设处理方法,对残留矩形件进行处理。
3.根据权利要求1所述的方法,其特征在于,所述selector函数选择矩形件或者二元组块的实现方法,包括:
以目标板材利用率最高的方式选择矩形件或者二元组块;或,
选择最大尺寸的矩形件,或者包含最大矩形件的二元组块。
4.根据权利要求3所述的方法,其特征在于,所述以目标板材利用率最高的方式选择矩形件或者二元组块,包括:
若节点Ri的矩形件子集PSi包含有可用的矩形件,则选择其中的任意一个可用矩形件;若节点Ri的矩形件子集PSi是空集或者没有任何可用的矩形件,则返回GSi集合中组块利用率最高的可用组块,或,返回GSi集合中实际排样利用率最高的可用组块,进行预处理,计算所有组块的实际最大可能排样利用率,时间复杂度小于O(n*m),其中n是组块集合中所有组块的数目,m是可用矩形件的数目;
所述选择最大尺寸的矩形件,或者包含最大矩形件的二元组块,包括:
若节点Ri的矩形件子集PSi包含有可用的矩形件,则选择其中的任意一个可用矩形件;若节点Ri的矩形件子集PSi是空集或者没有任何可用的矩形件,则返回GSi集合中的可用组块Gk,Gk直接或者间接包含的最大矩形件。
5.一种基于二元组块树的矩形优化排样装置,其特征在于,包括:映射模块、构建模块和排样模块;
所述映射模块,用于基于预设映射关系,将目标板材坐标映射为预设分辨率位图坐标;
所述构建模块,用于根据矩形件集合和预设组合规则,在所述预设分辨率位图坐标上构造二元组块树;具体用于确定矩形节点Ri=(wi,hi,PSi,GSi),其中wi为矩形件宽度,hi为矩形件高度;PSi为矩形件集合的子集,包含所有宽度高度为(wi,hi)的所有矩形件;GSi为二元组块的子集,包含所有宽度高度等于(wi,hi)的所有二元组块集合;
利用xreduce函数或yreduce函数计算每个矩形件Pi在所述预设分辨率位图坐标上的宽度w’和高度h’;
对于矩形件集合P中的矩形件Pi,遍历矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于Pi的宽度w’和高度h’,若不存在,则创建宽度和高度分别等于Pi的宽度w’和高度h’的矩形节点Ri,并将Ri加入集合R;将Pi加入Ri的PSi子集;遍历矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于Pi的高度h’和宽度w’,如果不存在,则创建宽度和高度分别等于Pi的高度h’和宽度w’的矩形节点Ri,并将Ri加入集合R;将Pi加入Ri的PSi子集;
计算矩形节点集合R与自身的笛卡尔积,获取二元组块集合GCR=R*R* {0,1};
计算所述二元组块集合GCR的子集GC,遍历每个GCR中的二元组块GCRi,如果满足预设条件,且GCRi的宽度和高度均分别小于w’max和h’max,则将GCRi加入子集GC;
对每个GC中的二元组块GCj,查找矩形节点集合R中是否存在矩形节点Ri,满足Ri的宽度和高度分别等于GCi的宽度和高度,如果不存在,则创建宽度和高度分别等于GCi的宽度和高度的矩形节点Ri,加入集合R;把GCj加入Ri的GSi子集;查找矩形节点集合R中是否存在一个矩形节点Ri,满足Ri宽度和高度分别等于GCi的宽度和高度,如果不存在,则创建宽度和高度分别等于GCi的宽度和高度的矩形节点Ri,加入集合R;把GCj加入Ri的GSi子集;
计算R集合的二元组块森林根节点子集RR,如果矩形节点Ri高度h’i等于h’max或者h’max-h’i小于某个阈值,不存在于任何其他矩形节点Rj的GSj子集中,则把Ri加入RR子集;
在R集合中添加虚根节点Rvr=(w’max,h’max,{},RR),虚根节点的矩形件子集为空集,宽和高设置为极限值;GS子集为RR集合;获取二元组树块;
其中,所述预设条件,包括:
fg(GCRi)>Tfg,其中,fg(GCRi)为二元组块GCRi利用率,Tfg为组块利用率阈值,GC是GCR的组块利用率大于阈值Tfg的子集;和/或,
lg(GCRi)<Tlg,其中,lg(GCRi)为二元组块GCRi损耗,Tlg为组块损耗率阈值;
所述排样模块,用于获基于所述目标板材坐标,获取所述二元组块树的根节点的实例,确定所述矩形件集合的排样结果;具体用于根据所述二元组块树,获取所述二元组块树的根节点的实例ivrk=createinstance(Rvr,0,0,selector),其中,createinstance为递归函数,selector用于挑选矩形件或者二元组块作为排版方案;
调用ivrk=createinstance(Rvr,0,0,selector);
若ivrk等于空值,则说明排样完成;
若ivrk不等于空值,则调用L=getLayout(iik)函数,L是一个排样结果,输出L,并且把L中的所有矩形件设置为不可用,防止被下次createinstance调用再次排入;
其中,所述createinstance递归函数的调用方法,包括:
基于selector函数选择矩形件或者二元组块;
若所述selector函数选中一个矩形件,则createinstance递归函数直接构造并返回一个实例节点(Ri,offsetX,offsetY,indexP,-1,wp,hp,null,null),其中,wp和hp分别为矩形件的宽和高;
若所述selector函数选中二元组块Gj=GSi[indexG],则递归计算ig1和ig2,若Gj的两个矩形节点为Rj1和Rj2,
如果Gj水平拼接,则:
ig1=createinstance(Rj1,offsetX,offsetY,selector);
ig2=createinstance(Rj2,offsetX+wj1,offsetY,selector),其中wj1为ig1的宽度;
如果Gj垂直拼接,则:
ig1=createinstance(Rj1,offsetX,offsetY,selector);
ig2=createinstance(Rj2,offsetX,offsetY+hj1,selector),其中hj1为ig1的高度;
构造并返回实例节点(Ri,offsetX,offsetY,wi,hi,-1,indexP,ig1,ig2);其中,wi,hi是Ig1和Ig2在所述目标板材坐标下合并之后的宽度和高度;
如果Gj水平拼接,则:
wi=width(lg1)+width(lg2);
hi=max(height(lg1),height(lg2));
如果Gj垂直拼接,则:
wi=max(width(lg1),width(lg2));
hi=height(lg1)+height(lg2);
其中,width为从Ijk=(Rj,offsetX,offsetY,wj,hj,indexP,indexG,Igj1,Igj2)中提取宽度的函数,即返回wj;height为从Ijk=(Rj,offsetX,offsetY,wj,hj,indexP,indexG,Igj1,Igj2)中提取高度的函数,即返回hj;max为从两个数值中取最大值的函数;
如果ig1或者ig2的计算结果为空值,或者offsetX+wi>wmax,或者offsetY+hi>hmax,此时把Gj标记为不可用,再次调用selector函数选择新的Gj,计算ig1和ig2;如果本节点Ri的GSi子集中所有二元组块都被标记为不可用,则返回空值,表示本节点Ri生成实例失败;
所述函数getLayout(iik)用于遍历二叉树的叶子节点并返回矩形件位置集合;所述函数getLayout(iik)的调用方法,包括:
判断iik是否是叶子节点,如果indexPk小于0则iik不是叶子节点;
若iik为叶子节点,则返回集合{(Pk,offsetXk,offsetYk)},其中Pk=PSi[indexP],PSi是Ri的矩形件子集;
若iik不是叶子节点,则递归调用getLayout,返回getLayout(igk1) U getLayout(igk2)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010796212.0A CN111932011B (zh) | 2020-08-10 | 2020-08-10 | 基于二元组块树的矩形优化排样方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010796212.0A CN111932011B (zh) | 2020-08-10 | 2020-08-10 | 基于二元组块树的矩形优化排样方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111932011A CN111932011A (zh) | 2020-11-13 |
CN111932011B true CN111932011B (zh) | 2024-05-24 |
Family
ID=73307807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010796212.0A Active CN111932011B (zh) | 2020-08-10 | 2020-08-10 | 基于二元组块树的矩形优化排样方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111932011B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114417444A (zh) * | 2022-03-29 | 2022-04-29 | 北京百度网讯科技有限公司 | 一种排样方案的确定方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461549A (zh) * | 2014-12-15 | 2015-03-25 | 北京国双科技有限公司 | 图形界面的排列显示方法及装置 |
CN105515054A (zh) * | 2016-02-16 | 2016-04-20 | 南京南瑞继保电气有限公司 | 一种基于隐枚举法的电力系统优化切机方法 |
CN108829695A (zh) * | 2018-04-17 | 2018-11-16 | 上海交通大学 | 路网上的弹性聚合最近邻查询G-max方法 |
CN109710542A (zh) * | 2018-12-28 | 2019-05-03 | 北京像素软件科技股份有限公司 | 一种满n叉树构建方法及装置 |
CN109959885A (zh) * | 2017-12-26 | 2019-07-02 | 深圳先进技术研究院 | 一种基于二元决策树的成像方法及其装置和储存介质 |
KR102128037B1 (ko) * | 2019-03-18 | 2020-06-29 | 주식회사 로그프레소 | 다계층 메모리 구조에 최적화된 데이터 인덱스 방법 및 그 방법에 의해 인덱스된 데이터의 검색 방법 |
-
2020
- 2020-08-10 CN CN202010796212.0A patent/CN111932011B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461549A (zh) * | 2014-12-15 | 2015-03-25 | 北京国双科技有限公司 | 图形界面的排列显示方法及装置 |
CN105515054A (zh) * | 2016-02-16 | 2016-04-20 | 南京南瑞继保电气有限公司 | 一种基于隐枚举法的电力系统优化切机方法 |
CN109959885A (zh) * | 2017-12-26 | 2019-07-02 | 深圳先进技术研究院 | 一种基于二元决策树的成像方法及其装置和储存介质 |
CN108829695A (zh) * | 2018-04-17 | 2018-11-16 | 上海交通大学 | 路网上的弹性聚合最近邻查询G-max方法 |
CN109710542A (zh) * | 2018-12-28 | 2019-05-03 | 北京像素软件科技股份有限公司 | 一种满n叉树构建方法及装置 |
KR102128037B1 (ko) * | 2019-03-18 | 2020-06-29 | 주식회사 로그프레소 | 다계층 메모리 구조에 최적화된 데이터 인덱스 방법 및 그 방법에 의해 인덱스된 데이터의 검색 방법 |
Also Published As
Publication number | Publication date |
---|---|
CN111932011A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11438212B2 (en) | Fault root cause analysis method and apparatus | |
CN111932009B (zh) | 矩形优化排样方法及装置 | |
CN111932011B (zh) | 基于二元组块树的矩形优化排样方法及装置 | |
CN103793555A (zh) | 用于木工板件零件的智能排样优化方法 | |
CN105677683A (zh) | 批量数据查询方法和装置 | |
CN114494650B (zh) | 一种分布式非结构网格跨处理器面对接方法及系统 | |
CN111985459B (zh) | 表格图像校正方法、装置、电子设备和存储介质 | |
CN115018197B (zh) | 考虑余料利用的二次套料优化方法及系统 | |
CN111626250B (zh) | 文本图像的分行方法、装置、计算机设备及可读存储介质 | |
Luo et al. | A hybrid algorithm combining genetic algorithm and variable neighborhood search for process sequencing optimization of large-size problem | |
CN114491200A (zh) | 基于图神经网络的异源兴趣点匹配方法和装置 | |
CN116244333A (zh) | 一种基于代价因子校准的数据库查询性能预测方法及系统 | |
CN116227209A (zh) | 一种点云数据多维线性差值方法、终端设备及存储介质 | |
CN110853120B (zh) | 基于分割绘图法的网络布局方法、系统及介质 | |
CN105513008A (zh) | 一种图像处理方法及装置 | |
CN109359224B (zh) | 一种材质的数据处理方法、装置、电子设备及存储介质 | |
CN114417444A (zh) | 一种排样方案的确定方法、装置及电子设备 | |
CN115346005A (zh) | 基于嵌套包围盒概念用于物面网格的数据结构构建方法 | |
CN109727184A (zh) | 一种图形处理器三维剪裁电路 | |
CN115544699A (zh) | 基于遗传算法的海缆布局优化方法、装置、设备及介质 | |
CN114694159A (zh) | 一种工程图bom识别方法、装置、电子设备和存储介质 | |
CN112052359B (zh) | 一种基于mno树的实时点云编辑方法 | |
CN117034465A (zh) | 船体结构节点的生成方法、装置、电子设备及存储介质 | |
Dezulian et al. | Phylogenetic closure operations and homoplasy-free evolution | |
CN116091710B (zh) | 一种基于三维重建的自适应空间切分方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |