在我的足球联赛中,我使用(用户与球队一起比赛)ELO 评级。一切正常。我需要关于如何扩展公式以反映加入的系数和团队成员力量的建议。(队伍有1到10的权力,1 =最弱的队伍,10最强的队伍)。
例如:
国内选手系数1000,客队选手系数1000,常数事件重要性32,结果1:0
主队球员获得 +16,-16 客队球员。
现在结合球队的实力(例如,力量 10/6),结果应该是这样的 -> +12 / -12 = 更强的球员和更强的球队获胜。
我不知道如何编辑。谢谢你。
ELO 评级公式 = http://www.eloratings.net/system.html
对不起,我的英语不好。
==================================================== ========================
新的编辑和回答你的评论
有趣的想法,但并不完全准确。我将尝试通过一个小例子来演示:
player1:spinning_plate(1000 elo 积分) player2:Kcko(1000 elo 积分)
例子:
spin_plate Kcko 失败(例如 1:0),他们获得 +15 / -15 分 -> 这仍然可以,但现在我们包括团队的力量
改进:spinning_plate 为 FC Barcelona 效力(Force 10),击败 Kcko(弱队为 AS Monaco,例如 force 7),spinning_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);
}