【转】云社区 博客 博客详情 二维异形件排版算法介绍(一)

转自:https://bbs.huaweicloud.com/blogs/175385

【摘要】 排样问题(Nesting Problem)又称为下料问题(Cutting and stock problems)或填充问题(Packing Problem),其目标是在材料切割过程中寻找一个较高的材料利用率。排样问题属于经典的NP-Hard问题,其时间复杂度随着问题规模的增加迅速上升,难以在合理时间内精确求解大规模实例。

算法简介

 

排样问题(Nesting Problem)又称为下料问题(Cutting and stock problems)或填充问题(Packing Problem),其目标是在材料切割过程中寻找一个较高的材料利用率。排样问题属于经典的NP-Hard问题,其时间复杂度随着问题规模的增加迅速上升,难以在合理时间内精确求解大规模实例。相较于矩形排样问题,异形件排样问题的突出特点是裁片的边界轮廓复杂,计算过程中需要复杂的几何运算,其算法复杂度将进一步上升,是学术界和工业界公认的难以求解的问题。因此在大多数情况下,不规则形状排样算法主要是以启发式算法和智能搜索算法为主。

综上所述,二维异形件排样算法涉及到的关键技术主要有三个,如图1所示,分别是高效率的几何算法、排样策略和优化算法。

图1. 排样算法关键技术

NFP求解算法

 

二维异形件排样算法的一个相当重要的方面是计算几何算法,其主要内容在于计算异形件之间的靠接位置、确定裁片与面料之间的包含关系、判断是否重叠以及实现二维区域之间的交、并、差等布尔运算。

为寻找一种更简便高效的靠接和重叠判断计算方法,研究人员提供了临界多边形(No-Fit Polygon,NFP)的概念[1]。临界多边形NFP的简要定义如下:给定两个多边形,其中一个固定,另一个多边形围绕固定的多边形作不旋转的刚体运动,并围绕固定多边形滑动,直到回到起点位置,在此过程中在运动多边形上选取一点作为参考点,则参考点在环绕过程中形成的轨迹就称为临界多边形,如图2所示。

 

 

图2. 临界多边形概念(图片来源:参考文献[2])

NFP求解还会遇到特殊场景,如图3所示,图a由于多边形A存在凹槽,多边形B可以在凹槽内部移动,此时将形成空腔NFP;图b由于多边形B恰好可以沿着多边形A凹槽移动,此时NFP将退化成线;图c多边形B恰好可以放在多边形B凹槽内,此时NFP将退化成点。NFP求解算法同时要考虑这些特殊情景。

 

图3. 特殊NFP场景:a. 空腔NFP;b. NFP退化成线;c. NFP退化成点(图片来源:参考文献[3])

由于临界多边形的重要性质,NFP目前已成为二维不规则形状排样算法的基础性几何工具。如何快速准确的计算出NFP是异形件排样问题的关键技术。学界目前的求解算法主要有4种,分别是凸化分割法、移动碰撞法[4]、明科夫斯基矢量和法[5]以及轨迹线法[2]。简要介绍如下:

(1)凸化分割法。凸化分割法基本思路是将凹多边形分割为凸多边形,然后求得凸多边形之间的NFP,最后将凸多边形的NFP进行合并得到最终的NFP。凹多边形凸化分割的算法有多种,例如三角划分、凹点划分、条带分割、角平分线分割等。设多边形边数为n,凹点个数为r,目前最少次数分割算法时间复杂度不超过O(n+r2min(r2,n)), 当简单多边形的凹点个数达到n/2时,该分割算法的复杂度已达到O(n3)。如果再加上求解凸多边形的NFP和求解多边形并集的布尔运算,该方法的时间复杂度将进一步增加。此外,该方法可以得到内部空腔NFP,但是对于NFP退化场景,标准多边形求并运算无法得到。

(2)移动碰撞法。移动碰撞法的基本步骤如下:如图4所示,首先根据多边形A和B当前时刻的靠接状态,得到B下一步的移动方向,在该移动方向上,计算出A和B之间的最小碰撞距离,从而得到移动距离,根据移动方向和移动距离,将B移动到新的位置,然后重复以上过程,直至绕完一圈,回到初始位置。该算法比较容易实现,但是该算法总的时间复杂度较高,达到(O(m+n)mn)。此外,该算法可以处理空腔NFP和退化NFP等特殊场景。

 

图4. 移动碰撞法计算NFP(图片来源:参考文献[2])

(3)明科夫斯基矢量和法。两个凸多边形之间的NFP等价于计算两者的明科夫斯基矢量和,其算法复杂度为O(m+n)。其基本求解思路如下:如图5所示,首先多边形A(固定多边形)按照逆时针排列,多边形B(移动多边形)按照顺时针排列。然后,将多边形A和多边形B的所有边矢量置于原点(0,0),接着,对所有边矢量按与起始矢量的夹角从小到大排序,最后将排序后的边矢量进行串联累加,即可得到A和B的临界多边形NFPAB。然而,当两个多边形中有一个为凹多边形时,凹边的遍历次序将会被打乱,从而不能合成一个临界多边形。为解决此问题,研究人员引入了斜率图的概念来解决此问题[5,6]。然而,该方法实现复杂,时间复杂度也比较高,最坏情况下的时间复杂度为O(m2n2log(mn))。此外,该算法也可以处理空腔NFP和退化NFP等特殊场景。

图5. 明科夫斯基矢量和法求解凸多边形NFP(图片来源:参考文献[2])

(4)轨迹线法。轨迹线法的基本原理是:如图6所示,首先求得多边形每个顶点相对于另一个多边形的所有轨迹线,然后从轨迹线集合中得到外围多边形和内部顺时针环,即为临界多边形。该算法从NFP的本身定义出发,算法过程简单,平均时间复杂度为O(mn),并且能够处理内部空腔NFP和退化NFP等特殊情景。

 

图6. 轨迹线法NFP算法原理图(图片来源:参考文献[2])

总结

NFP是二维异形件排样算法的基础性几何工具,实现不好将严重影响排样算法性能。作者曾采用凸化分解法求解100个多边形的NFP,由于多边形平均点数较大(平均82个),单纯计算NFP的时间开销就达到半小时。因此,非常有必要对各种NFP求解算法进行比较分析,选择一种高效的NFP求解算法。表1总结了4种NFP算法的时间复杂度,以及是否可以处理特殊情景。

文献[2, 4, 5]是各种NFP求解算法的巅峰之作,建议初学者先从移动碰撞法[4]入手学习(该文实现细节讲解清楚,其余文章则较少),然后再考虑实现其他方法。

 

表1. 4种NFP求解算法对比

 时间复杂度能否处理内部空腔能否处理退化场景
凸化分解法>O(m3+n3)YesNo
移动碰撞法O((m+n)mn)YesYes
明科夫斯基矢量和法O(m2n2log(mn))YesYes
轨迹线法O(mn)YesYes

  更多有关排版算法的介绍将在后续博客中更新,欢迎大家关注。

参考文献

 

[1] Adamowicz M, Albano A. Nesting two-dimensional shapes in rectangular modules[J]. Computer-Aided Design, 1976, 8(1): 27-33.

[2] Huyao L, Yuanjun H, Bennell J A. The irregular nesting problem: a new approach for nofit polygon calculation[J]. Journal of the Operational Research Society, 2007, 58(9): 1235-1245.

[3] Bennell J A, Oliveira J F. The geometry of nesting problems: A tutorial[J]. European journal of operational research, 2008, 184(2): 397-415.

[4] Burke E K, Hellier R S R, Kendall G, et al. Complete and robust no-fit polygon generation for the irregular stock cutting problem[J]. European Journal of Operational Research, 2007, 179(1): 27-49.

[5] Bennell J A, Song X. A comprehensive and robust procedure for obtaining the nofit polygon using Minkowski sums[J]. Computers & Operations Research, 2008, 35(1): 267-281.

[6] Ghosh P K. A unified computational framework for Minkowski operations[J]. Computers & Graphics, 1993, 17(4): 357-378.


 

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 微信两个服务的,微信上线两个新功能

微信又上线新功能了!一个与你的钱包相关,一个与你的微信号相关,赶紧来看看吧微信支付分全面开放每个微信用户都拥有自己的一个分数值 ,且每月根据综合数据更新一次。达到一定的分值门槛,用户即可享受超千项便捷服务。这…

【转】二维异形件排版算法介绍(二)

转自:https://bbs.huaweicloud.com/blogs/196289【摘要】 二维不规则异形件主要有两种策略:分别是基于可行解的排样策略和基于重叠移除的排样策略。所谓基于可行解的排样策略,是指在排样过程中零件之间始终是不重叠的,而基于重叠移…

【转】介绍一些免费/开源的医学影像后处理工具

转自:https://blog.csdn.net/liaopiankun0618/article/details/84328331 来源:融视影像科技 综述 医学影像的处理有两个特质。一是复杂,整个处理流程涉及多种算法,需要调整的参数较多。二是发展快,从采集、重建到后…

android gradle 语法,Gradle 1.语法

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?gradle 语法解析:gradle的语法十分简洁,以至于看起来跟像是配置文件。先看一个简单的android项目完整的gradle脚本:build.gradle123456789101112131415…

【转】二维异形件排版算法介绍(三)

转自:https://bbs.huaweicloud.com/blogs/203947 【摘要】 相比于基于可行解的排样算法,重叠移除算法在改变解的状态时,允许零件之间发生重叠,然后采用分离技术消除重叠,直到达到算法的终止条件为止。重叠移除算法的关…

【转】Dicom格式文件解析器!!!!!!!

转自:https://www.cnblogs.com/assassinx/archive/2013/01/09/dicomViewer.html Dicom全称是医学数字图像与通讯,这里讲的暂不涉及通讯的问题 只讲*.dcm 也就是diocm格式文件的读取,读取本身是没啥难度的 无非就是字节码数据流处理。只不过确…

【转】医学影像调窗技术!!!!

转自:https://www.cnblogs.com/assassinx/p/3139505.html 在年初的时候做过一个dicom格式文件解析,当时只是提了下。看着跟别人的显示出来也差不多 其实是我想太简单了。整理了下思路 这里提供正确的调窗代码。 医学影像 说得挺高科技的 其实在这个过程…

【转】理解字节序 大端字节序和小端字节序

转自:https://www.cnblogs.com/gremount/p/8830707.html 以下内容参考了 http://www.ruanyifeng.com/blog/2016/11/byte-order.html https://blog.csdn.net/yishengzhiai005/article/details/39672529 1. 计算机硬件有两种储存数据的方式:大端字节序…

创建windows服务,定时监控网站应用程序池

最近网站总是报"Timer_Connection"错误,导致该网站所使用的应用程序池由于错误过多停止运行,网站也就出现了service unvaliable,无法访问,在网上查了很多资料,结果很让人无奈,这个问题已经困扰我了很久,一直没有得到解决,后来同事发来一篇文章让我有了新的解决方法,虽…

【转】Qtcreator中常用快捷键和小技巧

转自:https://blog.csdn.net/imxiangzi/article/details/48863855 https://blog.csdn.net/jh1513/article/details/52346802 快捷键及对应含义 下载地址:http://download.csdn.net/detail/jh1513/9615209 快捷键 功能 Esc 切换到代码编辑状态 F1 …

【转】VS编译时自动引用Debug|Release版本的dll

转自:https://www.cnblogs.com/KevinYang/archive/2011/04/10/2011879.html 公司一些早期的项目,把所有工程都放到一个解决方案下了,导致整个解决方案编译很慢,而且也不便于类库的复用和维护。因此我们决定把工程按照功能划分到不…

【转】DICOM之Print!!!!!!!!!

转自:https://blog.csdn.net/weixin_41556165/article/details/81064531 基本概念: Film:在DICOM协议中使用Film来统称不同的Hard Copy,例如photographic film和paper。 DICOM Print的数据流由Print Session、Print Job、Print(h…

静态html js文件上传,js实现动态添加上传文件页面

发邮件是需要添加一些文件,每添加一个文件,页面上可以显示一个表单文件上传选项。此功能为:初始时刻只有一个添加按钮,当点击添加文件时,会增加一个选择文件和删除区域,同时显示上传按钮,当点击…

WINCE6.0文件系统及存储管理器

*******************************LoongEmbedded******************************** 作者:LoongEmbedded 时间:2010.12.03 类别:WINCE嵌入式系统 ********************************LoongEmbedded******************************** Filesys.…

【转】Wireshark网络抓包(一)——数据包、着色规则和提示

转自:https://www.cnblogs.com/strick/p/6261463.html 一、数据包详细信息 Packet Details面板内容如下,主要用于分析封包的详细信息。 帧:物理层、链路层 包:网络层 段:传输层、应用层 1)Frame 物理层…

【转】Wireshark网络抓包(二)——过滤器

转自:https://www.cnblogs.com/strick/p/6261915.html 一、捕获过滤器 选中捕获选项后,就会弹出下面这个框,在红色输入框中就可以编写过滤规则。 1)捕获单个IP地址 2)捕获IP地址范围 3)捕获广播或多播地址…

html访问虚拟目录路径,IIS7.5虚拟目录物理路径指向共享文件夹详解

本文重点描述如何使用IIS访问共享资源来架设站点或执行 ASP.Net 等脚本。UNC是 Universal Naming Convention 的简称,也叫通用命名规范、通用命名约定。网络(范指局域网)上资源的完整位置名称。通常情况下,拥有多台服务器的朋友在使用IIS建立站点的时候&…

【转】DICOM:DICOM三大开源库对比分析之“数据加载”

背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,“只要Sante DICOM Editor打不开的数据,基本可以判定此DICOM文件格式错误(准确率达99.9999%…

html中点击照片时放大缩小,基于jquery实现一张图片点击鼠标放大再点缩小

. 代码如下:var isopen false;var newImg;var w 200; //将图片宽度200var h 200; // 将图片高度 200$(document).ready(function(){$("img").bind("click", function(){newImg this;if (!isopen){isopen true;$(this).width($(this).width() w);$(th…

css入门之head区设置

收藏夹小图标 如果你将本站加入收藏夹,可以看到在收藏夹网址之前的IE图标变成了本站特别的图标。要实现这样效果很简单,首先制作一个16x16的icon图标,命名为favicon.ico,放在根目录下。然后将下面的代码嵌入head区: &l…