使用 lpsolve 为决策变量子集的比例定义约束

Using lpsolve to define constraint for the proportion over a subset of decision variables

我正在制定一个 lp 解决方案,但在定义约束方面遇到困难。

假设我有 9 个决策变量,{x1,x2...n}

假设我还有一个涉及所有决策变量子集的约束:

x1 / (x1+x2+x3) = 40/100

那我要怎么写才能让lpsolve使用呢?

我试过:

add.constraint(model, c(1,0,0,0,0,0,0,0,0), "=", c(.4,.4,.4,0,0,0,0,0,0))

add.constraint(model, c(0.4,0,0,0,0,0,0,0,0), "=", c(1,1,1,0,0,0,0,0,0))

提前致谢。

假设你的意思是 (x1+x2+x3) 我们有

x1 / (x1+x2+x3) = 40/100

相当于

x1 = (40/100) (x1+x2+x3)

相当于

(1-40/100)x1 - (40/100)x2 - (40/100)x3 = 0

为了得到一个完整的问题,假设下面的objective是ones并且还要添加9个约束x[i] <= 1, i = 1, ..., 9 in在这种情况下,我们有以下最大化问题:

library(lpSolve)

ones <- rep(1, 9)
a <- c(1-40/100, -40/100, -40/100, 0, 0, 0, 0, 0, 0)
A <- rbind(a, diag(9))
lp("max", ones, A, c("=", rep("<=", 9)), c(0, ones))