R 使用optimx选择在给定约束条件下使变量最大化的数据集子集?

R 使用optimx选择在给定约束条件下使变量最大化的数据集子集?,r,R,我试图理解如何在optimx中正确设置约束,以便在给定约束(总工资、玩家数量等)的情况下,最大化该数据框架内的变量总和(总性能)。感谢您的指导。理想情况下,最终结果会根据优化更改每个玩家的on.team变量(真/假)。以下是我迄今为止的尝试: # Optimize team roster require(optimx) # player data players <- data.frame(player.name = c("player1", "player2", "player3"

我试图理解如何在optimx中正确设置约束,以便在给定约束(总工资、玩家数量等)的情况下,最大化该数据框架内的变量总和(总性能)。感谢您的指导。理想情况下,最终结果会根据优化更改每个玩家的on.team变量(真/假)。以下是我迄今为止的尝试:

# 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)
#玩家数据
球员