0

这是我想在 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 函数)?

提前致谢

4

1 回答 1

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 填写正确的值,我假设你有。如果满足最后一个约束,则其他约束将自动满足,因此它是唯一重要的约束。

于 2018-12-11T03:07:35.513 回答