2024深圳杯数学建模挑战赛B题:批量工件并行切割下料问题思路代码成品论文分析

更新完整代码和成品完整论文

《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓

https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc#

问题重述
深圳杯数学建模挑战赛2024B题:批量工件并行切割下料问题


 板材切割下料是工程机械领域重要的生产环节。热切割机由固定板材的底部轨道和发出激光(或火焰)的多刀具系统构成。在一块板材下料过程中,底部轨道(下面简称轨道)只能沿着板材的长边(纵向)做来回移动,移动速度可在区间[-80,80]mm/s上连续变化;多把切割刀排列在平行于板材短边的一条直线上,每一把切割刀具可以在保持至少100(mm)相互间距和横向次序下做独立(方向和速度都可不一样)横向移动、升起空载、恢复切割、或停机等待其它刀具运行完毕;横向移动速度可在区间[-50,50]/s上连续变化。每一切割刀具不能做纵向移动,在同一块板材加工过程中,每一刀具停机后也不能从新开机。理论上,在底部轨道与多刀具移动配合下,可并行切割下料多个曲边工件。工件与板边保留不小于10边距,工件之间保留不小于10加工间距。你们的任务是:


一、不考虑切割机运行约束和一块板材的切割下料所需时间,分别针对三种矩形板材:

A8000*2500、B6000*2000、C6000*2500,任意选取附件1中1-15号工件模板(忽略每个模板的内部孔洞)中的工件切割下料,每个型号工件可下料多个,但每块板材切割出的工件至少包含5种型号。给出三种板材的切割排版方案,极大化板材面积利用率。


二、假设可以最多使用5把切割刀下料,设计分别从A、B、C三种型号的板材切割出一题中所得到的下料结果工件的方案,使得整块板的切割下料所需时间尽量短。给出轨道一维移动和所使用的每把刀具的协同运行方案(包括每个刀具横向移动、升起空载、恢复切割、停机等)。


三、附件2给出了一个批量工件的型号分布。选取A,B,C 型板材的任意数量组合切割下料这批工件,不考虑设备时间利用率,极大化所需三个型号板材的总体面积利用率,给出每个型号的板材所需数量和切割排版方案。


四、假设可以最多使用10把切割刀下料附件2给出的批量工件,所需A,B,C 型板材的总体利用率不小于三题中所得排版利用率的95%,极小化这批工件的总体切割下料所需时间。给出每个型号的板材所需数量,给出每块板材下料时轨道移动和所使用的每把刀具的运行方案。


五、实际工况不仅要考虑板材利用率和设备时间利用率,还要考虑刀具空载的能量耗费,能量、板材和设备时间三者都具有经济价值,附件2给出了三者价格比例(其中能量的计量单位使用1刀具开机1小时)。使用最多10把刀具切割下料附件2给出的批量工件,极小化所使用的能量、板材和设备时间的价值总和。给出每个型号的板材所需数量,给出每块板材下料时轨道移动和所使用的每把刀具的协同运行方案。


B题思路分析


2024深圳杯数学建模B题(东三省数学建模B题):批量工件并行切割下料问题


问题1:本题考虑如何在一块矩形板材上切割出给定尺寸的多个矩形工件,使得板材利用率最高。这是一个典型的二维装箱问题(2D bin packing)或矩形装填问题(rectangle packing)。求解这类问题通常采用启发式搜索算法,如回溯法、模拟退火、遗传算法等。以回溯法为例,我们可以将板材划分为若干discrete的网格,工件的长和宽用整数个网格表示。先将工件按某种规则(如面积降序)排序,然后依次选取一个工件,枚举其所有可能的摆放位置和方向,递归地摆放下一个工件,直到所有工件都被摆放或无法继续摆放。在搜索过程中记录最优的摆放方案,即得到最优排样结果。为了提高效率,可以设置剪枝规则,提前排除某些无望的分支。在目标函数的设计上,除了最大化利用率,还可以考虑其他因素,如最小化边角料数量、最小化切割难度等,形成多目标优化问题。


问题2:在考虑切割时间的情况下,工件的排样结果和切割顺序都会影响总加工时间。每个工件的切割路径可以抽象为刀具的一条路径,整个切割过程相当于刀具在板材上游走,经过每个工件的路径恰好一次。因此,可以将该问题转化为多个销售员(多把刀具)分别访问不同城市(不同工件)的多旅行商问题(mTSP)。目标是找到k条路径,覆盖所有工件,且总路径长度最短。这仍是一个NP-hard的组合优化问题。常用的求解方法有遗传算法(GA)、蚁群算法(ACO)、禁忌搜索等启发式算法。以遗传算法为例,我们可以将k条路径编码为一个个体,对种群中的个体进行选择、交叉、变异等操作,不断优化解的质量。评价一个切割方案的Fitness Function需要同时考虑总切割时间和Board utilization。此外,根据刀具的运动特性设置一些切割约束,避免生成无效路径。要进一步提高求解性能,可以借鉴Vehicle Routing中的某些策略,如Clustering先将工件分组,再各自路径规划等。


问题3:当订单规模进一步增大时,现有的板材种类不一定能完全满足生产需求,此时需要考虑多块板材的组合切割。首先,对于每一种板材,利用问题1的方法求解最优排样,记录单块板材的最大利用率。然后,建立整数规划模型,以各类板材的数量为决策变量,最大总利用率为目标,工件数量要求为约束,求解最优的板材组合。这里可以用Branch-and-Bound、Cutting Plane等方法求解IP模型。得到板材组合方案后,再根据各板材的排样结果生成切割任务清单。值得注意的是,由于订单规模较大,最优解可能需要的计算时间很长。实际生产中,可以接受次优解,因此可以设置时间限制,在规定时间内输出当前最优解。此外,如果某些板材的利用率较低,可以适当放宽利用率要求,从全局考虑成本最小。


问题4:在问题3的基础上,进一步引入时间约束,要求所有工件加工完成的用时最短。这需要在多块板材排样的基础上,优化每块板材的切割路径,协调各刀具之间、上下料与切割之间的时序关系。可以将其建模为Flexible Job Shop Scheduling Problem(FJSP)与mTSP的组合优化问题。目标函数是最小化makespan,约束条件包括工件加工要求、机器能力限制、排样利用率要求等。求解思路可以分为两阶段:先用启发式算法生成若干可行的Board Usage方案(包括板材组合和具体排样);再为每个方案优化切割和调度过程,如用Hybrid GA结合调度规则求解FJSP子问题,同时用Adaptive ACO求解mTSP子问题。比较所有方案的makespan,综合评价其性能。还可以设计Memetic Algorithm,将两阶段的求解嵌套迭代,在Evolutionary框架下集成不同的Heuristics,快速收敛到全局最优解。


问题5:在生产实践中,Board Utilization、Makespan、Energy Consumption通常是相互trade-off的多个优化目标。它们分别对应材料成本、人工/机器时间成本、能源成本,权重可以用单位时间的货币价值来衡量。整个Cut Planning就是在总成本最低的约束下,合理分配和调度有限的板材、刀具、时间等资源。这可以建模为多目标优化问题(MOP),用Weighted Sum法将多个目标归一化为总成本目标,或用e-Constraint法将除Makespan外的目标转为约束,在Makespan最小的前提下优化其他指标。之前用到的SA、GA、ACO等Meta-heuristic都可以推广到多目标优化,关键是设计合理的Solution Encoding和Fitness Evaluation。在约束处理上,可以用Penalty Function将约束violation量化为惩罚项,使unfeasible solution也可参与进化,扩大搜索空间。在种群搜索过程中,还可以用Pareto Dominance、Crowding Distance等机制保持解集的多样性,收敛到一个分布良好的Pareto Front。最后再从这些non-dominated solutions中选取总成本最优的切割方案。
后续更新代码和论文!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

hyperf 三十一 极简DB组件

一 安装及配置 composer require hyperf/db php bin/hyperf.php vendor:publish hyperf/db 默认配置 config/autoload/db.php 如下,数据库支持多库配置,默认为 default。 配置项类型默认值备注driverstring无数据库引擎 支持 pdo 和 mysqlhoststringl…

python_django中小学家校互动系统vue_flask家校联系

实现了一个完整的家校互动系统,其中主要有作业信息模块、学校管理员模块、学生学籍模块、学生成绩模块、学科模块、系统新闻模块、系统公告模块、校内新闻模块、校内公告模块、用户表模块、token表模块、关于我们模块、收藏表模块、年级模块、家长模块、教师模块、互…

贪心算法练习day.1

理论基础 贪心算法是一种常见的解决优化问题的方法,其基本思想就是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部的最优决策,以此得到全局的最优解,例如在十张面额不同的钞票,让我们…

mysql-connector 交叉编译

1.下载 官网选择对应的系统以及版本,这里我用的是6.1.5https://downloads.mysql.com/archives/c-c/ 2.解压 tar -zxvf mysql-connector-c-6.1.5-src.tar.gz 3.先常规编译(因为交叉编译的过程中,会用到生成的二进制文件) cd m…

PCB元器件的符号和封装

打开立创商店: PCB是用来链接器件和让电路小型化的 符号: 封装: 封装是在PCB板上呈现的方式 紫色:不需要上绿由 红色: 焊盘 黄色: 丝印层 也就是白色的这个 焊盘 焊盘是为了让接触点增大,更好的焊接元件 焊盘…

ardupilot开发 --- 机载(边缘)计算机-VISP高阶 篇

让我再看你一眼从南到北 0. 基础1. 视觉伺服1.1 视觉伺服基础1.1.1 基本理论1.1.2 代码解析(tutorial-ibvs-4pts.cpp): 1.2 基于图像处理的视觉伺服 0. 基础 基础知识点请参考基础篇。 1. 视觉伺服 参考:Visual servoing 1.1 视觉伺服基础 参考1&am…

达芬奇调色:色彩理论入门

写在前面 整理一些达芬奇调色的笔记博文内容涉及: 一级调色是什么,以及 调色素材格式 log,raw,rec709 简单认知理解不足小伙伴帮忙指正 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候&#…

全网最全搭建Electron项目的各种方式及错误解决

一、官方文档手动搭建 文档地址:快速入门 | Electron,按照文档步骤操作即可,项目只包含了Electron依赖,仅仅只是一个hello world展示。 二、github上拉取官网的electron-quick-start项目 electron-quick-start跟方式一创建的一…

MySQL数据库运维:运行监控及解决sql执行死锁问题

前言 在现代数据密集型应用程序的开发和部署中,MySQL数据库的运维是至关重要的环节之一。一个良好设计和维护的MySQL数据库系统可以确保数据的准确性、可靠性和高效的访问,从而支持业务的顺利运行。然而,随着业务规模的增长和复杂性增加&…

Spring 5源码学习

文章目录 一. 访问[spring官网], 找到Spring Framework,点击红色标记github仓库,下载对应的分支代码,本人下载5.1.x二. 安装gradle三. 调整spring-framework配置四. 开始编译五.导入idea 一. 访问[spring官网], 找到Spring Framework&#xf…

使用Python和wxPython下载视频封面

介绍: 在在线视频内容的世界中,是领先的平台。拥有数十亿的视频,拥有引人注目的封面图像非常重要,以吸引观众。在本博客文章中,我们将探讨如何使用Python和wxPython模块下载视频封面。我们将提供两个代码示例&#xff…

图像数据做并行规约时,如何确定共享内存和网格的大小

做并行规约时,如何确定共享内存和网格的大小 1、为什么要确定共享内存和网格大小2、共享内存大小定义3、网格大小 注:1、这里记录使用笔记,不对cuda的名词做解释,没有详细数学原理和代码。 2、环境:cuda8.0&#xff0c…

密码学 | Random Oracle 随机预言机

​ 🥑原文:究竟什么才是随机预言机呢? - 玄星的回答 🥑答主指出: 英文维基明明对 随机预言机 给出了两个完全不同的理解,但这两个理解之间的连接词却是 “Stated differently”,即 “换句话说…

STM32通过ESP8266(MQTT)连接新版ONENET(2024/4/23)(保姆级教程)附运行结果

⏩ 大家好哇!我是小光,想要成为系统架构师的嵌入式爱好者。 ⏩在各种嵌入式系统中我们经常会使用上位机去做显示,本文对STM32通过ESP8266连接最新版的ONENET做一个详细教程。 ⏩感谢你的阅读,不对的地方欢迎指正。 STM32通过ESP82…

【图说】VMware Ubuntu22.04 详细安装教程

前言 无论是从事 Linux 开发工作,还是希望电脑运行双系统,VMware 虚拟机都是我们日常工作不可或缺的工具。本章将会重点介绍 VMware 安装流程,以及在 VMware 上如何运行、使用 Ubuntu22.04 系统。 一、VMware 下载安装 1.1 VMware 官网下载…

如何查看西门子触摸屏的镜像版本?

如何查看西门子触摸屏的镜像版本? 当软件组态的设备版本和实际设备镜像之间版本不同时,那么在传输项目时就会出现兼容性冲突的提示。 镜像版本说明: 如何调整镜像版本(升级或降级)? 为了使用新功能以及提高面板的稳定性、可靠性和可用性,建议使用新的镜像版本。 一、 通…

目标检测算法是指什么?

一、目标检测算法是指什么? 目标检测算法是计算机视觉领域的一个重要分支,它旨在识别和定位图像中的目标对象。以下是目标检测算法的相关内容: 目标检测的核心问题:目标检测需要解决的两个核心问题是“目标是什么”和“目标在哪里…

【计算机网络】(三)物理层 - 通信基础

文章目录 【计算机网络】(三)物理层 - 通信基础前言3.1 物理层的基本概念3.2 数据通信的基础知识3.2.1 数据、信号、码元3.2.2 信源、信宿、信道3.2.3 编码、调制3.2.3.1 基带调制(编码)3.2.3.2 带通调制(调制&#xf…

想搭建跨境电商网站?掌握这些源码关键点,助您轻松上线

随着全球化的发展和电子商务的兴盛,跨境电商已成为企业拓展国际市场的主要方式之一。然而,想要搭建一个成功的跨境电商网站并非易事,其中关键之一就是掌握跨境电商网站源码的要点。在本文中,我将为您深入探讨如何选择、优化和维护…

一个java项目中,如何使用sse协议,构造一个chatgpt的流式对话接口

前言 如何注册chatGPT,怎么和它交互,本文就不讲了;因为网上教程一大堆,而且你要使用的话,通常会再包一个算法服务,用来做一些数据训练和过滤处理之类的,业务服务基本不会直接与原生chatGPT交互。…