We present a fast algorithm to solve nesting problems based on a semi-discrete representation of both the 2D non-convex pieces and the strip. The pieces and the strip are represented by a set of equidistant vertical line segments. The discretization algorithm uses a sweep-line method and applies minimal extensions to the line segments of a piece to ensure that non-overlapping placement of the segments, representing two pieces, cannot cause overlap of the original pieces. We implemented a bottom-left-fill greedy placement procedure, using an optimized ordering of the segment overlap tests. The C++ implementation of our algorithm uses appropriate data structures that allow fast execution. It executes the bottom-left-fill algorithm for typical ESICUPdata sets in a few milliseconds, even when the rotation of the pieces is considered, and thus provides a suitable basis for integration in metaheuristics. Moreover, we show that the algorithm scales well when the number of pieces increases.
翻译:我们提出了一个快速算法来解决巢穴问题, 其依据是 2D 非convex 片段和条状的半分立表示。 片段和条状由一组等距垂直线段代表。 离散算法使用扫描线方法, 对片段的线段使用最小扩展, 以确保不重叠地放置部分, 代表两个片段, 无法造成原始片段的重叠。 我们采用了左下方填充贪婪定位程序, 使用部分重叠测试的最佳顺序 。 我们算法的C++ 实施使用允许快速执行的适当数据结构 。 它在几毫秒内对典型的 ESICUPData 组执行左下方填充算法, 即使考虑到片段的旋转, 并因此为美术学中的整合提供了合适的基础 。 此外, 我们显示, 当片段数量增加时, 算法尺度效果很好 。