用途:解决二维不规则形状排样(2D packing),把非矩形零件尽可能紧凑地排布在板材等原材料上,以减少用料、降低成本、提高材料利用率。适用于钣金、皮革、布料、木材、复合材料等切割下料场景。
主要能力:资料提供了完整的排样问题分类与建模框架,包括不规则形状排样、条带排样(固定宽度、最小化高度)、带约束排样(固定朝向、纹理方向、零件分组、材料质量区域)、在线排样(零件动态到达)和多材料排样。给出了数学形式:决策变量为零件位置、旋转角与是否使用某张板;目标是最小化用板数或材料面积;约束包括零件不重叠、不超出板材、满足最小间距与需求数量。资料说明该问题为强 NP-hard,通用情形无高效精确算法,需用元启发式方法。
方法:资料给出两种实现思路。一是左下(Bottom-Left)启发式:按面积从大到小排序,对每个零件在允许角度中尝试,用网格搜索找到最靠左下且不越界、不重叠的位置,间距用缓冲实现,最后统计用板数、利用率与浪费,并可可视化。二是遗传算法:以零件顺序和各自旋转角构成染色体,以用板数与浪费为适应度,参数含种群规模、代数、变异率与交叉率;资料中该部分代码未完整给出。
使用方式:需先用多边形坐标定义零件并指定数量、可旋转角度,设置板材宽高、间距与允许旋转角度,再运行排样并查看用板数、利用率、浪费等结果。示例中零件坐标与板材尺寸仅作演示,非通用参数。
限制:资料未提供安装命令、依赖清单、收费或平台信息,未说明具体运行环境要求;示例依赖 numpy、shapely 与 matplotlib,需自行确认可用性。算法为启发式,不保证全局最优,效果取决于零件复杂度、约束与参数设置。