You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言线性规划求解梦幻足球最优阵容报错问题排查

解决R语言梦幻足球阵容线性规划的"unused argument (200)"错误

错误根源

你遇到的unused argument (200)错误,是因为把总DraftValue上限200直接作为额外参数传给了lp()函数,但该函数没有接收这类裸数值的参数位置。预算限制需要定义到约束条件的规则里,而非直接传入函数。

正确实现方案

假设你的球员数据框名为players,包含Name、Position、FantasyPoints、DraftValue这几列,以下是完整的修正代码:

1. 加载依赖包

install.packages("lpSolve")
library(lpSolve)

2. 定义目标函数

目标是最大化总FantasyPoints,目标系数为每个球员的FantasyPoints值:

obj <- players$FantasyPoints

3. 构建约束条件

需要两类约束:位置数量限制、总DraftValue上限。

# 生成位置约束的列向量
qb_constraint <- ifelse(players$Position == "QB", 1, 0)
rb_constraint <- ifelse(players$Position == "RB", 1, 0)
wr_constraint <- ifelse(players$Position == "WR", 1, 0)
te_constraint <- ifelse(players$Position == "TE", 1, 0)
# 生成预算约束的列向量
draft_val_constraint <- players$DraftValue

# 组合约束矩阵
const_mat <- cbind(qb_constraint, rb_constraint, wr_constraint, te_constraint, draft_val_constraint)

# 约束方向:位置要求等于指定数量,预算要求小于等于200
const_dir <- c("=", "=", "=", "=", "<=")
# 约束对应的值:1QB、2RB、2WR、1TE、总DraftValue≤200
const_rhs <- c(1, 2, 2, 1, 200)

4. 定义变量类型

每个球员只能选或不选,所以变量为二进制(0=不选,1=选中):

var_types <- rep("binary", nrow(players))

5. 调用线性规划求解

result <- lp(
  direction = "max",
  objective.in = obj,
  const.mat = const_mat,
  const.dir = const_dir,
  const.rhs = const_rhs,
  all.bin = TRUE  # 等价于传入types=var_types,二选一即可
)

6. 提取最优阵容结果

# 获取选中球员的索引
selected_indices <- which(result$solution == 1)
# 输出选中球员详情
selected_players <- players[selected_indices, ]
print(selected_players)

# 输出关键指标
cat("总FantasyPoints:", sum(selected_players$FantasyPoints), "\n")
cat("总DraftValue:", sum(selected_players$DraftValue), "\n")

注意事项

  • 确认约束矩阵的列数,与const_dir、const_rhs的长度完全匹配
  • 必须明确设置变量为二进制类型,避免出现选中半名球员的不合理结果

内容的提问来源于stack exchange,提问作者Ranalytictsnewb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:40:30