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

PuLP求解幻想橄榄球优化问题返回空DataFrame的解决方法

问题根因

  1. 给is_drafted列赋值时使用了硬编码的列索引10,你在读取CSV后新增了8个位置标识列+薪资列,原始CSV列数不固定的前提下,列索引10大概率不是你新增的is_drafted列,导致选中状态没有写入正确的列,筛选自然为空。
  2. 整数规划求解器返回的二进制变量值可能存在浮点精度误差,直接用==1.0判断可能出现漏匹配。

修改方案

把结果格式化部分的代码替换为以下内容即可:

print('--- (4/4) Formatting the results ---')
raw_data["is_drafted"] = 0.0

for var in model.variables():
    # 用列名而非硬编码索引赋值,避免列顺序变化导致的错误
    row_idx = int(var.name[1:])
    raw_data.loc[row_idx, "is_drafted"] = var.varValue

# 用阈值判断规避浮点精度问题,大于0.9就认定为被选中
my_team = raw_data[raw_data["is_drafted"] >= 0.9]
my_team = my_team[["Asset Name", "Player", "Pos. Parent", "Rarity", "Point Cost", "FPTS"]]

print(my_team)
print("Total used amount of salary cap: {}".format(my_team["Point Cost"].sum()))
print("Projected points: {}".format(my_team["FPTS"].sum().round(1)))
print('--- Completed ---')

额外优化建议

你当前的约束只定义了QB最少1人,其他位置只有上限没有下限,可能会出现K、DST这类必要位置没选的情况,可以根据赛制规则补充下限约束,例如:

model += (K_constraint >= 1)
model += (DST_constraint >= 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:21:02