基于改进遗传算法和模拟退火算法的三维球体装箱方法与流程

文档序号:25874811发布日期:2021-07-16 17:29阅读:410来源:国知局
基于改进遗传算法和模拟退火算法的三维球体装箱方法与流程

1.本发明涉及三维模型显示技术领域,具体领域为一种基于改进遗传算法和模拟退火算法的三维球体装箱方法。


背景技术:

2.在进行3d模型渲染展示时,有时会需要将某一层级的模型进行分解,以此达到更完善的展示效果。传统的模型分解算法通常是对初始零件与中心点位置的差值进行倍增,调整展开后零件的最终位置,以达到分解展示的效果。但是这种简单的位置处理方法在处理分布不规则、零件数量繁多的模型时具有空间利用率低和泛用性差的问题,经常出现分解后零件位置重叠等现象,较大地影响了模型展示的效果,阻碍了这类3d模型展示方案的推广。
3.装箱问题是一种经典的离散组合最优化问题,旨在将给定的确定数量的“箱子”,按一定约束条件填装至指定目标容器中。这与我们要解决的模型零件分解,并对最终位置进行展示的方案有很大相关性,因此将对模型分解后各个零件最终位置的计算,转化为球体空间三维装箱问题进行求解。
4.三维装箱问题的求解由于受到控制因素的影响,常规枚举算法得到精确解需要花费难以计量的时间成本,可行性不高,因此通常使用启发式算法对这类问题进行近似求解。但是即使使用了传统的遗传算法等启发式算法,在应用在网页端的模型展示上时,其所要花费的求解时间仍然不能满足即时性的需求,无法在用户点击后及时反馈结果。


技术实现要素:

5.针对现有技术存在的不足,本发明的目的在于提供一种基于改进遗传算法和模拟退火算法的三维球体装箱方法,先将三维球体空间的装箱问题求解的过程分为两个部分,即球体内接立方体空间装箱,和“立方体

球体”布局展开。对于球体内接立方体空间装箱,使用改进后的遗传算法模块,根据预设的位置编码等处理信息,将待处理模型零件属性进行立方体空间的位置处理,得到中间解。接下来进行“立方体

球体”布局展开过程,使用模拟退火算法,对中间解进行球体空间的展开,调整位置,以达到最终位置信息的求解。
6.为实现上述目的,本发明提供如下技术方案:一种基于改进遗传算法和模拟退火算法的三维球体装箱方法,包括数据预处理阶段、球体内接立方体空间装箱阶段和“立方体

球体”展开阶段,
7.(1)数据预处理阶段步骤为:
8.(1.1)接收待分解的模型信息;
9.(1.2)对接收的模型信息进行编码设计;
10.(2)球体内接立方体空间装箱阶段步骤为:
11.(2.1)根据预处理后的信息生成初始解;
12.(2.2)根据适应度函数,求解当前初始解中初代种群的适应度函数值;
13.(2.3)根据当前的交叉率和变异率,随机选取需要进行交叉和变异的个体并进行操作,以此产生部分新个体;
14.(2.4)根据当前代中各个个体的适应度函数值,使用选择算子选出将进入下一代种群的个体;
15.(2.5)判断得到的后代是否发生进化,并以此为依据调整交叉率和变异率;
16.(2.6)进行终止条件判断,若当前进化的次数计数器达到预设的数值,说明完成了求解,结束操作,若未达到预设进化次数,则返回步骤(2.2),重复接下来的步骤直至终止;
17.(3)“立方体

球体”展开阶段步骤为:
18.(3.1)根据步骤(2)中得到的中间解,并以此进行参数的初始化;
19.(3.2)使用分割法生成模拟退火算法的初始解;
20.(3.3)进入抽样过程,生成符合约束条件的新解,并判定是否接受该解;
21.(3.4)更新温度,判断是否满足终止条件,若达到,则结束求解,输出当前解即为最优解,否则返回步骤(3.3)重新进行抽样操作。
22.优选的,步骤(1)中待分解的模型信息包括待分解模型初始位置坐标与父节点包围盒中心坐标、目标容器球体的中心坐标及半径。
23.优选的,步骤(1.2)中在进行位置编码设计前,首先要根据实际使用需要确定约束条件;
24.其具体位置编码方式为:
25.①
对每个零件个体根据其原本的位置,获得一个三位的位置编码;
26.②
根据将要分解模型的零件数量,沿z轴分为n份;
27.③
从z轴坐标最大值处开始,该分组中每个模型位置编码第一位为0,以此类推,分配至编码n

1;
28.④
之后,对于其中任意一个分组,以中心点建立坐标系,根据其所在象限的位置,以1和

1为区分分配剩余位置编码;
29.⑤
获得对每个零件的位置编码后,根据装载顺序编排为数据串p,p中包含所有的待装箱物体内容,数据串中的每位整数数值pi代表了对应待装箱物体的编号。
30.优选的,步骤(2.1)的具体方式为:
31.①
根据位置编码中的层级编码数据,也即其中第一位数据,将所有待装箱模型根据层级分为n组;
32.②
对于每层组中的物体,再根据编码后两位的象限数据,继续细分为4个象限组,并根据其中物体的体积大小,从小到大的顺序排列,形成待装箱的层级块列表;
33.③
对待装箱容器也按相同模式分为4n个子容器。
34.优选的,步骤(2.3)中交叉操作使用两点交叉,将其中两个个体选取随机的两个标记点k1和k2,交换两个个体中标记点的分布结果,生成新的两个个体;变异操作使用互异变异,随机选中单个个体中两个被分配的零件信息,在满足约束条件的情况下进行位置交换;
35.步骤(2.4)中选择操作中采用轮盘赌选择,将当前种群中的每个个体在一个指定的数值区间片段中进行对应,根据适应度函数值得到的结果大小,为每个个体片段分配等比的长度;随后,算子将在区间范围内生成随机数,根据该随机数处在的位置,获取该区域对应的种群个体,该个体即为被选中的目标个体,循环生成随机数直至抽取的种群个体数
达到设定的需求。
36.优选的,根据步骤(2.5)对控制交叉和变异操作发生的交叉率和变异率进行自适应的调整,其调整方式为建立在对后代是否发生进化的基础上,若新一代个体中适应度函数值最大值大于前代中最大值,则说明发生了进化,则增加交叉率和变异率,以p代表当前交叉率数值,t代表截至最新一代种群未发生进化的种群代数,则交叉率增加遵循函数f(t)=(1

p)e
(

1/t)

37.变异率方面,由于通常情况下变异的发生小于交叉产生的概率,因此变异率在增加时遵循的函数为f(t)/5;反之,若未发生进化,则减小两个概率,以d代表前代最优适应度函数值,则交叉率减少函数为f(t)=d
t
·
p;同理,变异率减少函数为f(t)/3。
38.优选的,步骤(3.1)中参数包括设定的初始温度t、终止温度ts、抽样次数l。
39.优选的,步骤(3.2)的具体方式为:首先,基于立方体与其外切圆的形状特点,将待处理的立方体空间中物体分为六个部分,各个部分分别向各自对应的剩余球体空间方向展开,同时根据球体容器体积和内接立方体的体积,求得每个方向剩余未摆放空间体积;并对其中每个部分中的模型根据体积大小进行从小到大的顺序排列,得到该部分的对应物体序列t;
40.根据取出的部分序列,计算当前以取出物体体积总和是否小于或等于,若是,则继续取出下一个物体,否则结束取出物体的操作;
41.对于已经取出的物体,进行符合约束条件的随机摆放,根据上述逻辑重复对六个部分分布操作,完成后得到初始解。
42.优选的,根据步骤(3.3)在进入抽样过程时,将当前温度t、最优解b和当前解s作为参数,并设置未发生解效果优化的次数p=0;
43.然后根据邻域选择操作,以当前解为基础,生成新解状态s’,并使用适应度函数评估两者差值,适应度函数值即为当前空间利用率数值;
44.上述邻域选择操作方式:首先,设定展开方式更新邻域;对于之前获得的解,随机交换同方向象限中的任意两个物体模型,不同象限内容不互相交换,从而得到方向性保持恒定的新解;其次,设定摆放方向控制邻域;
45.根据得到的抽样结果,进入接受解与否的判断,若得到的适应度函数差值大于0,则代表获得了更优秀的解,则令当前最优解为新解s’,并置零为优化计数器p;
46.反之,则根据预设概率决定是否接受新解,该概率由适应度函数差值和输入的当前温度t决定,其概率为
47.若概率接受,则同上述规则接受当前解,若仍不接受,则放弃新解,更新抽样次数及未优化计数器p;
48.重复当前抽样过程,直至达到预设的最大抽样次数l。
49.优选的,步骤(3.4)中温度更新条件为参考抽样接受次数acc,每次更新值;终止条件即为更新后温度是否达到结束温度,如果达到,结束求解,输出当前解即为最优解,否则返回步骤(3.3)重新进行抽样操作。
50.与现有技术相比,本发明的有益效果是:
51.1)通过将球体三维装箱问题分段解决的方式,充分发挥了两种算法在不同领域的功能优势,实现了求解效率的显著提升,增强了算法的即时性;
52.2)采用了基于原模型零件位置的位置编码设计,并以此为基础确定了求解过程中候选解的约束条件,实现了求解后零件位置与初始位置的对应,能达到直观的展示效果;
53.3)本发明具有很强的通用性和可扩展性,由于使用了遗传算法和模拟退火算法这两种带有随机性的求解算法,在面对各种不同规格和类型的模型时,可以在不调整参数的情况下均得到很好的求解效果,在实际使用中可以被用于各类模型的求解。
附图说明
54.图1为本发明的位置编码设计的示意图;
55.图2为本发明的中使用改进遗传算法求解球体内接立方体空间装箱的流程图;
56.图3为本发明中使用模拟退火算法求解“立方体

球体”展开的流程图;
57.图4为本发明的抽样过程流程图。
具体实施方式
58.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
59.为了提升求解算法的实时性,先将三维球体空间的装箱问题求解的过程分为两个部分,即球体内接立方体空间装箱,和“立方体

球体”布局展开。对于球体内接立方体空间装箱,使用改进后的遗传算法模块,根据预设的位置编码等处理信息,将待处理模型零件属性进行立方体空间的位置处理,得到中间解。接下来进行“立方体

球体”布局展开过程,使用模拟退火算法,对中间解进行球体空间的展开,调整位置,以达到最终位置信息的求解。
60.装箱问题是非常经典的离散组合最优化问题,这类问题通常会从有限或无限数量的备选方案中,依据某种可被人为量化的标准选取最佳方案。这些备选方案中通常有若干互相影响的控制因素,因此最终得到的求解结果也会在很大程度上取决于各个选择中的具体构成。
61.装箱问题实际使用中往往需要满足一些约束条件:被装入的箱子完整,不超出边界;被装入的物体可在空间上被区分,不存在重叠;以及一些基于实际需要设置的约束。本文提及的装箱问题均为其中的三维装箱问题,涉及维度多,求解最为复杂,但实际使用范围也最广泛。常规的求解方法包括枚举法和启发式算法。
62.启发式算法有别于常规数学方法,这是一种以目标直接表现和存在经验为基础的方法,将现实生活中解决问题的思路化用为对复杂问题的求解。在这种方法中,并不是机械性的使用系统的、确定的步骤筛选目标答案,而是通过得到的经验,设定一种选择机制,选择被证明是行之有效的结果。这种方法不同于其他穷举类算法对大量可能性的筛选,大大减少率尝试的次数,对于快速求解有很大的帮助。
63.遗传算法和模拟退火算法时本发明主要使用的两种算法基础,并以此为核心,进行针对性的改良,以应对待求解问题。
64.遗传算法提炼了生物学理论中适者生存、优胜劣汰的进程,将待求解的问题通过预设的编码方式,转化为类似生物学中的“种群”,并引入遗传领域的选择、交叉、变异等操
作,通过进化代数一步步筛选,最终得到最优秀的“个体”,也即要求得的最终解。
65.模拟退火算法的求解过程参考了固体在退火过程中的原理,在这种过程中,会先将固体物质加热,随着温度提升,固体中分子运动速度也会逐渐加快,内能增大。当物体达到预设温度后,则会开始降温,物质内部分子随之减慢速度,排列结构也开始变得有序。而当温度回到平衡点后,内能也将降为设定的最小值。
66.基于上述原理,该算法将优化过程从一个较高的初始“温度”引入,在降低“温度”的过程中,根据概率变化的特性,在一定的解空间中根据预设约束条件,随机寻找可能的局部最优解,最终趋近一个最优状态。
67.装箱问题:对于已有的确定数量的“箱子”(也可是其他物品集),希望求得一种方法,将它们装入一个或多个指定的目标容器中,且满足一定的预设条件,条件通常是尽可能高的利用率。
68.启发式算法:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。常见启发式算法包括蚁群算法、模拟退火算法等。
69.遗传算法:是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。该算法通过数学的方式,利用计算机仿真运算,将问题的求解过程转换成类似生物进化中的染色体基因的交叉、变异等过程。
70.模拟退火算法:模拟退火的原理与金属退火的原理近似:将热力学的理论套用到统计学上,将搜寻空间内每一点想像成空气内的分子;分子的能量,就是它本身的动能;而搜寻空间内的每一点,也像空气分子一样带有“能量”,以表示该点对命题的合适程度。演算法先以搜寻空间内一个任意点作起始:每一步先选择一个“邻居”,然后再计算从现有位置到达“邻居”的概率。
71.本发明提供一种技术方案:一种基于改进遗传算法和模拟退火算法的三维球体装箱方法,对目标问题的求解主要分为两个部分,通过数据预处理将待求解的模型位置转化为可以被两种算法接受的信息,并分别通过遗传算法和模拟退火算法,依次完成球体内接立方体空间装箱,和“立方体

球体”布局展开两个部分,包括以下步骤:
72.(1)数据预处理阶段:
73.(1.1)接收来模型信息,包括待分解模型初始位置坐标与父节点包围盒中心坐标、目标容器球体的中心坐标及半径;
74.(1.2)对获得的模型位置数据进行编码设计。在进行位置编码设计前,首先要根据实际使用需要确定约束条件。由于本发明主要用于对渲染的3d模型进行零件的分解展示,需要考虑分解后零件的相互位置与初始状态有较好的关联性,确保展示效果。基于此设计了如下的位置编码方式:
75.这种编码方式中,每个零件个体根据其原本的位置,获得一个三位的位置编码。如图1,根据将要分解模型的零件数量,沿z轴分为n份。从z轴坐标最大值处开始,该分组中每个模型位置编码第一位为0,以此类推,分配至编码n

1。之后,对于其中任意一个分组,以中心点建立坐标系,根据其所在象限的位置,以1和

1为区分分配剩余位置编码,以图1右侧为例,每个点代表其中一个零件的位置,则其中红色点位置编码为[2,

1,1],橙色点位置编码
为[2,1,

1]。获得对每个零件的位置编码后,根据装载顺序编排为数据串p,p中包含所有的待装箱物体内容,数据串中的每位整数数值pi代表了对应待装箱物体的编号;
[0076]
(2)球体内接立方体空间装箱阶段(如图2):
[0077]
(2.1)根据预处理后的信息,生成初始解;根据位置编码中的层级编码数据,也即其中第一位数据,将所有待装箱模型根据层级分为n组。对于每层组中的物体,再根据编码后两位的象限数据,继续细分为4个象限组,并根据其中物体的体积大小,从小到大的顺序排列,形成待装箱的层级块列表。同时,对待装箱容器也按相同模式分为4n个子容器。
[0078]
以第一个子容器为例,从对应的第一组装箱层级块序列中,挑选适合当前剩余布局空间体积和形状的层级块物体,装填入布局空间中。同时要对剩余的布局空间进行分离,分割出还未填装的子空间,称为剩余子空间,并更新待装箱物体数量并记录。填装完一个层级块后,回到层级块序列,继续搜索可以被装入剩余子空间的层级块,重复装填、分割剩余子空间和记录序列中待装箱物体数量的过程。在当前层级块物体序列数量为零时,会根据层级排列,对同层组中的其他象限的层级块进行搜索,判断是否有可以装填入当前剩余子空间的待装箱物体,若有,则会被加入当前象限的装填中,并从原层级序列中删除;
[0079]
(2.2)根据适应度函数,求得当前初始解中初代种群的适应度函数值。本发明中使用的适应度函数采用当前结果的空间利用率,也即装入空间模型的总体积/立方体容器体积;
[0080]
(2.3)根据当前的交叉率和变异率,随机选取需要进行交叉和变异的个体并进行操作,以此产生部分新个体。其中交叉操作使用两点交叉,将其中两个个体选取随机的两个标记点k1和k2,交换两个个体中标记点的分布结果,生成新的两个个体。而变异操作使用互异变异,随机选中单个个体中两个被分配的零件信息,在满足约束条件的情况下进行位置交换;
[0081]
(2.4)根据当前代中各个个体的适应度函数值,使用选择算子选出将进入下一代种群的个体。选择操作中采用轮盘赌选择,将当前种群中的每个个体在一个指定的数值区间片段中进行对应,根据适应度函数值得到的结果大小,为每个个体片段分配等比的长度。随后,算子将在区间范围内生成随机数,根据该随机数处在的位置,获取该区域对应的种群个体,该个体即为被选中的目标个体,循环生成随机数直至抽取的种群个体数达到设定的需求。另外,轮盘赌选择在使用中存在对优秀解的较大遗漏概率,因此还引入了保存最佳个体的机制,先保留其中最优秀的n个个体,直接进入下一代,对剩下的个体再进行选择;
[0082]
(2.5)判断得到的后代是否发生进化,并以此为依据调整交叉率和变异率。为了提升效率,在保证精度的前提下尽可能减少求解时间,本发明也对控制交叉和变异操作发生的交叉率和变异率进行自适应的调整。
[0083]
这种调整建立在对后代是否发生进化的基础上,若新一代个体中适应度函数值最大值大于前代中最大值,则说明发生了进化,则增加交叉率和变异率,以p代表当前交叉率数值,t代表截至最新一代种群未发生进化的种群代数,则交叉率增加遵循函数f(t)=(1

p)e
(

1/t)
。变异率方面,由于通常情况下变异的发生小于交叉产生的概率,因此变异率在增加时遵循的函数为f(t)/5。反之,如果未发生进化,则减小两个概率,以d代表前代最优适应度函数值,则交叉率减少函数为f(t)=d
t
·
p,同理,变异率减少函数为f(t)/3;
[0084]
(2.6)进行终止条件判断,若当前进化的次数计数器达到预设的数值,说明完成了
求解,结束操作,若未达到预设进化次数,则返回步骤22),重复接下来的步骤直至终止;
[0085]
(3)“立方体

球体”展开阶段(如图3):
[0086]
(3.1)接收步骤2)中得到的中间解,并以此进行参数的初始化。参数包括设定的初始温度t,终止温度ts,抽样次数l等;
[0087]
(3.2)使用分割法生成模拟退火算法的初始解;首先,基于立方体与其外切圆的形状特点,将待处理的立方体空间中物体分为六个部分,各个部分分别向各自对应的剩余球体空间方向展开,同时可以根据球体容器体积和内接立方体的体积,可以求得每个方向剩余未摆放空间体积。并对其中每个部分中的模型根据体积大小进行从小到大的顺序排列,得到该部分的对应物体序列t。以其中任意一个部分序列为例,计算当前以取出物体体积总和是否小于或等于,若是,则继续取出下一个物体,否则结束取出物体的操作。对于已经取出的物体,进行符合约束条件的随机摆放。根据上述逻辑重复对六个部分分布操作,完成后得到初始解;
[0088]
(3.3)进入抽样过程,生成符合约束条件的新解,并判定是否接受该解,在进入抽样过程时,需要将当前温度t,最优解b和当前解s作为参数,并设置未发生解效果优化的次数p=0。接下来,根据邻域选择操作,以当前解为基础,生成新解状态s’,并使用适应度函数评估两者差值,适应度函数值即为当前空间利用率数值。在本发明中,领域选择操作原理如下:首先,设定展开方式更新邻域。对于之前获得的解,随机交换同方向象限中的任意两个物体模型,不同象限内容不互相交换,从而得到方向性保持恒定的新解。其次,设定摆放方向控制邻域。如同遗传算法中对方向的约束,需要控制在随机生成的邻域解时,移动的模型不能发生方位变化。
[0089]
根据得到的抽样结果,进入接受解与否的判断,若得到的适应度函数差值大于0,则代表获得了更优秀的解,则令当前最优解为新解s’,并置零为优化计数器p。反之,则根据预设概率决定是否接受新解,该概率由适应度函数差值和输入的当前温度t决定,其概率为若概率接受,则同上述规则接受当前解,若仍不接受,则放弃新解,更新抽样次数及未优化计数器p。重复当前抽样过程,直至达到预设的最大抽样次数l。抽样过程的流程图见图4。
[0090]
(3.4)更新温度,判断是否满足终止条件。温度更新条件将参考抽样接受次数acc,每次更新值t

=e

acc/(l+acc)
·
t。终止条件即为更新后温度是否达到结束温度,如果达到,结束求解,输出当前解即为最优解,否则返回步骤(3.3)重新进行抽样操作。
[0091]
通过本技术方案,
[0092]
1.通过将完整的球体三维装箱问题,转化为球体内接立方体空间装箱,和“立方体

球体”布局展开两个部分,并分别使用两种求解算法进行分阶段求解,明显提升了求解效率,缩短了得到最优解的时间;
[0093]
2.在球体内接立方体空间装箱求解步骤中,通过设计位置编码方式,控制遗传算法求得中间解中,零件位置与初始位置的对应关系,达到很好的位置效果,提升了展示结果。另外,使用了对交叉率和变异率的自适应变化,有目的性地调整了每代发生交叉和变异的个体数量,达到了改进求解效果的作用;
[0094]
3.在“立方体

球体”布局展开步骤中,通过分割法实现初始解的生成,使用这种改进的方法,有效地对中间解进行进一步调整,方便后续抽样操作的使用。同时,改进了领域
选取的操作逻辑,控制候选解的生成方式,提升效率。
[0095]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1