私のサッカー リーグでは (ユーザーがチームでプレーする場合) ELO レーティングを使用しています。すべて正常に動作します。チーム プレーヤーの係数とパワーの追加を反映するために式を拡張する方法についてアドバイスが必要です。(チームの力は 1 から 10 まであり、1 = 最も弱いチーム、10 が最も強いチーム)。
例えば:
国内選手の係数は1000、訪問選手の係数は1000、定数イベントの重要度は32、結果は1:0
ホーム プレイヤーは +16、ビジター プレイヤーは -16 を獲得します。
そして、チームの強さ (たとえば、パワー 10/6) を組み込むと、結果は次のようになります -> +12 / -12 = 強いチームが勝った強いプレイヤー。
編集の仕方がわかりません。ありがとうございました。
ELO 評価式 = http://www.eloratings.net/system.html
私の悪い英語でごめんなさい。
================================================== =======================
URコメントの新しい編集と回答
興味深いアイデアですが、完全に正確ではありません。小さな例でデモンストレーションを試みます。
player1: spin_plate (1000 elo ポイント) player2: Kcko (1000 elo ポイント)
例:
spin_plate Kcko の敗北 (例: 1:0)、彼らはポイント +15 / -15 を獲得します -> これでも問題ありませんが、チームの力が含まれるようになりました
改善点: spin_plate が FC バルセロナ (フォース 10) でプレーし、Kcko を倒した (弱いチームが AS モナコでプレーした場合、フォース 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);
}