CAD中下料排版、套料——贪心算法和遗传算法优劣对比——c#

       cad插件实现下料排版效果如下:

(使用方式:CAD命令行输入“netload”加载此插件,然后命令行输入:“ywxl”空格键即可。)

也可脱离cad环境,单独exe文件。

项目背景:某钢管厂的钢筋原材料为 55米,工作需要需切割 40 米(1段)、11 米(15 段)等 4 种规格 ,现用贪心算法和遗传算法两种算法进行计算:

第一局:{ 40, 1 },  { 11, 15 },{ 10, 1 }, { 5,1},如何切割最省原材料?

运行结果如下:

贪心算法切割方案:
原材料 1: [40, 11 ]剩余: 4 米
原材料 2: [11, 11, 11, 11, 11 ]剩余: 0 米
原材料 3: [11, 11, 11, 11, 11 ]剩余: 0 米
原材料 4: [11, 11, 11, 11, 10 ]剩余: 1 米
原材料 5: [5 ]剩余: 50 米
共需要5个原材料,总剩余: 55 米,贪心算法利用率: 80.00%
部分长度未切割完毕。
遗传算法切割方案:
原材料 1: [11, 11, 11, 11, 11] 剩余 0 米
原材料 2: [11, 11, 11, 11, 11] 剩余 0 米
原材料 3: [11, 11, 11, 11, 11] 剩余 0 米
原材料 4: [40, 10, 5] 剩余 0 米
遗传算法共需要4个原材料,总剩余: 0 米,遗传算法利用率: 100.00%

============ 方案对比 ============
贪心算法: 使用原材料 5 个,总剩余 55 米,利用率 80.00%
遗传算法: 使用原材料 4 个,总剩余 0 米,利用率 100.00%
最佳方案:遗传算法,利用率更高 100.00% > 80.00%

第一局,遗传算法获胜。

第二局,修改需求如下: 工作需要需切割 40 米(11段)、11 米(15 段)等 4 种规格  { 40, 11 },  { 11, 15 },{ 10, 11}, { 5,11}

运算结果:

贪心算法切割方案:
原材料 1: [40, 11 ]剩余: 4 米
原材料 2: [40, 11 ]剩余: 4 米
原材料 3: [40, 11 ]剩余: 4 米
原材料 4: [40, 11 ]剩余: 4 米
原材料 5: [40, 11 ]剩余: 4 米
原材料 6: [40, 11 ]剩余: 4 米
原材料 7: [40, 11 ]剩余: 4 米
原材料 8: [40, 11 ]剩余: 4 米
原材料 9: [40, 11 ]剩余: 4 米
原材料 10: [40, 11 ]剩余: 4 米
原材料 11: [40, 11 ]剩余: 4 米
原材料 12: [11, 11, 11, 11, 10 ]剩余: 1 米
原材料 13: [10, 10, 10, 10, 10, 5 ]剩余: 0 米
原材料 14: [10, 10, 10, 10, 10, 5 ]剩余: 0 米
原材料 15: [5, 5, 5, 5, 5, 5, 5, 5, 5 ]剩余: 10 米
共需要15个原材料,总剩余: 55 米,贪心算法利用率: 93.33%
部分长度未切割完毕。
遗传算法切割方案:
原材料 1: [40] 剩余 15 米
原材料 2: [40] 剩余 15 米
原材料 3: [40] 剩余 15 米
原材料 4: [40] 剩余 15 米
原材料 5: [40] 剩余 15 米
原材料 6: [40] 剩余 15 米
原材料 7: [40] 剩余 15 米
原材料 8: [40] 剩余 15 米
原材料 9: [40] 剩余 15 米
原材料 10: [40] 剩余 15 米
原材料 11: [40, 11] 剩余 4 米
原材料 12: [11, 11, 11, 11, 11] 剩余 0 米
原材料 13: [11, 11, 11, 11, 11] 剩余 0 米
原材料 14: [11, 11, 11, 11, 10] 剩余 1 米
原材料 15: [10, 10, 10, 10, 10] 剩余 5 米
原材料 16: [10, 10, 10, 10, 10, 5] 剩余 0 米
原材料 17: [5, 5, 5, 5, 5, 5, 5, 5, 5, 5] 剩余 5 米
遗传算法共需要17个原材料,总剩余: 165 米,遗传算法利用率: 82.35%
============ 方案对比 ============
贪心算法: 使用原材料 15 个,总剩余 55 米,利用率 93.33%
遗传算法: 使用原材料 17 个,总剩余 165 米,利用率 82.35%
最佳方案:贪心算法,利用率更高 93.33% > 82.35%

第二局,贪心算法获胜

然而,最佳答案为 40 +10 +5 米分一组,需要11根原材料。11米的单独一组,11*15/55=3根原材料。11+3=14,共需14个原材料,利用率100%。由此可见,每种算法各有优缺点,不一定是最优解。

 

 

### Python 套料排版算法实现 套料排版是一种优化材利用率的技术,广泛应用于制造业、建筑行业等领域。以下是基于 `matplotlib` `numpy` 的一种简单实现方式,用于模拟二维空间内的矩形排列。 #### 使用 Matplotlib Numpy 进行简单的下料排版 以下是一个基本的示例代码,展示如何通过编程的方式解决简单的矩形套料问题: ```python import matplotlib.pyplot as plt import numpy as np def plot_rectangles(rectangles): fig, ax = plt.subplots() colors = np.random.rand(len(rectangles), 3) # 随机颜色列表 [^1] for i, (x, y, width, height) in enumerate(rectangles): rect = plt.Rectangle((x, y), width, height, color=colors[i], edgecolor='black') ax.add_patch(rect) ax.set_xlim(0, max([x + w for x, _, w, _ in rectangles])) ax.set_ylim(0, max([y + h for _, y, _, h in rectangles])) ax.set_aspect('equal', adjustable='box') plt.show() # 示例数据:[(左下角X坐标, 左下角Y坐标, 宽度, 高度)] rectangles = [(0, 0, 2, 3), (2, 0, 1, 2), (0, 3, 3, 1)] plot_rectangles(rectangles) ``` 上述代码展示了如何绘制多个矩形并分配随机颜色给它们。这种方法可以扩展到更复杂的场景中,比如动态调整位置以减少浪费的空间。 --- #### 利用开源工具 SVGNest 对于更加复杂的需求,推荐使用成熟的开源解决方案如 **SVGNest**[^2]。该工具能够处理任意形状零件的最佳嵌套布局,并支持导出为标准文件格式(如 SVG)。其工作流程如下: - 将待加工件导入系统; - 自动计算最优摆放方案; - 下载生成的结果文件以便后续操作。 虽然此项目主要面向图形界面交互设计,但它也提供了 API 接口供开发者调用,从而集成至其他应用程序之中。 --- ### 总结 无论是借助基础库自行开发还是采用现有框架完成任务,在实际应用过程中都需要综合考虑效率与精度等因素的影响。以上两种途径分别适用于不同层次需求下的用户群体。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山水CAD筑梦人

你的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值