2024年第二十一届 五一杯 (A题)大学生数学建模挑战赛 | 多目标优化问题,深度学习分析 | 数学建模完整代码解析

DeepVisionary 每日深度学习前沿科技推送&顶会论文&数学建模与科技信息前沿资讯分享,与你一起了解前沿科技知识!

本次DeepVisionary带来的是五一杯的详细解读:

完整内容可以在文章末尾全文免费领取&阅读!

在这里插入图片描述

第一个问题:给定如图2所示的下料切割布局N1,建立数学模型,设计最优切割路径方案,并给出最优切割路径的空程总长度。

首先,根据题意,切割路径应满足空程最短的原则,即切割线的总长度应最小。假设钢板的宽度为w,长度为l,切割起始点为A(0,0),切割终点为B(w,l)。将钢板划分为若干个矩形区域,每个矩形区域的宽度为xix_ixi,长度为yiy_iyi,则每条切割线的长度为xi2+yi2\sqrt{x_i^2+y_i^2}xi2+yi2

设钢板中有n个矩形区域,即有n条切割线,且每条切割线都满足空程最短原则。由于切割起始点为A(0,0),每次切割都是从右下角开始,所以每个矩形区域的宽度xix_ixi都是固定的,且xix_ixi的取值范围为(0,w)(0, w)(0,w)。而长度yiy_iyi的取值范围为(0,l)(0, l)(0,l)

因此,问题1可以建模为如下的优化问题:

min⁡xi,yi∑i=1nxi2+yi2s.t.∑i=1nxi=w∑i=1nyi=lxi≥0,yi≥0,i=1,2,...,n \begin{align} \min_{x_i,y_i} \quad & \sum_{i=1}^{n} \sqrt{x_i^2+y_i^2} \\ s.t. \quad & \sum_{i=1}^{n} x_i = w \\ & \sum_{i=1}^{n} y_i = l \\ & x_i \geq 0, y_i \geq 0, i=1,2,...,n \end{align} xi,yimins.t.i=1nxi2+yi2 i=1nxi=wi=1nyi=lxi0,yi0,i=1,2,...,n

其中,xix_ixi表示第i个矩形区域的宽度,yiy_iyi表示第i个矩形区域的长度,n为矩形区域的个数。

因为切割起始点为右下角点,可以将问题简化为一维问题。假设钢板的宽度为w,长度为l,切割起始点为A(0,0),切割终点为B(w,l)。将钢板划分为若干个矩形区域,每个矩形区域的宽度为xix_ixi,切割点的位置为aia_iai,则每条切割线的长度为xi2+ai2\sqrt{x_i^2+a_i^2}xi2+ai2

设钢板中有n个矩形区域,即有n条切割线,且每条切割线都满足空程最短原则。由于切割起始点为A(0,0),每次切割都是从右下角开始,所以每个矩形区域的宽度xix_ixi都是固定的,且xix_ixi的取值范围为(0,w)(0, w)(0,w)。而切割点的位置aia_iai的取值范围为(0,l)(0, l)(0,l)

因此,问题1可以建模为如下的优化问题:

min⁡xi,ai∑i=1nxi2+ai2s.t.∑i=1nxi=wai≥0,i=1,2,...,n \begin{align} \min_{x_i,a_i} \quad & \sum_{i=1}^{n} \sqrt{x_i^2+a_i^2} \\ s.t. \quad & \sum_{i=1}^{n} x_i = w \\ & a_i \geq 0, i=1,2,...,n \end{align} xi,aimins.t.i=1nxi2+ai2 i=1nxi=wai0,i=1,2,...,n

其中,xix_ixi表示第i个矩形区域的宽度,aia_iai表示第i个切割点的位置,n为切割点的个数。

由于问题1是一个最小值的优化问题,可以使用最优化算法求解。其中,最优切割路径的空程总长度即为目标函数的最优值。

首先,根据题目要求,我们将下料切割布局图N1进行简化,只考虑切割线和钢板边界线,如图6所示。可见,问题1实质上是求一个从切割起始点B1到钢板边界线B3-B4的最短路径,且路径上不能碰到任何切割线(即空程最短)。

根据题目中的注释(1),我们可以得出,空程最短的路径一定是由水平和垂直运动路径组成的。而根据注释(2),题目中的实线均为切割线,所以我们只需要考虑如何设计水平和垂直运动路径来连接起始点和终点,使得路径上不碰到任何切割线。

根据图6,我们可以得出,最优切割路径可以分为两个部分:水平运动路径和垂直运动路径,如图7所示。其中,水平运动路径由两条线段组成,分别为从起始点B1到最左边的切割线上的点A,以及从最右边的切割线上的点C到终点B2。垂直运动路径由两条线段组成,分别为从点A到点D,以及从点D到点C。从图7可以看出,这样设计的路径可以保证空程最短。

根据题目要求,我们需要求出水平路径和垂直路径的长度,然后相加就可以得到最优路径的空程总长度。

水平路径的长度为:

Shorizontal=∣B1A∣+∣CB2∣=∣B1A∣+∣B3B4∣−∣CB2∣=2+22+12−1=2+5S_{horizontal} = |B_1A| + |CB_2| = |B_1A| + |B_3B_4| - |CB_2| = 2 + \sqrt{2^2 + 1^2} - 1 = 2 + \sqrt{5}Shorizontal=B1A+CB2=B1A+B3B4CB2=2+22+12 1=2+5

垂直路径的长度为:

Svertical=∣AD∣+∣DC∣=∣AD∣+∣B3B4∣−∣AD∣=22+12=5S_{vertical} = |AD| + |DC| = |AD| + |B_3B_4| - |AD| = \sqrt{2^2 + 1^2} = \sqrt{5}Svertical=AD+DC=AD+B3B4AD=22+12 =5

所以,最优切割路径的空程总长度为:

Stotal=Shorizontal+Svertical=2+5+5=2+25≈6.47S_{total} = S_{horizontal} + S_{vertical} = 2 + \sqrt{5} + \sqrt{5} = 2 + 2\sqrt{5} \approx 6.47Stotal=Shorizontal+Svertical=2+5 +5 =2+25 6.47

首先,根据题目要求,我们可以将钢板划分为若干个矩形区域,每个矩形区域为一个切割件。然后,我们需要确定每个切割件的位置和切割顺序,使得切割路径总空程最小。设钢板的长为LLL,宽为WWW,切割件的长为lil_ili,宽为wiw_iwi,切割的位置为(xi,yi)(x_i,y_i)(xi,yi),切割顺序为i=1,2,⋯ ,ni=1,2,\cdots,ni=1,2,,n,则总空程为:

S=∑i=1n(xi−xi−1)+(yi−yi−1)S=\sum_{i=1}^{n}{(x_i-x_{i-1})+(y_i-y_{i-1})}S=i=1n(xixi1)+(yiyi1)

其中,x0=y0=0x_0=y_0=0x0=y0=0,表示切割起始点。为了使总空程最小,我们需要最优化如下的目标函数:

min⁡S=∑i=1n(xi−xi−1)+(yi−yi−1)s.t.xi=li+xi−1yi=wi+yi−1xi≤Lyi≤Wxi,yi≥0i=1,2,⋯ ,n\begin{aligned} \min\quad &S=\sum_{i=1}^{n}{(x_i-x_{i-1})+(y_i-y_{i-1})}\\ s.t.\quad &x_i=l_i+x_{i-1}\\ &y_i=w_i+y_{i-1}\\ &x_i\leq L\\ &y_i\leq W\\ &x_i,y_i\geq 0\\ &i=1,2,\cdots,n \end{aligned}mins.t.S=i=1n(xixi1)+(yiyi1)xi=li+xi1yi=wi+yi1xiLyiWxi,yi0i=1,2,,n

利用拉格朗日乘子法,我们可以得到如下的方程组:

{ 1+λ1=01+λ2=01+λ3=0li+xi−1−xi=0wi+yi−1−yi=0xi−li−L+0.5λ1=0yi−wi−W+0.5λ2=0xi+0.5λ3=0yi+0.5λ3=0\begin{cases} 1+\lambda_1=0\\ 1+\lambda_2=0\\ 1+\lambda_3=0\\ l_i+x_{i-1}-x_i=0\\ w_i+y_{i-1}-y_i=0\\ x_i-l_i-L+0.5\lambda_1=0\\ y_i-w_i-W+0.5\lambda_2=0\\ x_i+0.5\lambda_3=0\\ y_i+0.5\lambda_3=0 \end{cases} 1+λ1=01+λ2=01+λ3=0li+xi1xi=0wi+yi1yi=0xiliL+0.5λ1=0yiwiW+0.5λ2=0xi+0.5λ3=0yi+0.5λ3=0

其中,λ1,λ2,λ3\lambda_1,\lambda_2,\lambda_3λ1,λ2,λ3为拉格朗日乘子。将上述方程组化简,可得到:

{ xi=L−li2yi=W−wi2\begin{cases} x_i=\frac{L-l_i}{2}\\ y_i=\frac{W-w_i}{2} \end{cases}{ xi=2Lliyi=2Wwi

因此,切割顺序为从左到右,从下到上依次切割矩形区域,切割顺序为:

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值