参考资料
- 1、《数学模型》第四版 姜启源 P123
- 2、R语言-最优化整数规划线性规划求解 Rsymphony_package
问题
某钢管零售商从钢管厂进货,将钢管按照顾客要求切割后售出,从钢管厂进货时得到的原料钢管都是19米。 (1)现有一客户需要50根4m、20根6m、和15根8m的钢管,应如何下料最节省?
问题分析
- 1 确定切割模式,即一根19m钢管我可以选择切成4根4m,我也可以选择切成3根4m叫1根6m,我可以选择的有多少种切割方式。
image.png
- 2 确定最节省的标准,此题为两种:一 为切割后剩余的总余料最少;二为切割原料钢管的总根数最少
模型建立
决策变量:用Xi表示第i种模式(i=1,2,…,7)切割的原料钢管的根数,Xi为非负整数
决策目标:切割后剩余的总余料最小
min Z1 = 3X1 X2 3X3 3X4 X5 X6 3X7
约束条件:
4X1 3X2 2X3 X4 X5 >= 50
X2 2X4 X5 3X6 >= 20
X3 X5 2X7 >= 15
R语言Rsymphony包求解
代码语言:javascript复制obj<-c(3,1,3,3,1,1,3)
length(obj)
mat<-matrix(c(4,3,2,1,1,0,0,
0,1,0,2,1,3,0,
0,0,1,0,1,0,2),nrow=3,byrow=TRUE)
dir<-c(">=",">=",">=")
rhs<-c(50,20,15)
types<-c("I","I","I")
Rsymphony_solve_LP(obj,mat,dir,rhs,types=types,max=F)
#output
$solution
[1] 0 12 0 0 15 0 0
$objval
[1] 27
$status
TM_OPTIMAL_SOLUTION_FOUND
0
status==0表示找到解status== 1表示无解
最优解 X2==12;X5==15
此为剩余的总余料最少;原料钢管的总根数最少更换决策目标函数即可。