下班后,我们经常在办公室玩几轮桌上足球/桌上足球。我整理了一个小的Java程序,该程序从可用的播放器中生成随机的2vs2阵容,然后将比赛结果存储在数据库中。
当前对结果的预测使用来自4个参与玩家的所有先前比赛结果的简单平均值。这给出了一个非常粗略的估计,但是我想用更复杂的东西来代替它,并考虑到以下因素:
玩家作为进攻者可能表现不错,但作为防守者则表现不好(反之亦然)
玩家对特定对手表现出色/对他人不利
有些团队合作得很好,而其他团队则没有
技能会随着时间而改变
尽可能准确地预测比赛结果的最佳算法是什么?
有人建议为此使用神经网络,这听起来很有趣……但是我对该主题没有足够的知识来说是否可行,而且我还怀疑可能需要太多的游戏才能进行合理的训练。
编辑:
由于一些项目的截止日期,不得不从中休息更长的时间。使问题更具体:
给定以下mysql表,其中包含到目前为止进行的所有匹配:
table match_result match_id int pk match_start datetime duration int (match length in seconds) blue_defense int fk to table player blue_attack int fk to table player red_defense int fk to table player red_attack int fk to table player score_blue int score_red int
您将如何编写函数predictResult(blueDef,blueAtk,redDef,redAtk){...}
以尽可能接近地估计结果,执行任何sql,进行计算或使用外部库?
使用TrueSkill算法,这是非常好的。我已经在桌上足球和国际象棋中实现了它,并且效果很好。同事告诉我,这几乎是太擅长这个。
有关其工作原理的完整详细信息以及与我的实现的链接,请参见我的“ 计算技能 ”博客文章。