R 线性规划-复杂约束下的利润优化

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)) 利润这可以建模为: 其

我想用二进制决策变量解决一个线性优化问题,这个问题将在R中解决(目前我正在使用Rglkp包)。但是,我在设置约束时遇到问题

假设一家公司想要决定销售产品的季度,以实现利润最大化。但是,如果他们想卖出,他们必须至少连续三个季度卖出。这是他们的利润可能是什么样子的一个例子

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))