如何编写引用R优化中目标的约束

时间:2018-12-11 02:03:55

标签: r optimization solver infrastructure r-optimization

这是我想在R中最大化的目标:

  

AX1 + BX2 + CX3 + DX4

存在以下约束

  

0> = S2> = 8

     

0> = S3> = 8

     

0> = S4> = 8

     

0> = S5> = 8

哪里

  

S2 = X1 + V

     

S3 = X2 + X1 + V

     

S4 = X3 + X2 + X1 + V

     

S5 = X4 + X3 + X2 + X1 + V

基本上,约束条件引用了目标。

例如,如果V = 4,X1 = 2,则S2 =6。(因此,不违反0> = S2> =。

如何在约束函数中引用目标(我使用了L_Objective函数)?

预先感谢

1 个答案:

答案 0 :(得分:0)

以下内容无效吗?

library(ROI)

obj <- L_objective(c(A, B, C, D)

const.mat <- matrix(c(1, 0, 0, 0,
                      1, 1, 0, 0,
                      1, 1, 1, 0,
                      1, 1, 1, 1),
                    nrow = 4)
const <- L_constraint(rbind(const.mat, constmat),
                      dir = c(rep(">=", 4), rep("<=", 4)),
                      rhs = c(rep(0-V, 4),    rep(8-V, 4)))
op <- op(obj, const, maximum = TRUE)
out <- ROI_solve(op)

当然,我要为A,B,C,D和V填写正确的值。如果满足最后一个约束,其他约束将自动出现,因此这是唯一重要的约束。