在我的足球联赛中我使用(用户与球队一起比赛)ELO等级。一切正常。我需要有关如何扩展公式的建议,以反映团队成员的系数和能力的增加。 (球队有1到10的力量,1 =最弱的球队,10个最强的球队)。
国内球员的系数是1000,访客的系数是1000,常数事件的重要性32,结果是1:0
本垒打获得+16,-16名访客。
现在加入团队的力量(例如,力量10/6),结果应该是这样的 - > +12 / -12 =强大的球员赢得了更强的球队。
我不知道如何编辑。谢谢。
ELO RATING FORMULA = http://www.eloratings.net/system.html
抱歉我的英语不好。
=============================================== ==========================
有趣的想法,但不完全准确。我将尝试演示一个小例子:
player1:spinning_plate(1000个elo积分) player2:Kcko(1000个elo积分)
spinning_plate Kcko失败(例如1:0),他们获得积分+15 / -15->这仍然很好,但现在我们包括了团队的力量
改进: spinning_plate效力于巴塞罗那足球俱乐部(第10力量),击败Kcko(例如,AS摩纳哥队的比赛较弱,第7力量),spin_plate获得不到15分(因为他们拥有更好的球队的优势。两位球员的ELO积分是同样但他们的团队的力量不是)。
你了解问题的实质吗?
玩家可以为具有不同权力的不同团队游戏,这应该包含在ELO功能中:)
取自真实公式(http://www.eloratings.net/system.html) 我需要通过真实的方法增加力量(s1和s2)
$k1 - elo points of player 1
$k2 - elo points of player 2
$konstanta = weight constant for the tournament played
$g1 = goals for player 1
$g2 = goals for player 2
$s1 = new my own constant = strenght of team of player 1
$s2 = new my own constant = strenght of team of player 2
function elo($k1, $k2, $konstanta = 0, $g1, $g2, $s1 = 0, $s2 = 0)
{
$arg_list = func_get_args();
//debug($arg_list
$s1 = (int) $s1;
$s2 = (int) $s2;
$G_rozdil = Abs($g1 - $g2); // golovy rozdil
// Konstanta za vysledek hry
if ($g1 > $g2)
$W = 1;
elseif ($g1 == $g2)
$W = 0.5;
else
$W = 0;
// Rating puvodni, za domaciho
$Ro = $koeficient1;
$K = $konstanta; // Zakladni konstanta pro hrane zapasy, cim dulezitejsi turnaj tim vyssi 20-60
// a dale se navysuje o urcity koeficient pocitaneho z rozdilu golu
if ($G_rozdil==2)
$K=$K*1.5;
elseif ($G_rozdil==3)
$K=$K*1.75;
elseif ($G_rozdil>3)
$K=$K*((1.75+(($G_rozdil-3)/8)));
$dr = $k1 - $k2; // 100 zvyhodnuje hosta , protoze hraje venku
// Konecny result
$Rn = $Ro + $K * ($W - $We);
// To dostanou domaci
$Body1 = Round($Rn - $Ro);
// Toto hoste
$Body2 = $Body1 * -1;
if ($Body1 == 0 || $Body2 == 0)
{
return array(0, 0);
}
return array($Body1, $Body2);
}
答案 0 :(得分:0)
我认为在这种情况下最好的做法是将计算机的优势转化为初步的ELO评级。
我从国际象棋和互联网象棋服务器(例如FICS)中获取示例。当一台计算机玩游戏时,它被视为一个人类对手 - 它获得初步评级,后来根据它是否胜过人类和计算机对手进行评级。
你可能有一个引导问题,但是,如果你没有足够的玩家,强大的计算机可能无法得到一个合适的评级,因为所有其他玩家都很弱。在这种情况下,您可以简单地将您的1-10映射到MIN_RATING- MAX_RATING的范围。 MAX_RATING实际上不是最大等级,MIN_RATING可能不应该是0. ELO是相对排名系统,绝对数字没什么意义,所以你可以根据你的玩家群选择它们。在国际象棋中,大师们的评分较高,大约为27-2800,最低的是大约四十年代的新手,但不会改善。
这里的要点是,如果你给他们一个初步评级,随着时间的推移,他们将朝着他们的“真实评级”前进,因为他们将与玩家对战并相应地移动。
修改强> 的
为什么不根据团队差异来衡量权重?这样的事情怎么样:
K*(F(9-abs(s1-s2)))
其中F(x)是sigmoid function或甚至只是线性函数[0 ... 9] - > [1 ... 0}。这意味着具有相同评级的团队将获得完全不变的团队,具有较大差异的团队可以缩小到零或者您选择的任何一个。
我不知道我是否同意这种计算是解决此问题的最佳方法。如果您以这种方式使用ELO的统计数据可能不适用,但如果不进行更多研究,我没有更好的建议。