mirror of
https://github.com/furyfire/trueskill.git
synced 2025-01-15 17:37:39 +00:00
More code standards
This commit is contained in:
@ -15,6 +15,8 @@ use DNW\Skills\Teams;
|
||||
class BasicBench
|
||||
{
|
||||
/**
|
||||
* To benchmark performance when using TwoPlayerTrueSkillCalculator
|
||||
*
|
||||
* @Revs(20)
|
||||
* @Iterations(20)
|
||||
*/
|
||||
@ -44,6 +46,8 @@ class BasicBench
|
||||
}
|
||||
|
||||
/**
|
||||
* To benchmark performance when using TwoTeamTrueSkillCalculator for just two players in two teams
|
||||
*
|
||||
* @Revs(20)
|
||||
* @Iterations(20)
|
||||
*/
|
||||
@ -73,6 +77,8 @@ class BasicBench
|
||||
}
|
||||
|
||||
/**
|
||||
* To benchmark performance when using FactorGraphTrueSkillCalculator for just two players in two teams
|
||||
*
|
||||
* @Revs(20)
|
||||
* @Iterations(20)
|
||||
*/
|
||||
@ -102,6 +108,8 @@ class BasicBench
|
||||
}
|
||||
|
||||
/**
|
||||
* To benchmark performance when using FactorGraphTrueSkillCalculator with 3 players in 3 teams
|
||||
*
|
||||
* @Revs(20)
|
||||
* @Iterations(20)
|
||||
*/
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\FactorGraphs;
|
||||
|
||||
use DNW\Skills\Guard;
|
||||
@ -94,6 +96,7 @@ abstract class Factor implements \Stringable
|
||||
|
||||
/**
|
||||
* Sends the ith message to the marginal and returns the log-normalization constant
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function sendMessageIndex(int $messageIndex): float|int
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\FactorGraphs;
|
||||
|
||||
use DNW\Skills\FactorGraphs\ScheduleSequence;
|
||||
@ -42,6 +44,7 @@ abstract class FactorGraphLayer
|
||||
|
||||
/**
|
||||
* This reference is still needed
|
||||
*
|
||||
* @return array<int,array<int,object>>
|
||||
*/
|
||||
public function &getOutputVariablesGroups(): array
|
||||
@ -82,11 +85,11 @@ abstract class FactorGraphLayer
|
||||
|
||||
public function createPriorSchedule(): ?ScheduleSequence
|
||||
{
|
||||
return null;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
public function createPosteriorSchedule(): ?ScheduleSequence
|
||||
{
|
||||
return null;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\FactorGraphs;
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\FactorGraphs;
|
||||
|
||||
class ScheduleLoop extends Schedule
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\FactorGraphs;
|
||||
|
||||
class ScheduleSequence extends Schedule
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\FactorGraphs;
|
||||
|
||||
class ScheduleStep extends Schedule
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\FactorGraphs;
|
||||
|
||||
use DNW\Skills\Numerics\GaussianDistribution;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\FactorGraphs;
|
||||
|
||||
class VariableFactory
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills;
|
||||
|
||||
/**
|
||||
@ -23,7 +25,8 @@ class GameInfo
|
||||
private float $beta = self::DEFAULT_BETA,
|
||||
private float $dynamicsFactor = self::DEFAULT_DYNAMICS_FACTOR,
|
||||
private float $drawProbability = self::DEFAULT_DRAW_PROBABILITY
|
||||
) {
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
public function getInitialMean(): float
|
||||
|
@ -13,7 +13,7 @@ class Guard
|
||||
{
|
||||
public static function argumentNotNull(mixed $value, string $parameterName): void
|
||||
{
|
||||
if ($value == null) {
|
||||
if ($value == NULL) {
|
||||
throw new Exception($parameterName . ' can not be null');
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Numerics;
|
||||
|
||||
class DiagonalMatrix extends Matrix
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Numerics;
|
||||
|
||||
use Exception;
|
||||
@ -11,7 +13,7 @@ class Matrix
|
||||
/**
|
||||
* @param array<int,array<int,float>> $matrixRowData
|
||||
*/
|
||||
public function __construct(private int $rowCount = 0, private int $columnCount = 0, private array $matrixRowData = array())
|
||||
public function __construct(private int $rowCount = 0, private int $columnCount = 0, private array $matrixRowData = [])
|
||||
{
|
||||
}
|
||||
|
||||
@ -307,7 +309,7 @@ class Matrix
|
||||
public function equals(Matrix $otherMatrix): bool
|
||||
{
|
||||
if (($this->rowCount != $otherMatrix->getRowCount()) || ($this->columnCount != $otherMatrix->getColumnCount())) {
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for ($currentRow = 0; $currentRow < $this->rowCount; $currentRow++) {
|
||||
@ -319,11 +321,11 @@ class Matrix
|
||||
);
|
||||
|
||||
if ($delta > self::ERROR_TOLERANCE) {
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills;
|
||||
|
||||
/**
|
||||
@ -12,6 +14,7 @@ class RankSorter
|
||||
*
|
||||
* @param array<mixed> $teams The items to sort according to the order specified by ranks.
|
||||
* @param array<int> $teamRanks The ranks for each item where 1 is first place.
|
||||
*
|
||||
* @return array<int>
|
||||
*/
|
||||
public static function sort(array &$teams, array &$teamRanks): array
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills;
|
||||
|
||||
use Exception;
|
||||
@ -13,7 +15,8 @@ abstract class SkillCalculator
|
||||
private int $supportedOptions,
|
||||
private readonly TeamsRange $totalTeamsAllowed,
|
||||
private readonly PlayersRange $playersPerTeamAllowed
|
||||
) {
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
@ -22,6 +25,7 @@ abstract class SkillCalculator
|
||||
* @param GameInfo $gameInfo Parameters for the game.
|
||||
* @param Team[] $teams A mapping of team players and their ratings.
|
||||
* @param int[] $teamRanks The ranks of the teams where 1 is first place. For a tie, repeat the number (e.g. 1, 2, 2).
|
||||
*
|
||||
* @return RatingContainer All the players and their new ratings.
|
||||
*/
|
||||
abstract public function calculateNewRatings(
|
||||
@ -35,6 +39,7 @@ abstract class SkillCalculator
|
||||
*
|
||||
* @param GameInfo $gameInfo Parameters for the game.
|
||||
* @param Team[] $teams A mapping of team players and their ratings.
|
||||
*
|
||||
* @return float The quality of the match between the teams as a percentage (0% = bad, 100% = well matched).
|
||||
*/
|
||||
abstract public function calculateMatchQuality(GameInfo $gameInfo, array $teams): float;
|
||||
|
@ -4,7 +4,7 @@ namespace DNW\Skills;
|
||||
|
||||
class Team extends RatingContainer
|
||||
{
|
||||
public function __construct(Player $player = null, Rating $rating = null)
|
||||
public function __construct(Player $player = NULL, Rating $rating = NULL)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills;
|
||||
|
||||
class Teams
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills;
|
||||
|
||||
use DNW\Skills\Numerics\Range;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill;
|
||||
|
||||
use DNW\Skills\Numerics\GaussianDistribution;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill\Factors;
|
||||
|
||||
use DNW\Skills\FactorGraphs\Message;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill\Layers;
|
||||
|
||||
use DNW\Skills\FactorGraphs\ScheduleLoop;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill\Layers;
|
||||
|
||||
use DNW\Skills\FactorGraphs\ScheduleStep;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill\Layers;
|
||||
|
||||
use DNW\Skills\FactorGraphs\ScheduleStep;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill\Layers;
|
||||
|
||||
use DNW\Skills\FactorGraphs\KeyedVariable;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill\Layers;
|
||||
|
||||
use DNW\Skills\TrueSkill\DrawMargin;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill\Layers;
|
||||
|
||||
use DNW\Skills\FactorGraphs\Variable;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill;
|
||||
|
||||
use DNW\Skills\FactorGraphs\FactorGraph;
|
||||
@ -60,11 +62,11 @@ class TrueSkillFactorGraph extends FactorGraph
|
||||
|
||||
public function buildGraph(): void
|
||||
{
|
||||
$lastOutput = null;
|
||||
$lastOutput = NULL;
|
||||
|
||||
$layers = $this->layers;
|
||||
foreach ($layers as $currentLayer) {
|
||||
if ($lastOutput != null) {
|
||||
if ($lastOutput != NULL) {
|
||||
$currentLayer->setInputVariablesGroups($lastOutput);
|
||||
}
|
||||
|
||||
@ -105,7 +107,7 @@ class TrueSkillFactorGraph extends FactorGraph
|
||||
$layers = $this->layers;
|
||||
foreach ($layers as $currentLayer) {
|
||||
$currentPriorSchedule = $currentLayer->createPriorSchedule();
|
||||
if ($currentPriorSchedule != null) {
|
||||
if ($currentPriorSchedule != NULL) {
|
||||
$fullSchedule[] = $currentPriorSchedule;
|
||||
}
|
||||
}
|
||||
@ -114,7 +116,7 @@ class TrueSkillFactorGraph extends FactorGraph
|
||||
|
||||
foreach ($allLayersReverse as $currentLayer) {
|
||||
$currentPosteriorSchedule = $currentLayer->createPosteriorSchedule();
|
||||
if ($currentPosteriorSchedule != null) {
|
||||
if ($currentPosteriorSchedule != NULL) {
|
||||
$fullSchedule[] = $currentPosteriorSchedule;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill;
|
||||
|
||||
use DNW\Skills\Numerics\GaussianDistribution;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill;
|
||||
|
||||
use DNW\Skills\GameInfo;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\TrueSkill;
|
||||
|
||||
use DNW\Skills\GameInfo;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\FactorGraphs;
|
||||
|
||||
use DNW\Skills\FactorGraphs\ScheduleStep;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\FactorGraphs;
|
||||
|
||||
use DNW\Skills\FactorGraphs\Variable;
|
||||
@ -13,6 +15,7 @@ class VariableTest extends TestCase
|
||||
$gd_prior = new GaussianDistribution();
|
||||
$var = new Variable('dummy', $gd_prior);
|
||||
$this->assertEquals($gd_prior, $var->getValue());
|
||||
|
||||
$gd_new = new GaussianDistribution();
|
||||
$this->assertEquals($gd_new, $var->getValue());
|
||||
$var->resetToPrior();
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests;
|
||||
|
||||
@ -12,7 +14,7 @@ class GuardTest extends TestCase
|
||||
{
|
||||
$this->expectException(Exception::class);
|
||||
$this->expectExceptionMessage('dummy can not be null');
|
||||
Guard::argumentNotNull(null, "dummy");
|
||||
Guard::argumentNotNull(NULL, "dummy");
|
||||
}
|
||||
|
||||
public function testargumentIsValidIndex(): void
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\Numerics;
|
||||
|
||||
use DNW\Skills\Numerics\BasicMath;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\Numerics;
|
||||
|
||||
use DNW\Skills\Numerics\BasicMath;
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\Numerics;
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\Numerics;
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests;
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests;
|
||||
|
||||
use DNW\Skills\RankSorter;
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests;
|
||||
|
||||
use DNW\Skills\Rating;
|
||||
@ -19,10 +21,10 @@ class RatingTest extends TestCase
|
||||
public function testPartialUpdate(): void
|
||||
{
|
||||
$rating = new Rating(100, 10, 5);
|
||||
$rating_prior = new Rating(100, 10, 5);
|
||||
$rating_new = new Rating(200, 10, 5);
|
||||
$ratingOld = new Rating(100, 10, 5);
|
||||
$ratingNew = new Rating(200, 10, 5);
|
||||
|
||||
$rating_partial = $rating ->getPartialUpdate($rating_prior, $rating_new, 0.5);
|
||||
$rating_partial = $rating->getPartialUpdate($ratingOld, $ratingNew, 0.5);
|
||||
|
||||
|
||||
$this->assertEquals(150, $rating_partial->getMean());
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\TrueSkill;
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\TrueSkill;
|
||||
|
||||
@ -21,6 +23,6 @@ class FactorGraphTeamTrueSkillCalculatorTest extends TestCase
|
||||
public function testMethodisSupported(): void
|
||||
{
|
||||
$calculator = new FactorGraphTrueSkillCalculator();
|
||||
$this->assertEquals(true, $calculator->isSupported(SkillCalculatorSupportedOptions::PARTIAL_PLAY));
|
||||
$this->assertEquals(TRUE, $calculator->isSupported(SkillCalculatorSupportedOptions::PARTIAL_PLAY));
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\TrueSkill;
|
||||
|
||||
@ -25,7 +27,7 @@ class FactorGraphTrueSkillCalculatorTest extends TestCase
|
||||
new Player("hillary"),
|
||||
];
|
||||
|
||||
$teams = array();
|
||||
$teams = [];
|
||||
foreach ($players as $player) {
|
||||
$teams[] = new Team($player, $gameInfo->getDefaultRating());
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\TrueSkill;
|
||||
|
||||
@ -108,6 +110,7 @@ class TrueSkillCalculatorTests
|
||||
$team2 = new Team($player2, $gameInfo->getDefaultRating());
|
||||
|
||||
$teams = Teams::concat($team1, $team2);
|
||||
|
||||
$newRatings = $calculator->calculateNewRatings($gameInfo, $teams, [1, 1]);
|
||||
|
||||
$player1NewRating = $newRatings->getRating($player1);
|
||||
@ -170,9 +173,7 @@ class TrueSkillCalculatorTests
|
||||
private static function oneOnTwoSimpleTest(TestCase $testClass, SkillCalculator $calculator): void
|
||||
{
|
||||
$player1 = new Player(1);
|
||||
|
||||
$gameInfo = new GameInfo();
|
||||
|
||||
$team1 = new Team();
|
||||
$team1->addPlayer($player1, $gameInfo->getDefaultRating());
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\TrueSkill;
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DNW\Skills\Tests\TrueSkill;
|
||||
|
||||
|
Reference in New Issue
Block a user