我对这实际上是如何工作的感到困惑。我不知道二进制在CPLEX中是什么意思。问题是:
制造经理负责最小化采购
接下来四个月的成本(原材料加存储成本)。
在表3.4中,可以找到一单位原材料的成本和
对于月末存储的每个单元。原材料的任何单位
在给定月份购买的可用于满足相同的需求
或者存储以满足未来几个月的需求。在
1月初没有库存,也没有最低库存
任何月份的库存要求。
在接下来的四个月里,原材料供应商已经
特别优惠:在任何特定月份购买超过200的所有单位将
有2 e的折扣。例如,如果购买350个单位
在第1个月订购,首批200套将以12 e的价格出售,以及
以下150件将以每件10 e的价格出售。
1.定义决策变量(提供每个变量的简要定义
定义变量集)、目标函数和约束
最小化总采购成本的线性规划模型
解决方案:
CPLEX码
Minimize
cost : 12 q1 + 14 q2 + 16 q3 + 18 q4 + 10 r1 + 12 r2 + 14 r3 + 16
r4 + 2 s1 + 2 s2 + 2 s3 + 2 s4
Subject To
d1 : q1 + r1 - s1 = 150
d2 : s1 + q2 + r2 - s2 = 200
d3 : s2 + q3 + r3 - s3 = 250
d4 : s3 + q4 + r4 - s4 = 150
l1 : q1 - 200 b1 >= 0
l2 : q2 - 200 b2 >= 0
l3 : q3 - 200 b3 >= 0
l4 : q4 - 200 b4 >= 0
m1 : r1 - 10000 b1 <= 0
m2 : r2 - 10000 b2 <= 0
m3 : r3 - 10000 b3 <= 0
m4 : r4 - 10000 b4 <= 0
Bounds
0 <= q1 <= 200
0 <= q2 <= 200
0 <= q3 <= 200
0 <= q4 <= 200
Binary
b1
b2
b3
b4
End
我的代码:
library ( lpSolve )
#defining parameters
obj.fun <- c(12 , 14, 16, 18, 10, 12, 14, 2, 2, 2, 2)
constr <- matrix (c(1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0,
0, 1, 0, 0, 0,1,0,0,1,-1,0,0,
0,0,1,0,0,0,1,0,0,1,-1,0
0,0,0,4,0,0,0,1,0,0,1,-1) , ncol = 4 , byrow =TRUE )
constr.dir <- c("=","=", "=", "=")
rhs <- c(150 , 200 , 250, 150)
#solving model
prod.sol <- lp ("max", obj.fun , constr , constr.dir , rhs ,compute.sens = TRUE)
#accessing to R output
prod.sol$obj.val
prod.sol$solution
prod.sol$duals
#sensibility analysis results
prod.sol$duals.from
prod.sol$duals.to
prod.sol$sens.coef.from
prod.sol$sens.coef.to