基于Elo评分与双向组队请求的40人5人制公平分队策略问询
优化Elo排序分队法以纳入双向组队请求的策略设计
问题背景
我们举办固定赛事,共40名选手,需分为8支5人队,每位选手拥有基于过往赛事表现的Elo评分。此前采用满足选手组队请求后随机分配剩余人员的方式,易导致队伍实力失衡。现需设计策略:在尽可能满足有效双向组队请求(仅双方互选才有效)的前提下,实现各队平均Elo评分尽可能接近的公平分队;若无法全部满足请求,需随机筛选未被满足的请求。现有Elo排序分队法未考虑组队请求,需对其进行优化。
示例选手数据
Player1: 1200Elo Team Req: Player 3 Player2: 1300Elo Team Req: - Player3: 1000Elo Team Req: Player 1 Player4: 900ELO Team Req: Player7 Player5: 1500Elo Team Req: - Player6: 1400Elo Team Req: - Player7: 1000Elo Team Req: Player 4 Player8: 800Elo Team Req: - ... Player40: 1400Elo Team Req: -
原Elo排序分队步骤(中文翻译版)
- 按Elo评分从高到低对选手排序
- 将最高分依次分配至1-8队,每队1人
- 次高分反向分配至8-1队,循环往复
- 最后一轮从8队开始分配
优化后的分队策略
1. 识别并筛选有效双向组队请求
- 遍历所有选手的组队请求,标记出双方互相选择彼此的有效组队对(比如示例中的Player1&Player3、Player4&Player7)
- 若有效组队对数量过多,会导致后续无法均匀分配到8支5人队(比如组队对总人数+剩余单人总数无法被5×8整除,或某队容纳不下组合),则随机剔除部分有效对,保留的数量以保证剩余可分配人员能被8队均衡接收为前提
2. 构建组合单元并排序
- 将每个有效组队对视为一个不可拆分的组合单元,计算该单元的平均Elo评分;单个未组队选手视为单人单元,单元评分为自身Elo分
- 将所有单元(组合单元+单人单元)按照单元评分从高到低排序
3. 适配组合单元的分队分配
- 初始化8支空队,每队剩余名额初始为5
- 沿用原Elo排序法的"正向-反向循环"分配逻辑:
- 第一轮从1队到8队依次分配最高评分的单元:若为单人单元,直接放入目标队并减少该队剩余名额;若为组合单元,先检查目标队剩余名额≥2,满足则放入并减少对应名额,不满足则顺延至下一个剩余名额足够的队伍
- 第二轮反向从8队到1队分配次高评分的单元,规则同上
- 循环执行上述步骤,最后一轮从8队开始分配,与原方法保持一致
4. 均衡性校验与调整
- 分配完成后,计算各队的平均Elo评分,统计整体均值与各队的偏差
- 若存在队伍偏差超出可接受范围(比如偏差≥整体均值的5%),则随机替换一组未被满足的有效请求(替换为之前剔除的有效对),重新执行上述分队流程,直到各队平均Elo评分接近程度符合要求
内容的提问来源于stack exchange,提问作者kmaxi
相关产品推荐
相关产品推荐

