问题描述
我正在制作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))