ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

激光切割路径优化:从空移时间看TSP算法如何挤出产能

激光切割路径优化:从空移时间看TSP算法如何挤出产能 做激光加工这些年我见过太多机器配置很高、但实际产出上不去的案例。切割头从A点移到B点激光并没有在干活这段空移路径看着不起眼积累起来却是很多工厂沉默的效率杀手。今天想聊的就是路径优化算法如何把一个差不多就行的加工顺序变成实打实的机时节省。这篇文章适合做钣金切割、管材切割、PCB钻孔、飞秒激光刻蚀的朋友不管你是操机师傅还是工艺编程员理解了这套思路之后回去打开自己的加工文件重排一遍多半能直接挤出产能。1. 激光加工里的时间黑洞先算清空移这笔账1.1 为什么切割速度很快产出却上不去很多做激光加工的朋友有个误区觉得效率取决于激光功率和切割速度功率够大、速度够快产能自然就上去了。实际上设备越先进空移速度和切割速度的差距越大路径规划不合理造成的浪费就越刺眼。我们看一组常见数据切2mm不锈钢切割速度大概在每分钟3到4米穿孔时间大约0.3秒而空移速度动辄可以拉到每分钟36米以上有的设备甚至能到60米。单看差别不大但一个加工文件里有几十上百个孔和轮廓时情况就完全不同了。这里面的核心问题在于绝大多数CAM软件导出路径时默认按图元生成顺序排列。绘图员画图的逻辑是按图层、结构分类而不是按空间位置于是切割头经常从板材左上角冲到右下角再从右下角折回中间空移路径大量交叉、迂回。激光真正干活的时间可能只有总时间的一半甚至更少。我做工艺那会儿第一次把一台通快设备的加工日志拉出来看到空移时间占比超过40%自己都有点不信。后来用秒表掐了几个件发现确实如此。空移快但架不住次数多、距离长设备每秒钟都在烧电、占机时这些成本最后全算在零件单价里。1.2 一个直观的数学例子50个孔的路径决策用个简单的例子来算账。假设有一块板材上需要切割50个小孔比如散热孔、安装孔这些孔基本均匀分布在一个300mm×200mm的区域内孔间距平均约15mm到20mm。如果按画图顺序加工很多CAM文件的路径是乱的空移总距离很容易超过3000mm。如果我们用最简单的最近邻规则重排一下每次从当前位置找最近的未切割孔空移总距离可以压到900mm左右。再结合后面要讲的局部优化700mm左右就能搞定。3000mm和700mm差了2300mm。按600mm/s的空移速度算单件省下的空移时间只有约3.8秒听起来不多。但一台设备每天加工1000个这种小件那就是3800秒超过1小时一个月的机时浪费就是整整一天多。如果这些孔尺寸不一样、分布更散优化前后的差距会更夸张。我以前帮客户优化过一个表壳批量件上面有80多个孔和刻字路径原文件空移路径接近7000mm优化后缩到1800mm单件节拍直接减少8秒客户一台机器一天多做两百多个件而且没花一分钱硬件投入。这就是路径优化算法的价值它不改变任何物理参数不换激光器、不调镜片、不换喷嘴只是把怎么走重新规划了一下效率却实实在在提上去了。2. 把激光头当成快递车路径优化本质是一个TSP问题2.1 与物流配送路径同构的数学模型在物流行业配送路径是一个老话题。一辆快递车从仓库出发要跑几十个配送点怎么安排顺序才能让总里程最短、油耗最低这就是经典的物流配送路径问题。激光加工其实完全一样切割头就是一个快递车每一个待加工的孔或轮廓就是配送点空移路程就是行车里程。两者差异仅在于快递车还有载重约束、时间窗口、多辆车协同而单头激光切割是单车辆、无载重、无时间窗的最简版本。正规一点说激光加工的空移路径规划就是旅行商问题英文缩写TSP。给定n个待加工点找一条经过每个点一次且仅一次、最终回到起点的路径使总路程最短。为什么说这个模型和物流配送路径同构因为两者优化的目标函数都是距离最小化求解方法也完全通用。物流行业里被验证过的智能优化算法搬到激光头坐标上一样好用。这也是为什么很多做激光路径优化的工程师去翻物流排线、城市配送路线的论文会发现里面的思路可以直接抄作业。2.2 教科书TSP解决不了的问题轮廓级节点与工艺约束但如果你真的直接套教科书里的TSP算法又很容易栽跟头。激光加工里的点不是单纯的点而是一个个轮廓、圆孔、异形腔。每个轮廓都有引入线位置、切割方向、穿孔点这些细节直接影响切割质量。打个比方一个方孔由四条边组成如果算法把四条边当成四个独立的点路径可能会让切割头切完一条边就跳到别的轮廓再回来切剩下的三条边。这在实际切割里是个灾难切到一半跳走材料冷却后再次穿孔接刀痕明显还可能因为热应力把薄壁拉变形。所以实际的路径优化必须把整个轮廓作为一个节点节点之间的距离也不是两个点之间的欧氏距离而是上一个轮廓切完后的当前位置到下一个轮廓引入线起点的过渡距离。切割方向也得固定外轮廓和内孔通常一个走顺铣一个走逆铣不能因为优化路径把方向反了。再加上微连接位置、夹具位置、热积累区域这些约束问题从经典TSP变成了带工艺约束的TSP变体。这也是很多所谓智能优化算法在论文里跑得很好到了车间里效果打折扣的原因——约束条件没写进去算法再聪明也白搭。我把这个建模过程拆成三步实际做的时候可以照着来提取每个轮廓的工艺起点和终点把轮廓整体看作一个带方向的节点计算任意两个轮廓之间的空移距离生成距离矩阵在距离矩阵基础上把工艺约束方向、微连接、禁区作为硬性条件再进行排序优化。3. 从最近邻到智能优化激光加工路径算法选型逻辑3.1 贪心与局部改进2-opt是性价比之王路径优化的算法很多从最简单的贪心到复杂的深度学习各有各的适用场景。我按实际工程中的推荐程度一个个说。最基础的是最近邻算法从起点开始每次找离当前位置最近的未加工轮廓走过去直到全部走完。实现极其简单几行代码就能写完效果也不错能把乱序路径大幅缩短。但它的毛病在于只看眼前最后几个轮廓可能离得很远形成一段跨越整个台面的长距离空移反而得不偿失。再往上一层是各类插入法从一个轮廓开始每次从未加工的轮廓里选一个插入到当前路径中使插入后路径增量最小的位置。最远插入法在均匀分散的场景下效果往往比最近邻好但计算量大一点。真正让路径质量上一个台阶的是2-opt局部搜索这是我最推荐的算法没有之一。它的核心逻辑很直观如果路径中有两条边交叉那就把中间一段反向连接相当于彻底解开交叉。反复试直到任何两段交换都不能让总距离变短为止。用大白话解释2-opt就是不断问自己一个问题把这一段路径反过来走是不是更短如果是就换掉。这个算法配合最近邻作为初始解在几百个轮廓的规模下效果非常好能把最近邻基础上再优化个20%到40%而且运行时间几乎可以忽略不计。我在实际项目里的标准流程就是先用最近邻生成一个初始排序再用2-opt反复精修通常循环几百次就能收敛。这一套代码用Python写初始化加迭代总共不到一百行。3.2 智能优化算法何时值得上模拟退火、遗传与蚁群很多文章一谈路径优化就上遗传算法、模拟退火、蚁群显得很高大上。确实这些算法属于智能优化算法在物流配送路径规划领域被大量验证过放到激光加工场景里也是一样适用但一定要分清场合。拿遗传算法举例。它的思路是模拟生物进化生成一组随机路径作为种群每个路径是一条染色体通过交叉和变异不断产生新路径用适应度函数总空移距离筛选更优个体。适合在解空间很大的时候进行全局探索避免陷入局部最优。我的实测感受是在轮廓数量超过500个、台面上分布极不均匀时遗传算法加2-opt的收敛质量明显好于单纯2-opt。模拟退火的思路是借鉴金属退火过程允许以一定概率接受比当前更差的解这样跳出局部最优的坑然后随着温度降低接受差解的概率逐渐减小最终稳定在较优解附近。实现上比遗传简单调参直觉化很多人在2-opt基础上做一轮模拟退火精修效果也很好。蚁群算法模拟蚂蚁找食物时通过信息素互相协作的过程正反馈机制强在动态变化的环境下效果不错但参数多、计算量大激光加工这种静态离线场景优势体现得并不明显。我的选型建议是100个轮廓以下最近邻2-opt就足够了别折腾别的100到500个轮廓2-opt基础上加一轮模拟退火或遗传算法效果明显500个以上轮廓或分布极乱直接上遗传算法加局部搜索的组合计算时间也还能接受。说白了算法是工具重要的是理解每种工具能解决什么问题。物流配送里那些动辄几千个网点的路线规划都能用智能算法跑激光加工几百个点真不算什么。3.3 算法选型决策表算法类型适合规模实现难度优化效果典型场景最近邻任意极低中初始解、临时排程2-opt小于500节点低中高日常加工文件重排模拟退火100-2000节点中高配合2-opt做全局跳出遗传算法200以上节点较高高大批量、复杂分布蚁群算法动态变化较高中高动态调度、特殊场景这里多说一句算法效果不能只比谁更短。真正的评判标准是给定时间内谁更实用。车间里没人愿意等5分钟让电脑算路径我一般要求优化计算时间控制在10秒以内超过了就回到2-opt方案。4. 一次真实落地200个轮廓的路径重排实测4.1 测试环境与数据采集2023年下半年我帮一个做电器机箱的客户做工艺优化其中有块1200mm×800mm的不锈钢板上面要加工大约200个孔和异形轮廓有圆孔、方孔、腰型孔还有几个用于定位的沉台。原CAM文件导出后空移路径相当感人光看代码里的G0指令就知道切割头在整个台面上来回穿梭。具体做法是把加工文件里的坐标全部解析出来按轮廓分组每个轮廓取引入线起点坐标和终点坐标然后组成节点列表。这里有个关键步骤节点之间的距离不能简单用起点到起点去算而要用上一个轮廓的终点到下一个轮廓的起点去算才是真实的空移距离。我写了一个Python脚本读取加工文件里的坐标数据后做三件事一是按轮廓分组并提取起终点二是计算轮廓间距离矩阵三是调用路径优化算法重排输出顺序。整个过程大概花了两个晚上主要时间花在解析不同格式的加工文件上算法本身反而很简单。4.2 逐步优化带来的数据变化这是当时实测的数据同一块板子、同一套加工参数只改变切割顺序排序方式空移总距离估算空移时间600mm/sCAM默认导出顺序9320mm15.5秒最近邻算法2800mm4.7秒最近邻2-opt1980mm3.3秒遗传算法2-opt1900mm3.2秒从9320mm降到1900mm单件空移时间节省约12秒。这个件每日计划做800件日产能直接多出将近3小时的有效机时。而且加工质量还变得稳定了因为切割头不再频繁从板材一侧冲到另一侧热影响区分布更均匀薄壁区域的变形也减少了。顺手说一下遗传算法在这里的表现我从最近的邻加2-opt方案继续跑到遗传算法优化只比2-opt多省了80mm约4%。这说明在200个节点这个规模下2-opt已经逼近了这个实例的较优值再上复杂算法收益不高。这个结论很重要——别一上来就上重武器先用简单的算法跑通流程看看还有多少优化空间再决定值不值得上高级算法。4.3 可以直接复用的代码思路下面这段代码思路我已经在多个项目里复用过核心逻辑就是最近邻生成初始路径加2-opt精修。坐标从加工文件里提取后存成列表格式是轮廓编号起点x起点y终点x终点y。import math def dist(pts, i, j): # 上一个轮廓的终点到下一个轮廓的起点 return math.hypot(pts[i][3] - pts[j][1], pts[i][4] - pts[j][2]) def nearest_neighbor(pts, start0): n len(pts) visited [False] * n route [start] visited[start] True cur start while len(route) n: best -1 best_d float(inf) for j in range(n): if not visited[j]: d dist(pts, cur, j) if d best_d: best_d d best j route.append(best) visited[best] True cur best return route def two_opt(route, pts): n len(route) improved True while improved: improved False for i in range(n - 1): for j in range(i 1, n): if j - i 1: continue # 计算翻转后的路径长度变化 old_d (dist(pts, route[i], route[i1]) dist(pts, route[j], route[(j1) % n])) new_d (dist(pts, route[i], route[j]) dist(pts, route[i1], route[(j1) % n])) if new_d 1e-9 old_d: route[i1:j1] reversed(route[i1:j1]) improved True return route pts [...] # 每个元素: [id, start_x, start_y, end_x, end_y] route nearest_neighbor(pts) route two_opt(route, pts)跑完之后把重排后的轮廓顺序写回加工文件把原轮廓的坐标段按新顺序排列输出。注意写回去之前一定要在仿真软件里过一遍确认没有跨越禁区和异常抬刀。我第一次优化完直接上机结果发现有个轮廓排序后和压板干涉幸好只是空移没有撞头但吓得之后每次都先仿真。5. 落地时的五个坑坐标系、微连接与热变形5.1 坐标系方向不一致第一坑是坐标系方向。不同品牌的数控系统对Y轴方向的约定不一样有些设备Y轴正方向朝上有些设备面向操作者时正方向朝下。坐标提取到算法里计算距离时欧氏距离本身不受坐标轴方向影响但如果你的程序里做了旋转、镜像变换就很容易出错。更隐蔽的问题是坐标单位。有的加工文件用毫米有的是英寸还有的是脉冲数。我之前接过一个客户的程序优化完路径后上机空移路径明显异常排查了半天发现坐标单位是1/100mm而算法里当成了毫米距离矩阵完全错误。我的建议是不管从什么格式的加工文件提取坐标先做一个坐标系映射校验。随机取几个坐标对在设备上手动移动切割头到对应位置确认坐标方向和单位无误再跑优化。这一步花10分钟省下的是上机试切反复调试的时间。5.2 微连接与夹具约束第二个坑是微连接。厚板切割时为了防止零件切完后掉落或偏移工艺上会故意保留几个1mm左右的连接点叫做微连接最后统一敲掉。问题在于路径优化算法并不知道哪里有微连接。它可能把某个轮廓排在前面切完把微连接所在边也顺带切断了后面的工序里这个零件就已经松动吹气时可能翘起来轻则影响后续切割精度重则撞坏切割头。解决办法是在算法里把微连接位置设置为约束微连接所在的那一段切割路径必须排在最后一个轮廓的最后一段。具体实现上可以这样处理先把非微连接轮廓全部重排优化把微连接轮廓留在最后在最后一段里再优化内部起止方向。这比硬塞进通用TSP模型里靠谱得多。5.3 距离最短不等于时间最短第三个坑是目标函数选错。激光切割追求的不应该只是空移距离最短而是整个加工时间最短。很多设备空移有加减速过程拐角处还要降速。一个路径虽然总距离短但如果全是急转弯、之字形切割头不断加减速实际耗时反而更长。我遇到过相反的情况一个优化算法把空移距离缩短了20%但实际节拍几乎没有变因为重排后的路径里多了很多小角度折返。解决办法是在代价函数里加入拐角惩罚对相邻三段路径之间的夹角做判断如果夹角过小就在代价里加一个惩罚项迫使算法避开频繁拐弯的路径。具体实现不复杂距离矩阵的边权改成距离拐角惩罚系数×拐角度数系数根据设备加速性能标定。我自己用过大约0.5到1.0倍的距离系数效果比较理想。5.4 热变形与局部过热第四个坑是热变形。小间距多孔板如果路径优化把所有靠得近的孔排在一起连续切割热量会高度集中板材局部膨胀切出来的孔距偏差比允许公差还要大。很多工艺员抱怨优化完精度反而差了原因就在这里。我的做法是在优化模型里增加一个约束同一区域内连续切割的轮廓数量不超过某个阈值或者说相邻切割轮廓之间的最小间距不能小于某值。这会让空移路径稍微变长但换来的是热分布更均匀、尺寸精度更稳。对于薄板和铝板这一条尤其重要。5.5 不要忽视图形本身的判定规则第五个坑也是最隐蔽的一个孔洞与外轮廓的包含关系。有些零件上有通孔而通孔的切割顺序必须在外轮廓之前否则外轮廓切完后板材就散了孔没法切。路径优化算法只认坐标不知道这些从属关系。所以我在建模时会把所有轮廓分类外轮廓、内孔、微连接轮廓、参考基准轮廓。优化时只在同类别内做TSP重排跨类别的顺序保持原有工艺逻辑不变。这样既保住了质量又拿到了路径优化的收益。6. 从路径到全局路径优化还能往哪里扩展6.1 路径优化与排样联合考虑路径优化做完之后更大的一块蛋糕是排样与路径的联合优化。市面上很多排样软件只负责把零件紧密排列在板材上排列完的路径效率不一定好。反过来如果你在排样阶段就把路径优化的目标考虑进去让相邻零件之间的过渡距离尽量短效果会非常可观。实际操作中可以先生成几种不同的排样方案对每个方案分别做路径优化按总节拍最短来选优。计算量虽然大了但现在电脑性能完全跑得动尤其适合批量长期生产的固定件。6.2 共边切割与飞行切割再往上一层是共边切割。两个相邻零件共享一条边时这条边只需要切一次切割长度大大减少。但共边切割对路径规划的要求高得多不仅要排顺序还要规划共边段的切割时机保证两侧零件都不松动。很多主流CAM系统都内置了共边切割功能但自动化的共边路径优化仍然是热门的算法研究方向。飞行切割是另一个常用功能切割头在运动过程中直接开激光切割不停顿不减速适合连续的规则轮廓。路径规划如果能把飞行切割段安排得足够长、拐弯足够少切割效率还能再上一个台阶。这个方向尤其值得做管材切割的朋友关注。6.3 从单机路径到产线调度把视野再放大一点路径优化不只是单台设备内部的事。整个车间里切割、折弯、焊接、上下料每个环节都在排队等待。单机路径最优不等于产线节拍最优。这和物流配送路径里的多车调度问题就非常像了多台设备同时工作如何分配任务、如何安排先后顺序才能让整个厂区在制品流转最快。智能优化算法在这里也同样适用只是目标函数从单机空移距离变成了整线完工时间。我见过一些厂开始用这类算法做APS排程效果很直接。6.4 我给工艺人员的一个实在建议做了多年激光加工工艺我最大的体会是算法永远是在给工艺做辅助而不是替代工艺。路径优化这类工具最强的价值不是省多少秒而是把工艺人员从繁琐的手动排序里解放出来把精力放在真正影响质量的事情上——切割参数、气体选择、镜片状态、板材质量。如果你现在正被乱序路径困扰我建议先用最原始的办法验证一下把你最常做的几个加工文件导出来人工按区域就近排序对比一下节拍。大概率你会发现20%以上的机时浪费就在这种看不见的地方。我今天分享的路径优化算法核心就一句话把切割头每次移动的距离压缩到最小把每一秒设备时间都用在有产出的地方。
返回列表