排样算法综述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
排样算法综述
1距形排料算法 (2)
1.1.底层几何算法 (2)
1.2.排样策略 (2)
1.3.优化算法 (4)
2不规则形状排样算法概述 (5)
2.1不规则形状矩形拟合排样算法 (5)
2.2移动碰撞排样算法 (5)
2.3临界多边形在不规则形状排样问题中的应用 (6)
3异形件排样的零件定位策略 (9)
3.1基于NFP 最低点的定位算法 (9)
3.2基于重心NFP 的不规则形状零件定位算法 (10)
3.3排样顺序算法 (10)
4基于智能优化的二维排样算法 (11)
4.1 智能优化算法在排样问题中的应用 (11)
4.2二维排样问题的模拟退火算法求解 (12)
4.3二维排样问题的遗传算法求解 (14)
1距形排料算法
距形排料相对于多边形排料来说要简单许多,但是再简单的东西想要做到完美都是件很难的事。
这里提供的算法比目前国内的公开研究文献中99.9%的来说都要高效,我指的是最终效率。
当然每个环节都要仔细考虑,细节非常重要。
我还是按照三个层次来描述。
1.1.底层几何算法
对于矩形来说,计算矩形之间的距离和重叠基本上没什么可说的,因为它太简单。
这里我还是提几个可能被忽略的地方。
1.尽可能的用空间换取时间的办法让实际运算时的时间更短。
2.尽量用内联函数。
1.2.排样策略
基本上我把它归为左底策略,对于矩形来说,左底策略还是相当有效的,当然这只是基本策略,还有很多细节需要明确。
如下图:
假设R1和R2是已经按照某种规则放置进容器矩形的两个材料矩形。
现在有一个新的待放置的矩形R. 定义A为矩形R的左下角。
对于每一个已经放置进容器的矩形,比如R1,对于矩形R来说新的可能的放置点是(我们先不考虑R2的存在):
1. R靠紧容器矩形的左上角排放
2. R靠紧容器矩形的左下角排放
3. A点放置在R1的左上角
4. A点放置在R1的右下角
5. R的左上角对齐R1的右上角排放
显然,在上图中,2位置由于有R1存在不可行,3位置由于已经放置R2也不可行。
所以可以选择的位置是1,4,5. 同理分析R2的加入后R可能增加的新的排放位置,分别是:
6. A点对齐R2的左上角
7.A点对齐R2的右下角
8. R的左上角对齐R2的右上角(图中所示正是这个位置)
好了,现在我们大概知道了有哪些可行的排放点。
知道了这些点都是按照什么规则得来的。
那么怎么在这些可行点中选择呢,就是说选择的标准是什么呢?如下图。
上图中内圈的两个矩形是紧靠排放的,外圈的分别是两个矩形缩放一定比例后的矩形。
阴影部分就是外圈的两个矩形的重叠面积,它基本上表示了两个矩
形的紧密程度。
当然,对于靠紧容器矩形的也要和容器矩形做这种运算,而且应当赋予更重的权值,因为靠边更能利用空间。
最后你要累加这些重叠面积,它表示的就是这个位置的排放的总体紧密程度。
对于图一所示的情形,位置1应该是比较好的排放点。
这取决于计算结果,还有一个因素就是排放点越靠近左边越好,这样,我们可以用排放优先值=重叠面积/排放点X坐标. 我们选择值最大的.
还有一个需要注意的是排放的位置要做左-上/下的滑动,而且可能是多次反复的。
这样会使矩形更靠近边和角。
所以矩形的放置点一定要有一个间隙(可以很小,比如0.00001),这样矩形才能滑动而没有阻碍。
1.3.优化算法
这基本上是调序的组合优化算法,你可以用任何一种智能优化算法来做. 但是我不推荐用遗传算法,遗传算法对于种群大小的设定取决于你的规模,当你的容器里要放置上千个矩形的时候,种群会变的很大,遗传和变异操作都会影响整个速度,而且你还要尝试各种遗传和变异因子,够你折腾的。
另外一个关键点是:你需要做一个启发式的搜索。
就是说你要对这些待排放的矩形排序,规则有很多种,比如面积大小排序,周长,宽度,高度等。
你需要组织一下搜索的策略。
实际情况中是这样的,用户需要在很短时间内找到一个较优解,然后在后续时间内慢慢搜索更好的解。
所以可以这样做:
1.先在几种排序规则内做局部搜索,这样有可能在较短时间内找到较优解。
2.然后在几种规则内用最好的那一个展开做全局搜索。
当然这个全局搜索不是绝对的,其大概的过程都是这样的局部搜索--》在规定时间内未改进则跳出局部搜索--》进入另外一个局部搜索--》......
2不规则形状排样算法概述
现有不规则形状排样算法主要包括矩形拟合方法,移动碰撞法以及NFP。
2.1不规则形状矩形拟合排样算法
矩形拟合方法以 Jakobs的工作为代表,其主要原理是首先将不规则零件拟合为矩形,然后利用较为成熟的矩形排样方法进行排样。
由于不规则形状可能和矩形形状之间相差很大,拟合为矩形后和矩形的边界存在很大空隙,因此这种方法的排样效果显然存在较大的材料浪费,如下图所示:
图2-1矩形拟合排样算法造成较低的材料利用率
在矩形拟合排样算法的基础上,可以采用“压缩”过程对排样方案进行进一步的优化,即在矩形排样结束后,对每个零件进行试探性的移动测试,以“压缩”未利用空间。
但是压缩算法可能导致其他零件的排样位置发生连锁变化。
E.Hopper指出该方法无法保证“挤压”算法的有效性。
单个零件的移动将可能导致多个零件的排样位置发生变化,形成连锁反应,其计算时间较长,另外零件的移动方向也很难确定。
2.2移动碰撞排样算法
碰撞排样算法目前应用比较广泛,其思想是将零件不停往下移动,直到发生碰撞无法移动为止。
该算法模拟了物体的坠落和滑动过程,然而该方法也存在明显的缺陷,其缺陷主要包括:1)零件无法移动到被遮挡的空腔内部;2)零件无法移动到全局最低位置。
如下图所示:
图2-2碰撞排样方法无法绕过障碍且无法找到最低定位点
对现有异形件排样算法的分析可知,现有算法无法全面搜索可行的定位位置,因此无法找到零件的较优定位位置,这直接影响到了排样效果。
2.3临界多边形在不规则形状排样问题中的应用
临界多边形(No Fit Polygon,NFP)是不规则形状排样问题中的关键技术。
其重要性主要在于 NFP 提供了零件和板材之间的所有靠接位置,从而为零件定位策略选择较优排样点提供了选择集。
NFP 包括两种类型:外靠接 NFP 和内靠接 NFP,外靠接 NFP定义为两多边形在外边界靠接滑动时参考点所形成的轨迹,内靠接 NFP 定义为小多边形沿大多边形内边界靠接滑动时参考点所形成的轨迹。
在二维排样问题中,零件必须排样在大板材内部,且单个零件排样时为了提高材料利用率,通常将零件放置于和板材内边界靠接处的位置,即零件和板材内边界的接触点(排样点)为内靠接位置,因此其排样点可以从内靠接 NFP 上得到。
不规则排样中内靠接 NFP 的定义如下:
异形件排样中内靠接临界多边形的定义:给定板材和零件的多边形,先将板材多边形固定,然后用零件多边形做不旋转的刚体运动绕板材多边形内部环形运动一周,运动过程中零件保持在板材内部并和板材内边界接触,则零件上的某个
参考点(可取为最低点)在运动过程中所形成的轨迹就构成了零件相对于板材的临界多边形。
如下图所示:
图2.3异形件排样中内靠接 NFP 的定义
临界多边形给出了所有靠接位置的信息,在求取临界多边形之后,单个零件的定位问题就可以简化为基于临界多边形的定位选优过程,因此 NFP 是不规则排样问题中零件定位算法的基础,准确快速的 NFP 算法对于整个异形件排样算法来说具有非常重要的意义。
在得到内靠接 NFP 后,可以利用基于 NFP 的零件定位算法从 NFP 上选择得到较优排样点,然后将零件排样至该较优排样点(移动零件使零件参考点和排样点重合)即可完成单个零件的排样过程。
零件排样后会形成新的剩余板材边界,因此每当排样完一个零件之后,需要重剩余板材中减去已排零件区域以得到新的剩余板材边界轮廓。
对新形成的边界轮廓和每个待排样的零件之间重新计算内靠接 NFP 并重复以上排样过程既可以完成对所有零件的排样。
基于 NFP 的不规则排样算法如下所示:
算法2.1.基于 NFP 的不规则零件排样算法(给定零件排样次序)
基于 NFP 的不规则形状排样过程如下图所示:
图2-4基于 NFP 的不规则形状排样过程
3异形件排样的零件定位策略
零件定位策略的含义是指按照一定原则将待排零件排样到板材上,例如在二维矩形排样中,可以按照“最低最左”原则将待排零件放置到板材的空白处,即将零件不停地往下和往左移动,直到碰到板材边界或已排零件的边界而无法再移动为止。
对于不规则形状排样问题,由于其NFP 几何形状上的不规则性,在NFP 上往往无法直接找到最低最左点,因此需要寻找一种更合适的零件排样规则。
已有研究人员提出了不规则排样的零件定位策略,例如最小外包凸多边形面积原则、边界重合度原则等,但仍存在复杂度过高和排样质量较低等问题,因此需要研究更合适的放置规则。
由于NFP 给出了多边形之间所有靠接位置,因此在求得NFP 之后,零件定位问题就转化为在NFP 上寻找一个合适排样位置的问题,即零件的定位策略的目的就是从NFP 上选择一个定位点,零件定位于此点后有助于提高整体排样质量。
3.1基于NFP 最低点的定位算法
在大部分不规则排样过程中,往往将已排零件的总高度作为排样质量的标准,零件占用的总高度越低,说明排样的效果越好。
因此求解NFP 后,最简单的定位算法是选择NFP 上的最低点作为定位点,并使得零件最高点位置为最低。
该方法复杂度和实现过程简单,然而该方法只考虑了高度最小化原则,而没有综合考虑零件的面积分布对整体排样效果的影响,从而不能进一步优化零件的布局。
如下图3-1所示:
图3-1最低点定位算法在顶点Y 坐标相同时,无法区分定位效果
图3-1中,图(a)和图(b)的最高点Y 坐标相同,因此按照最低点定位算法,两者排样效果评价指标(最高点Y 坐标大小)相同,因为无法区分出两者排样效果的优劣。
然而显然在图(b)中,零件面积集中在下方,剩余板材区域可用面积更大,更有利于减少空间的浪费和后续零件的排样。
因此在零件的定位过程中,不仅要考虑零件本身的最高点高度问题,还要考虑零件排样后面积的分布是否有利于提高剩余板材面积,减少空间浪费,并形成有利于后续排样过程的剩余板材边界。
为了解决最低高度定位算法的缺陷,需要采用其他指标来对定位位置进行评
价。
3.2基于重心NFP 的不规则形状零件定位算法
该定位算法的思想是将零件放置到具有最低重心的位置。
“最低重心”定位策略的出发点是在不发生多边形干涉的情况下,将排样零件的重心尽量降低,从而降低排样方案的整体重心位置,提高排样面积分布密度,最终达到提高材料利用率和降低整体排样高度的目的。
另外一方面,最低重心定位算法可使得排样后的边界尽量保持水平,以助于后续零件的排样。
3.3排样顺序算法
通过重心NFP,可以得到单个零件的最低排样重心位置和相应角度,从而可以确定零件的排样位置。
然而对于多个零件来说,排样顺序是决定最终排样质量的另外一个主要影响因素,因此需要研究合适的排样顺序算法。
常用的排样顺序算法包括启发式算法和智能优化算法。
启发式算法通常根据当前排样条件和先验知识来决定下一个排样零件的序号,例如选择排样后排样高度最低或浪费面积最小的零件为下一个排样零件。
启发式算法速度较快,适用于对计算速度要求较高的应用场合。
另外启发式算法的结算结果也可以作为智能优化算法的初始解,从而减少优化算法的搜索时间。
常用的排样顺序算法主要包括:
1) 按零件面积降序
根据零件面积的大小从大到小排序,并按此顺序依次排样到剩余板材区域中,该方法类似于矩形排样中的宽度降序方法,计算速度较快,排序算法复杂度
为O(nlog2n)。
其主要缺陷是:面积较大的零件排样在一起容易产生孔洞,而
面积较小的零件由于在后面排样,造成小面积零件无法填充到孔洞中,如下
图3-2 所示:
图3-2 面积降序法造成已排零件形成的孔洞无法填充
2) 适应度优先原则启发式排样算法
其基本原理是根据动态选择下一个适应度最高的零件排样。
其适应度计算公式为:
上式中f 1、f 2、f 3 表示对 3 个指标的量化和规范函数,将函数值规范并量化到
[0-100] 区间内,k 1、k 2、k 3 分别为三个指标在评价函数中所占权重。
4基于智能优化的二维排样算法
采用遗传算法(GA)、模拟退火算法(SA)等智能优化算法来解决二维排样问题。
所采用的智能优化算法同时适用于矩形件排样和不规则形状排样。
排样问题是一个典型的组合优化问题,因此特别适合用模拟退火、遗传算法、禁忌搜索等智能优化算法来求解。
本章在排样算法中主要引入了模拟退火算法和遗传算法。
在模拟退火算法方面:首先阐述了模拟退火优化算法的基本原理、技术特点及算法过程,然后根据排样问题的特点设计退火算法的实现过程及关键参数,如排样方案的编码及解码、领域函数、初温的设定、降温速率设置等内容,最后运用退火算法进行了实例计算,和现有排样算法最好的计算结果进行了对比。
在遗传算法方面:主要内容包括个体的编码和解码、适应度的计算、个体复制过程的设计、交叉变异过程的设计以及交叉变异概率的设置等内容,最后进行了实例计算和对比。
4.1 智能优化算法在排样问题中的应用
二维排样问题是一种典型的组合优化问题,零件排样方案可视为多个零件定位变量的组合,定位一个零件可用最低最左点坐标(x i ,y i )和旋转角度θi 来确定,即零件P i 的定位变量可表示为(,,)i i i x y θ,多个零件的定位变量组合为
111222((,,),(,,),...,(,,),n n n x y x y x y θθθ因此排样方案可视为多个变量的组合优化问题。
二维排样问题的解空间包含 3n 个变量,且约束条件较少,无法采用传统的确定性算法如线形规划等方法进行求解。
因此发展出了零件定位算法来将二维排样问题转化为一维排样问题,采用零件定位算法以后,排样问题的求解只和排样顺序有关,即其解可表示为排样序号的组合,即12{,,...,}n p p p ,其中p i 表示第 i 个排样零件的序号,因而二维排样问题转化成了一个典型的组合优化问题。
组合优化问题可视为多个离散变量的组合优化,其问题可表示为:令123{,,,...,}n s s s s 为所有状态构成的解空间,C(s i ) 为状态s i 对应的目标函数值,要求寻找最优解s * ,
使得*()min(){ 1...}i C s s i n ==。
其典型问题包括旅行商问题(Traveling salesman problem,TSP)、加工调度问题(scheduling problem)、背包问题以及装箱等问题。
优化算法可视为一种搜索过程,按照一定的规则来得到问题的解。
按照求解机制来分析,优化算法可以分为以下几大类:
1) 确定性算法:如线形规划、动态规划、整数规划和分支定界法等传统运筹
学优化方法。
该类算法可得到较为精确的解,但是其计算时间较长,一般仅适用于小规模问题的求解,无法适用于实际工程问题。
2) 简单搜索算法:包括爬山法、负梯度法(最速下降法)、随机搜索算法等。
该类算法计算速度较快,但是容易陷入局部较优解。
3) 机器学习算法:主要包括神经网络等机器学习算法,通过建立机器学习系
统并加以训练得到一个能自动搜索求解问题的系统。
4) 智能搜索算法:也被称为“内启发式算法”(meta-heuristic algorithm),主
要包括模拟退火算法、遗传算法、禁忌搜索算法、蚁群搜索算法等等。
智能搜索算法根据指导性原则来自动调整搜索方向,因此也被称为智能搜索算法。
作为一种典型的组合优化问题,二维排样问题特别适合于用组合优化的算法来求解。
爬山法计算速度快,适合于规模较大且计算时间要求比较高的排样问题。
然而爬山法容易陷入局部最优解,无法得到高质量的排样方案。
因此本文引入智能优化算法对排样问题进行求解。
与爬山法等简单搜索算法相比,智能优化算法具有很高的全局最优解搜索能力,且无需建立和具体问题相关的的启发式规则。
按照智能优化算法求解问题时,只需建立起对问题的描述和解的适应度评价函数即可让系统自动搜索到较优解。
智能优化算法数十年来得到了长足的发展,已成功地运用于各种实际问题的求解过程中。
智能优化算法主要包括模拟退火、遗传算法、禁忌搜索、蚁群搜索等算法。
每年学术界均有大量和智能搜索算法相关的文献发表,其中模拟退火算法和遗传算法经过多年的发展,目前已较为成熟且在许多领域得到了广泛而成功的应用。
4.2二维排样问题的模拟退火算法求解
从二维不规则零件的定位策略分析可知:采用零件定位策略以后,在给定排样次序的情况下,每个零件在排样时其定位位置只和排样次序有关,因此排样方案可以直接以零件排样次序的序号组合来表示。
和模拟退火算法类似,GA 排样方案同样可以采用类似于 TSP 问题解的定义方法确定排样方案的表示形式,即其解可表示为排样序号的组合,即12{,,...,}n p p p ,其中p i 表示第 i 个排样零件的序号。
例如 3 个零件的排样方案可表示为:(1,2,3)、(1,3,2)、(2,1,3)、(2,3,1)、(3,1,2)、(3,2,1)共 6 个排样方案。
对于 N 个零件则一共有 N!个排样方案。
领域函数的定义
在模拟退火算法中,最重要的一个函数就是获取当前解的领域解(领域函数),该函数确定了模拟退火算法的搜索策略和方向。
领域函数的目的是尽可能保证产生的候选解遍布全部搜索空间,通常领域函数由两部分组成,即产生候选解的方式和候选解产生的概率分布。
对于排样过程来过,由于其排样方案表示为排样序号的组合,因此产生候选解的方式可以设定为以下方式:
1) 2 个零件序号交换
设排样方案表示为12{,,...,}n p p p ,其中p i 表示第 i 个排样零件的序号。
通过交换其中的两个序号来得到一个新的排样方案。
例如从排样方案(1,2,3,4,5,6)中通过交换第2 和第 5 个排样零件的序号,可以得到新的排
样方案(1,5,3,4,2,6)。
该方法可在原有排样方案上得到2n C 个新的排样方案,
在此基础上利用随机选择方法可得到给定数量的新方案。
2) 多个零件序号交换对排样方案中的零件编号进行分组,然后交换各组的序
号,例如排样方案(1,2,3,4,5,6,7,8,9)经过编组后成为((1,2,3),(4,5,6),(7,8,9)),将第 1 组和第 3 组进行交换位置得到新的排样方案为((7,8,9),(4,5,6), (1,2,3))。
新方案相对于原来方案的变化较大,适用于大规模的组合问题求解。
3) 序号插入法
将排样方案中的某个零件往前或往后移动插入到其他位置,形成新的排样方案,例如:将排样方案(1,2,3,4,5,6,7,8,9)中的第 7 个零件编号插入到第 3 位位置,原第 3 位之后和第 7 位之间的零件编号依次往后移动一位,最后得到的新排样方案为(1,2,7,3,4,5,6,8,9)。
该方法相对其他方法其变化范围较小,适用于规模较小的组合优化问题。
算法 4-1. 二维排样问题的模拟退火算法
4.3二维排样问题的遗传算法求解
从二维不规则零件的定位策略分析可知:采用零件定位策略以后,在给定排样次序的情况下,每个零件在排样时其定位位置只和排样次序有关,因此排样方案可以直接以零件排样次序的序号组合来表示。
和模拟退火算法类似,GA 排样方案同样可以采用类似于 TSP 问题解的定义方法确定排样方案的表示形式,即其解可表示为排样序号的组合,即12{,,...,}n p p p ,其中p i 表示第 i 个排样零件的序号。
例如 3 个零件的排样方案可表示为:(1,2,3)、(1,3,2)、(2,1,3)、(2,3,1)、(3,1,2)、(3,2,1)共 6 个排样方案。
对于 N 个零件则一共有 N!个排样方案。
在 GA 算法中,对于排序组合的编码,目前主要有以下几种编码方式:1) 顺序编码2) 路径编码。
经过 GA 迭代进化得到最终优化结果之后,还需要对结果进行解码。
解码的过程和编码的过程相反,解码的主要目的是将排样顺序队列还原成排样图形,即按照 GA 算法最终得到的较优解所包含的排样次序依次将零件定位于板材内部,从而得到最终的零件排样布局。
算法 4-1 基于遗传算法的二维排样问题求解算法。