Zhongwei +

二维排样算法-重心临界多边形-Python实现

二维排样算法-重心临界多边形-Python实现

[TOC]

1. 算法说明

1.1 概述

算法分为两个部分,一是基于重心NFP的零件定位,二是启发式零件排序

1.2 基于重心NFP的零件定位

该部分通过计算NFP,寻找能使零件重心最低的位置。因为零件重心越低,排样算法的效率越高[1]

1.2.1 流程图

Git Bash

1.2.2 算法描述

*Step 6. 根据Step 5得到的$\rho$和边界位置更新边界约束。完成定位。

*Step 7. 重复Step 4,直到零件集合中所有零件都定位到约束空间中,结束循环。

1.2 启发式零件排序

1.2.1 解空间和最优解

上一节中,零件的插入顺序一般按照面积从大到小排列。改变定位顺序,定位也会随之改变。使得利用率(或者排样高度?)最高的定位顺序即为最优解,而解空间就是零件编号的排序方式。

假设零件集合中有$m$个零件,解的个数就是$m!$个,遍历搜索显然是不能接受的。

1.2.2 搜索策略

定义如下三种搜索策略:

我们认为以上三种策略的扰动范围依次减小。

1.2.3 模拟退火搜索

模拟退火的基本原理可以参考维基,这里不做太多介绍。下面主要说明本文用到的输入参数和一些算法改进。

(1)参数说明

(2)算法流程

这里的算法流程参考上海交通大学刘胡瑶的博士论文:基于临界多边形的二维排样算法研究

Git Bash

2. 实现方法

2.1 版本说明

2.2 代码模块


[1] 刘胡瑶. 基于临界多边形的二维排样算法研究[D]. 上海: 上海交通大学, 2007.

Blog

Project

Favorite