【问题标题】:R LpSolve How to optimize picks with Budget RestrictionR LpSolve 如何使用预算限制优化选择
【发布时间】:2017-10-22 14:01:54
【问题描述】:

我有一个关于 R 中的 LpSolve 的问题。我有一个包含以下数据的面板:足球运动员 ID(大约 500 名球员)、他们每个人已经参加了多少场比赛、进球数和球员的成本。我想根据这些数据创建一个矩阵,但我不知道如何处理如此大量的数据(我有大约 500 名足球运动员,因此有 500 行)。

我们的目标是在预算为 1,000,000 的情况下选择最佳玩家数量。每个球员只能被选择一次,并根据进球数进行优化。

最后,我希望能选出进球最多的球员,而预算必须(几乎)用完。

由于我对 R 比较陌生,我还不知道如何用 LpSolve 解决这个问题,而且我在矩阵生成和约束方面失败了。

非常感谢您的帮助!

我的面板如下所示(示例):

足球运动员ID |玩游戏|平均目标 |成本玩家

  1. 233276 | 120 | 80 | 50.000
  2. 474823 | 200 | 140 | 34.000
  3. 192834 | 150 | 90 | 14.000
  4. 192833 | 30 | 50 | 90.000
  5. 129834 | 204 | 129 | 70.000
  6. 347594 | 123 | 19 | 10.000
  7. 203845 | 129 | 57 | 43.000
  8. 128747 | 98 | 124 | 140.000

.

.

  1. 123749 | 128 | 182 | 100.000

【问题讨论】:

    标签: r optimization restriction lpsolve


    【解决方案1】:

    首先我创建一个像这样的 df: df

    library(lpSolve)
    

    目标函数的系数是avggoals

    obj_fun <- df$avggoals
    

    约束是 costperplayer 的总和,需要小于或等于 100.000.000

    constraints <- matrix(df$costsperplayer, nrow = 1)
    c_dir <- "<="
    c_rhs <- 1000000
    

    然后您可以使用lp() 解决该 lp 问题。参数all.bin = TRUE 确保您选择一次或根本不选择一名球员。

    lp <- lp("max",
             obj_fun,
             constraints,
             c_dir,
             c_rhs, 
             all.bin = TRUE)
    

    你可以看看被选中的球员:

    df[lp$solution == 1, ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多