CPLEX到R语言的转换

CPLEX到R语言的转换,r,linear-programming,cplex,R,Linear Programming,Cplex,我不明白这到底是怎么回事。我不知道二进制在CPLEX中是什么意思。问题是: 制造经理负责最大限度地减少采购 接下来四个月的成本(原材料加上储存成本)。 在表3.4中可以找到一单位原材料的成本和 每月的原材料需求量。存储成本等于2e 对于月末储存的每个单元。任何单位的原材料 在指定月份购买的可用于满足相同的需求 月,或储存以满足未来数月的需求。在 第一个月初没有库存,也没有最低库存 任何月份的库存要求。 在接下来的四个月里,原材料供应商做出了 特价:在任何一个月内购买超过200台的所有单元都将 有

我不明白这到底是怎么回事。我不知道二进制在CPLEX中是什么意思。问题是:

制造经理负责最大限度地减少采购 接下来四个月的成本(原材料加上储存成本)。 在表3.4中可以找到一单位原材料的成本和 每月的原材料需求量。存储成本等于2e 对于月末储存的每个单元。任何单位的原材料 在指定月份购买的可用于满足相同的需求 月,或储存以满足未来数月的需求。在 第一个月初没有库存,也没有最低库存 任何月份的库存要求。
在接下来的四个月里,原材料供应商做出了 特价:在任何一个月内购买超过200台的所有单元都将 有2E的折扣。例如,如果购买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
最小化
成本:第一季度12+第二季度14+第三季度16+第四季度18+r1+r2+r3+16
r4+2 s1+2 s2+2 s3+2 s4
从属于
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二进制表示b1、b2、b3、b4为0或1,因此如果b1==1且您有10000 b1,则表示您在第一个月购买10000*1=10000件原材料,并且在第2、3或4个月内您不会从该解决方案中购买任何原材料

在英语中,二进制变量用于表示完全关闭或完全打开的变量

正如解决方案所述,“最好的选择是在第1个月购买所有单元”

如何创建该约束?你可以使用二进制变量

你的老师正在准备让你学习混合整数规划,它部分依赖于二进制变量

根据您使用的cplex包装,请参见


或者,搜索二进制变量

二进制表示b1、b2、b3、b4为0或1,因此,如果b1==1,并且您有10000个b1,则表示您在第一个月购买10000*1=10000件原材料,并且从解决方案中,您在第2、3或4个月内不会购买任何原材料

在英语中,二进制变量用于表示完全关闭或完全打开的变量

正如解决方案所述,“最好的选择是在第1个月购买所有单元”

如何创建该约束?你可以使用二进制变量

你的老师正在准备让你学习混合整数规划,它部分依赖于二进制变量

根据您使用的cplex包装,请参见

或,并搜索二进制变量

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