我正在尝试编写一个程序,将个体分配到组(P1,P2,P3)中,以使总体幸福感(以df
表示)最高。每个个体都应该被分配到一个组中。组P1应该有200个个体,P3应该有500个个体,P3应该有300个个体。
library(lpSolve)
df <- data.frame(P1 = runif(1000, min=0, max=1),
P2 = runif(1000, min=0, max=1),
P3 = runif(1000, min=0, max=1))
df <- data.matrix(df)
rows <- t(rep(1, ncol(df))) %x% diag(nrow(df))
columns <- diag(ncol(df)) %x% t(rep(1, nrow(df)))
L <- list(columns, rows, columns)
nrs <- sapply(L, nrow)
mod <- lp(direction = "max",
objective.in = as.vector(df),
const.mat = do.call("rbind", L),
const.dir = ###,
const.rhs = ###,
all.bin = TRUE)
matrix(mod$solution, nrow(df))
字符串
如何指定const.dir
和const.rhs
?
1条答案
按热度按时间jtoj6r0c1#
这应该是可行的。为了在将个人分配到组时最大化总体幸福,您可以使用线性规划来解决这个问题。const.dir和const.rhs参数定义了问题的约束条件。在您的情况下,您希望确保每个组都有特定数量的个人。
字符串