You need to enable JavaScript to run this app. 用Python实现多重约束下的奇幻橄榄球最优阵容选择
优惠活动
大模型
产品
解决方案
定价
更多

用Python实现多重约束下的奇幻橄榄球最优阵容选择

奇幻橄榄球最优阵容筛选实现方案

当前场景基础

手上持有约200条球员历史预测数据,字段包含Country(球员所属国家)、Name(球员姓名)、Position(场上位置)、Value(球员薪资)、Pts(下周预测可得梦幻积分),核心目标是筛选出满足所有规则的阵容组合,拿到最高的总积分。

硬性筛选规则

  • 国籍限制:单个国家最多入选4名球员,涉及参赛国家共6个
  • 预算限制:所有入选球员(含替补)的总薪资不得超过246.4的预算上限
  • 人数基础:首发阵容固定为15人
  • 替补规则:最多可选3名替补,替补位可空缺;替补仅能获得对应积分的一半,但薪资成本和正选球员完全一致;和你原本的思路一致,由于该规则会提升计算复杂度,可分别按配置0名、1名、2名、3名替补的场景单独运行计算,再横向对比各场景的结果取最优
  • 位置人数要求:全阵容(含替补)各位置入选人数必须落在对应区间内:
    • FB:1-2人
    • C:2-4人
    • W:2-4人
    • FH:1-2人
    • SH:1-2人
    • BR:3-6人
    • SR:2-4人
    • P:2-4人
    • H:1-2人

新手友好的实现路径

首先明确:纯暴力枚举所有球员组合的方案在这个数据规模下完全不可行,200名球员选15-18人的组合数达到数亿亿量级,普通设备根本无法完成计算,不需要硬套教程里的递归遍历全组合的逻辑,更适配的路径如下:

  • 第一步:用pandas读取、整理球员数据,按位置拆分球员子集,提前缩小每个位置的候选范围
  • 第二步:引入整数线性规划求解库PuLP,不需要手写复杂的回溯逻辑,只需要把所有筛选规则转化为求解器可识别的约束条件,让求解器自动遍历最优解,这套库对新手非常友好,在Jupyter Notebook中安装后即可直接调用
  • 第三步:分场景调试模型:先从规则最简单的0替补场景开始搭建求解逻辑,验证结果合规后,再逐步加入1-3名替补的约束,每加一层规则就跑一次小范围测试,避免一次性堆所有规则导致bug难排查
  • 第四步:对求解器输出的结果做二次校验,核对总薪资、国籍分布、位置人数、积分计算逻辑是否完全符合规则,最终输出整理后的阵容名单、总积分、总薪资明细

基础代码框架参考

# 首次使用先在Jupyter cell中运行安装命令
# !pip install pandas pulp
import pandas as pd
import pulp

# 读取本地球员数据
player_df = pd.read_csv("你的球员数据文件路径.csv")

# 提前定义所有固定规则
pos_requirement = {
    "FB": (1, 2),
    "C": (2, 4),
    "W": (2, 4),
    "FH": (1, 2),
    "SH": (1, 2),
    "BR": (3, 6),
    "SR": (2, 4),
    "P": (2, 4),
    "H": (1, 2)
}
total_budget = 246.4
max_player_per_country = 4
max_starter = 15
max_substitute = 3

实现时的避坑提示

  • 不要硬写全组合遍历逻辑:计算量会远超本地设备的处理能力,用成熟的求解库可以在几秒内算出最优解
  • 位置计数要包含所有正选和替补球员,不要把替补排除在位置人数的统计范围外
  • 替补的薪资是全额计入总预算的,不要误以为替补薪资会打折
  • 建模时要给每个球员设置两个独立的决策变量:「是否进入首发」「是否进入替补」,并增加约束保证同一个球员不能同时出现在首发和替补名单中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 10:54:10