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

问题描述

我正在制作lp解决方案,但坚持定义约束。

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

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

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

那我怎么写这个让lpsolve使用呢?

我尝试过:

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

add.constraint(model,c(0.4,1,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

为了得到一个完整的问题,假设目标是下面的ones并添加9个约束x [i]

library(lpSolve)

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