Exemple #1
0
function loadRatings()
{
    $stats = file_get_contents('games.stats');
    $stats = explode("\n", $stats);
    $ratings = array();
    foreach ($stats as $stat) {
        if (empty($stat)) {
            continue;
        }
        $stat = explode("\t", $stat);
        $playerId = (int) $stat[0];
        $mean = (double) $stat[1];
        $stddev = (double) $stat[2];
        $ratings[$playerId] = new Rating($mean, $stddev);
    }
    $gameInfo = new GameInfo();
    $players = loadPlayers();
    foreach ($players as $playerId => $playerName) {
        if (!isset($ratings[$playerId])) {
            $ratings[$playerId] = $gameInfo->getDefaultRating();
        }
    }
    return $ratings;
}
 private static function oneOnTwoBalancedPartialPlay($testClass, SkillCalculator $calculator)
 {
     $gameInfo = new GameInfo();
     $p1 = new Player(1);
     $team1 = new Team($p1, $gameInfo->getDefaultRating());
     $p2 = new Player(2, 0.0);
     $p3 = new Player(3, 1.0);
     $team2 = new Team();
     $team2->addPlayer($p2, $gameInfo->getDefaultRating());
     $team2->addPlayer($p3, $gameInfo->getDefaultRating());
     $teams = Teams::concat($team1, $team2);
     $newRatings = $calculator->calculateNewRatings($gameInfo, $teams, array(1, 2));
     $p1NewRating = $newRatings->getRating($p1);
     $p2NewRating = $newRatings->getRating($p2);
     $p3NewRating = $newRatings->getRating($p3);
     // This should be roughly the same as a 1 v 1
     self::assertRating($testClass, 29.39648040436841, 7.1713980703143205, $p1NewRating);
     self::assertRating($testClass, 24.999560351959563, 8.333749978770932, $p2NewRating);
     self::assertRating($testClass, 20.603519595631585, 7.1713980703143205, $p3NewRating);
     $matchQuality = $calculator->calculateMatchQuality($gameInfo, $teams);
     self::assertMatchQuality($testClass, 0.44721358745011336, $matchQuality);
 }