R 线性规划-复杂约束下的利润优化
我想用二进制决策变量解决一个线性优化问题,这个问题将在R中解决(目前我正在使用Rglkp包)。但是,我在设置约束时遇到问题 假设一家公司想要决定销售产品的季度,以实现利润最大化。但是,如果他们想卖出,他们必须至少连续三个季度卖出。这是他们的利润可能是什么样子的一个例子R 线性规划-复杂约束下的利润优化,r,optimization,linear-programming,glpk,R,Optimization,Linear Programming,Glpk,我想用二进制决策变量解决一个线性优化问题,这个问题将在R中解决(目前我正在使用Rglkp包)。但是,我在设置约束时遇到问题 假设一家公司想要决定销售产品的季度,以实现利润最大化。但是,如果他们想卖出,他们必须至少连续三个季度卖出。这是他们的利润可能是什么样子的一个例子 profits <- tibble(year = 1, quarter = 1:4, profit = c(23, -4, 6, -2)) 利润这可以建模为: 其
profits <- tibble(year = 1,
quarter = 1:4,
profit = c(23, -4, 6, -2))
利润这可以建模为:
其中n是生产运行的最小长度
这只需要T=12
约束
可能的生产运行总数>=n(其中n=5,T=12
)为42
当然,对于更长的规划周期,这种差异会增加(相当显著)。例如,对于T=24,n=5
我们有24约束与4316可能的解决方案
最佳解决方案可以如下所示:
像这样的约束有很多
cons.m <- matrix(c( 2, -1, -1, 0,
-2, 3, -2, -1,
-1, -2, 3, -1,
0, -1, -2, 2),
nrow = 4, byrow = T)
solution <- Rglpk_solve_LP(obj = profits$profit,
mat = cons.m,
dir = rep("<=", 4),
rhs = rep(0, 4),
types = rep("B", 4),
max = T)
solution$solution
[1] 1 1 1 0
profits.new <- tibble(year = rep(1:3, each = 4),
quarter = 1:12,
profit = runif(12, -20, 20))