R 使用optimx选择在给定约束条件下使变量最大化的数据集子集?
我试图理解如何在optimx中正确设置约束,以便在给定约束(总工资、玩家数量等)的情况下,最大化该数据框架内的变量总和(总性能)。感谢您的指导。理想情况下,最终结果会根据优化更改每个玩家的on.team变量(真/假)。以下是我迄今为止的尝试:R 使用optimx选择在给定约束条件下使变量最大化的数据集子集?,r,R,我试图理解如何在optimx中正确设置约束,以便在给定约束(总工资、玩家数量等)的情况下,最大化该数据框架内的变量总和(总性能)。感谢您的指导。理想情况下,最终结果会根据优化更改每个玩家的on.team变量(真/假)。以下是我迄今为止的尝试: # Optimize team roster require(optimx) # player data players <- data.frame(player.name = c("player1", "player2", "player3"
# Optimize team roster
require(optimx)
# player data
players <- data.frame(player.name = c("player1", "player2", "player3", "player4", "player5"),
position = c("goalkeeper", "defender", "midfielder", "forward", "midfielder"),
performance = c(10, 20, 30, 40, 50),
salary = c(50000, 80000, 100000, 60000, 70000),
on.team = c(TRUE, TRUE, TRUE, TRUE, TRUE)
)
# constraints
max.players <- 3
max.team.salary <- 300000
# parameters to optimize (on.team) with constraints: team.count.players <= max.players and team.salary <= max.team.salary
# function to maximize combined performance of selected players
fn.optimize <- function(players) {
team.performance <- aggregate(performance ~ performance, data = subset(players, on.team == TRUE), FUN = sum)
team.salary <- aggregate(salary ~ salary, data = subset(players, on.team == TRUE), FUN = sum)
team.count.players <- aggregate(on.team ~ on.team, data = subset(players, on.team == TRUE), FUN = sum)
return(as.numeric(team.performance))
}
# Select the optimium group of players
optimx(players$on.team, function(x) fn.optimize(players))
#优化团队花名册
需要(optimx)
#玩家数据
球员