线性规划是运筹学的一个重要分支,广泛应用于军事作战、经济分析、经营管理和工程技术等方面。为合理地利用有限的人力、物力、财力等资源作出的最优决策,提供科学的依据。

一、钢管下料问题

零售商进货钢管都是19m长,现有客户购买50根4m长、20根6m长、15根8m长的钢管,问钢管如何切割?切割后的余料最少?

问题分析
因为切割目标是切割后余料最少,通常假设一个合理的切割模式的余料不应该大于或等于客户需要的钢管的最小尺寸。在这种合理性假设下,一根19米长的钢管的合理切割模式如下表所示:

4m钢管数 6m钢管数 8m钢管数 余料/m
模式一 4 0 0 3
模式二 3 1 0 1
模式三 2 0 1 3
模式四 1 2 0 3
模式五 1 1 1 1
模式六 0 3 0 1
模式七 0 0 2 3

数学建模
我们用\(x_i\)表示第\(i\)种模式切割的颜料钢管的根数,模型如下:

\[\min Z_1=3 x_1+x_2+3 x_3+3 x_{4}+x_5+ x_6+3x_7
\]

\[\begin{aligned}
& 4 x_1+3 x_2+2 x_3+x_4+x_5 \geq 50 \\
& x_2+2 x_4+x_5+3 x_6 \geq 20 \\
& x_3+x_5+2 x_7 \geq 15
\end{aligned}
\]

二、求解R程序

library(lpSolve)
a1 =matrix( c(-4,-3,-2,-1,-1,0,0,0,-1,0,-2,-1,-3,0,0,0,-1,0,-1,0,-2),ncol=7,byrow=T)

f.obj <- c(3, 1, 3, 3, 1, 1, 3)
f.con=(-1)*a1
f.dir <- c('>=','>=','>=')
f.rhs <- c(50,20,15)
jie=lp('min', f.obj, f.con,f.dir,f.rhs,all.int=TRUE)
jie$solution
#[  0 12  0  0 15  0  0]
jie$objval
#27

按照模式2切割12根钢管,按照模式5切割15根钢管切割后余料最少,共切割27根钢管,余料为27m。

三、钢管下料问题的拓展

3.1 二种切割模式的约束

零售商如果采用的不同切割模式太多,将会导致生产过程的复杂化,从而增加生产和管理成本,所以零售商规定采取的切割模式不超过2种。

按模式三和模式六下料。
此外,该客户除了需要上述提到的三种钢管外,还需要10根5m的钢管,问应如何下料最节省?(略)

3.2 总量最少的约束

节省的两种标准;原料钢管剩余总余量最小;所用原料钢管总数量最少。
目标函数:

\[\min Z_1=3 x_1+x_2+3 x_3+3 x_{4}+x_5+x_6+3x_7
\]

\[\min Z_2=x_1+x_2+x_3+x_4+x_5+x_6+x_7
\]

\[\begin{aligned}
& 4 x_1+3 x_2+2 x_3+x_4+x_5 \geq 50 \\
& x_2+2 x_4+x_5+3 x_6 \geq 20 \\
& x_3+x_5+2 x_7 \geq 15
\end{aligned}
\]

整数约束: \(x_i\) 为整数
求解得:目标1: \(x_2=12, x_5=15\) 共 27 根,余 \(27 \mathrm{~m}\);目标2:\(x_2=15, x_5=5,x_7=5\) 共 25 根,余 \(35 \mathrm{~m}\)

按照目标1切割需要多生产1根4m、7根6m,共46m,正好等于2根原料(38m)再加8m。若余料没有用处,通常以总根数最小为目标更好。

3.3 思考题

某单位需加工制作100套钢架,每套需用长度为1m、2.1m、2.9m的圆钢各一根。已知原料长6.9m,如何下料,使用的原料最省?(选自司守奎,孙玺菁所著数学建模算法与应用)
考虑到没有限制下料方式,可用穷举法列举所有可能的下料方案,在列举时,应当注意到,较优的下料方案余料小于1m,采用“由长到短,由无到有”的原则列举。

第1种 第2种 第3种 第4种 第5种 第6种 第7种
2.9m 0 0 0 0 1 1 2
2.1m 0 1 2 3 0 1 0
1m 6 4 2 0 4 1 1
合计 6 6.1 6.2 6.3 6.9 6 6.8
余料 0.9 0.8 0.7 0.6 0 0.9 0.1

参考文献

  1. 线性规划—钢管下料问题及MATLAB求解
  2. 线性规划--钢管下料问题及引申
  3. 数学建模——线性规划