我有两个输入矩阵,dt(10,3)& wt(3,3),我需要用来找到最优决策矩阵(相同维度),Par(10,3),以便最大化目标函数。 R代码下面会给出问题的一些方向(在这里使用Sample输入) -
#Input Matrices
dt <- matrix(runif(300),100,3)
wt <- matrix(c(1,0,0,0,2,0,0,0,1),3,3) #weights
#objective function
Obj <- function(Par) {
P = matrix(Par, nrow = 10, byrow=F) # Reshape
X = t((dt%*%wt)[,1])%*%P[,1]
Y = t((dt%*%wt)[,2])%*%P[,2]
Z = t((dt%*%wt)[,3])%*%P[,3]
as.numeric(X+Y+Z) #maximize
}
现在我正在努力将以下约束应用于该问题:
1) Matrix, Par can only have binary values (0 or 1)
2) rowSums(Par) = 1 (Basically a row can only have 1 in one of the three columns)
3) colSums(Par[,1]) <= 5, colSums(Par[,2]) <= 6, & colSums(Par[,3]) <= 4
4) X/(X+Y+Z) < 0.35, & Y/(X+Y+Z) < 0.4 (X,Y,Z are defined in the objective function)
我尝试在constrOptim中编码约束,但不确定如何输入二进制和&amp;整数约束。我正在阅读lpSolve,但无法弄清楚。任何帮助非常感谢。谢谢!
答案 0 :(得分:0)
我相信这确实是一个MIP所以没有凸性的问题。如果我是正确的,模型可能看起来像:
此模型可以轻松转录为R.请注意,LP / MIP求解器不使用函数作为目标和约束(与NLP求解器相对)。在R中,通常使用LP系数建立矩阵。
注意:我必须对列总和进行更大的限制(我使用了50,60,40)。
答案 1 :(得分:0)
基于Erwin的响应,我能够在R中使用lpSolve来制定模型。但是仍然在努力将最终约束添加到模型中(上面我的问题中的第4个约束)。这是我到目前为止能够编码的内容:
lpp_code;lpp_libelle
953082;IMP RES SEPRAFILM 13X15CM 430103 (A56D)
3115092;ENDOPROT CORONAIRE, STENT LIB. ZOTAROLIMUS, MEDTRONIC,RESOLUTE INTEGRITY,3MM.
非常感谢任何帮助我到达终点线的帮助:)
由于