数学建模之钢管下料问题案例分析 下载本文

内容发布更新时间 : 2024/5/18 10:13:20星期一 下面是文章的全部内容请认真阅读。

钢管下料问题

某钢管零售商从钢管厂进货,将钢管按照顾客的要求切割后售出,从钢管厂进货时得到的原料钢管都是19m。

(1)现在一客户需要50根4m、20根6m和15根8m的钢管。应如何下料最节省?

(2) 零售商如果采用的不同切割模式太多,将会导致生产过程的复杂化,从而增加生产和管理成本,所以该零售商规定采用的不同切割模式不能超过3种。此外,该客户除需要(1)中的三种钢管外,还需要10根5m的钢管。应如何下料最节省。

问题(1)分析与模型建立

首先分析1根19m的钢管切割为4m、6m、8m的钢管的模式,所有模式相当于求解不等式方程:

4k1?6k2?8k3?19

的整数解。但要求剩余材料r?19?(4k1?6k2?8k3)?4。 容易得到所有模式见表1。

表1 钢管切割模式 模式 1 2 3 4 5 6 7

决策变量 用xi表示按照第i种模式(i=1,2,…,7)切割的原料钢管的根数。

以切割原料钢管的总根数最少为目标,则有

minz?x1?x2?x3?x4?x5?x6?x7 约束条件 为满足客户的需求,4米长的钢管至少50根,有

4m 4 3 2 0 0 1 1 6m 0 1 0 0 3 1 2 8m 0 0 1 2 0 1 0 余料(m) 3 1 3 3 1 1 3 4x1?3x2?2x3?x6?x7?50 6米长的钢管至少20根,有 x2?3x5?x6?2x7?20 8米长的钢管至少15根,有 x3?2x4?x6?15 因此模型为:

minz?x1?x2?x3?x4?x5?x6?x7

?4x1?3x2?2x3?x6?x7?50?x?3x?x?2x?20?2567 s..t??x3?2x4?x6?15??xi取整,i?1,2,,7解得:

x1?0,x2?12,x3?0,x4?0,x5?0,x6?15,x7?0

目标值z=27。

即12根钢管采用切割模式2:3根4m,1根6m,余料1m。

15根钢管采用切割模式6:1根4m,1根6m,1根8m,余料1m。 切割模式只采用了2种,余料为27m,使用钢管27根。

LINGO程序:

model: sets:

model/1..7/:x; endsets

min=x(1)+x(2)+x(3)+x(4)+x(5)+x(6)+x(7); 4*x(1)+3*x(2)+2*x(3)+x(6)+x(7)>=50; x(2)+3*x(5)+x(6)+2*x(7)>=20; x(3)+2*x(4)+x(6)>=15; @for(model(i):@gin(x(i))); end

问题(2)模型建立

首先分析1根19m的钢管切割为4m、6m、8m、5m的钢管的模式,所有模式相当

于求解不等式方程: 4k1?6k2?8k3?5k4?19

的整数解。但要求剩余材料r?19?(4k1?6k2?8k3)?4。

利用Matlab程序求出所有模式见表2。

求出所有模式的Matlab程序: number=0; for k1=0:4 for k2=0:3 for k3=0:2 for k4=0:3

r=19-(4*k1+6*k2+8*k3+5*k4); if(r>=0)&(r<4)

number=number+1;

fprintf('- - - - - -\\n',number,k1,k2,k3,k4,r); end

end end end end

表2 钢管切割模式 模式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 决策变量 用xi表示按照第i种模式(i=1,2,…,16)切割的原料钢管的根数。

4m 0 0 0 0 0 0 1 1 1 1 2 2 2 3 3 4 6m 0 0 1 1 2 3 0 0 1 2 0 0 1 0 1 0 8m 1 2 0 1 0 0 0 1 1 0 0 1 0 0 0 0 5m 2 0 2 1 1 0 3 1 0 0 2 0 1 1 0 0 余料(m) 1 3 3 0 2 1 0 2 1 3 1 3 0 2 1 3