Move to DNW namespace

This commit is contained in:
Alex Wulf
2022-07-05 15:33:34 +02:00
parent a99a73e02c
commit 812e454dd4
77 changed files with 536 additions and 361 deletions

View File

@ -1,6 +1,6 @@
<?php namespace Moserware\Skills\Elo;
<?php namespace DNW\Skills\Elo;
use Moserware\Skills\Rating;
use DNW\Skills\Rating;
/**
* An Elo rating represented by a single number (mean).

View File

@ -1,6 +1,6 @@
<?php namespace Moserware\Skills\Elo;
<?php namespace DNW\Skills\Elo;
use Moserware\Skills\GameInfo;
use DNW\Skills\GameInfo;
/**
* Including Elo's scheme as a simple comparison.

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Elo;
<?php namespace DNW\Skills\Elo;
// see http://ratings.fide.com/calculator_rtd.phtml for details
class FideKFactor extends KFactor

View File

@ -1,18 +1,18 @@
<?php namespace Moserware\Skills\Elo;
<?php namespace DNW\Skills\Elo;
use Moserware\Skills\GameInfo;
use Moserware\Skills\Numerics\GaussianDistribution;
use DNW\Skills\GameInfo;
use DNW\Skills\Numerics\GaussianDistribution;
class GaussianEloCalculator extends TwoPlayerEloCalculator
{
// From the paper
const STABLE_KFACTOR = 24;
public function __construct()
public function __construct()
{
parent::__construct(new KFactor(self::STABLE_KFACTOR));
}
public function getPlayerWinProbability(GameInfo $gameInfo, $playerRating, $opponentRating)
{
$ratingDifference = $playerRating - $opponentRating;

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Elo;
<?php namespace DNW\Skills\Elo;
class KFactor
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Elo;
<?php namespace DNW\Skills\Elo;
/**
* Indicates someone who has played less than 30 games.

View File

@ -1,19 +1,19 @@
<?php namespace Moserware\Skills\Elo;
<?php namespace DNW\Skills\Elo;
use Exception;
use Moserware\Skills\GameInfo;
use Moserware\Skills\PairwiseComparison;
use Moserware\Skills\RankSorter;
use Moserware\Skills\SkillCalculator;
use Moserware\Skills\SkillCalculatorSupportedOptions;
use Moserware\Skills\PlayersRange;
use Moserware\Skills\TeamsRange;
use DNW\Skills\GameInfo;
use DNW\Skills\PairwiseComparison;
use DNW\Skills\RankSorter;
use DNW\Skills\SkillCalculator;
use DNW\Skills\SkillCalculatorSupportedOptions;
use DNW\Skills\PlayersRange;
use DNW\Skills\TeamsRange;
abstract class TwoPlayerEloCalculator extends SkillCalculator
{
protected $_kFactor;
protected function __construct(KFactor $kFactor)
protected function __construct(KFactor $kFactor)
{
parent::__construct(SkillCalculatorSupportedOptions::NONE, TeamsRange::exactly(2), PlayersRange::exactly(1));
$this->_kFactor = $kFactor;
@ -23,16 +23,16 @@ abstract class TwoPlayerEloCalculator extends SkillCalculator
{
$this->validateTeamCountAndPlayersCountPerTeam($teamsOfPlayerToRatings);
RankSorter::sort($teamsOfPlayerToRatings, $teamRanks);
$result = array();
$isDraw = ($teamRanks[0] === $teamRanks[1]);
$team1 = $teamsOfPlayerToRatings[0];
$team2 = $teamsOfPlayerToRatings[1];
$player1 = each($team1);
$player2 = each($team2);
$player1Rating = $player1["value"]->getMean();
$player2Rating = $player2["value"]->getMean();
@ -75,13 +75,13 @@ abstract class TwoPlayerEloCalculator extends SkillCalculator
$this->validateTeamCountAndPlayersCountPerTeam($teamsOfPlayerToRatings);
$team1 = $teamsOfPlayerToRatings[0];
$team2 = $teamsOfPlayerToRatings[1];
$player1 = $team1[0];
$player2 = $team2[0];
$player1Rating = $player1[1]->getMean();
$player2Rating = $player2[1]->getMean();
$ratingDifference = $player1Rating - $player2Rating;
// The TrueSkill paper mentions that they used s1 - s2 (rating difference) to

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
use Exception;

View File

@ -1,8 +1,8 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
use Exception;
use Moserware\Skills\Guard;
use Moserware\Skills\HashMap;
use DNW\Skills\Guard;
use DNW\Skills\HashMap;
abstract class Factor
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
class FactorGraph
{

View File

@ -1,9 +1,9 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
// edit this
abstract class FactorGraphLayer
{
private $_localFactors = array();
private $_outputVariablesGroups = array();
private $_outputVariablesGroups = array();
private $_inputVariablesGroups = array();
private $_parentFactorGraph;

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
/**
* Helper class for computing the factor graph's normalization constant.

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
class KeyedVariable extends Variable
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
class Message
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
abstract class Schedule
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
class ScheduleLoop extends Schedule
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
class ScheduleSequence extends Schedule
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
class ScheduleStep extends Schedule
{

View File

@ -1,5 +1,5 @@
<?php
namespace Moserware\Skills\FactorGraphs;
namespace DNW\Skills\FactorGraphs;
class Variable
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\FactorGraphs;
<?php namespace DNW\Skills\FactorGraphs;
class VariableFactory
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
/**
* Parameters about the game for calculating the TrueSkill.

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
use Exception;

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
/**
* Basic hashmap that supports object keys.

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
/**
* Indicates support for allowing partial play (where a player only plays a part of the time).

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
interface ISupportPartialUpdate
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Numerics;
<?php namespace DNW\Skills\Numerics;
/**
* Basic math functions.

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Numerics;
<?php namespace DNW\Skills\Numerics;
class DiagonalMatrix extends Matrix
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Numerics;
<?php namespace DNW\Skills\Numerics;
/**
* Computes Gaussian (bell curve) values.
@ -177,7 +177,7 @@ class GaussianDistribution
private static function errorFunctionCumulativeTo($x)
{
// Derived from page 265 of Numerical Recipes 3rd Edition
// Derived from page 265 of Numerical Recipes 3rd Edition
$z = abs($x);
$t = 2.0 / (2.0 + $z);
@ -229,7 +229,7 @@ class GaussianDistribution
private static function inverseErrorFunctionCumulativeTo($p)
{
// From page 265 of numerical recipes
// From page 265 of numerical recipes
if ($p >= 2.0) {
return -100;

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Numerics;
<?php namespace DNW\Skills\Numerics;
class IdentityMatrix extends DiagonalMatrix
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Numerics;
<?php namespace DNW\Skills\Numerics;
use Exception;

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Numerics;
<?php namespace DNW\Skills\Numerics;
// The whole purpose of this class is to make the code for the SkillCalculator(s)
// look a little cleaner
@ -9,7 +9,7 @@ class Range
{
private $_min;
private $_max;
public function __construct($min, $max)
{
if ($min > $max)
@ -24,13 +24,13 @@ class Range
public function getMin()
{
return $this->_min;
}
}
public function getMax()
{
return $this->_max;
}
protected static function create($min, $max)
{
return new Range($min, $max);

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Numerics;
<?php namespace DNW\Skills\Numerics;
class SquareMatrix extends Matrix
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills\Numerics;
<?php namespace DNW\Skills\Numerics;
class Vector extends Matrix
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
/**
* Represents a comparison between two players.

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
class PartialPlay
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
/**
* Represents a player who has a Rating.

View File

@ -1,6 +1,6 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
use Moserware\Skills\Numerics\Range;
use DNW\Skills\Numerics\Range;
class PlayersRange extends Range
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
/**
* Helper class to sort ranks in non-decreasing order.
@ -13,7 +13,7 @@ class RankSorter
* @return array
*/
public static function sort(array &$teams, array &$teamRanks)
{
{
array_multisort($teamRanks, $teams);
return $teams;
}

View File

@ -1,7 +1,7 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
// Container for a player's rating.
use Moserware\Skills\Numerics\GaussianDistribution;
use DNW\Skills\Numerics\GaussianDistribution;
class Rating
{
@ -54,7 +54,7 @@ class Rating
$posteriorGaussian = new GaussianDistribution($fullPosterior->getMean(), $fullPosterior . getStandardDeviation());
// From a clarification email from Ralf Herbrich:
// "the idea is to compute a linear interpolation between the prior and posterior skills of each player
// "the idea is to compute a linear interpolation between the prior and posterior skills of each player
// ... in the canonical space of parameters"
$precisionDifference = $posteriorGaussian->getPrecision() - $priorGaussian->getPrecision();

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
class RatingContainer
{

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
use Exception;

View File

@ -1,11 +1,11 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
class Team extends RatingContainer
{
public function __construct(Player $player = null, Rating $rating = null)
{
parent::__construct();
if(!is_null($player))
{
$this->addPlayer($player, $rating);
@ -16,5 +16,5 @@ class Team extends RatingContainer
{
$this->setRating($player, $rating);
return $this;
}
}
}

View File

@ -1,4 +1,4 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
class Teams
{

View File

@ -1,6 +1,6 @@
<?php namespace Moserware\Skills;
<?php namespace DNW\Skills;
use Moserware\Skills\Numerics\Range;
use DNW\Skills\Numerics\Range;
class TeamsRange extends Range
{
@ -8,7 +8,7 @@ class TeamsRange extends Range
{
parent::__construct($min, $max);
}
protected static function create($min, $max)
{
return new TeamsRange($min, $max);

View File

@ -1,6 +1,6 @@
<?php namespace Moserware\Skills\TrueSkill;
<?php namespace DNW\Skills\TrueSkill;
use Moserware\Skills\Numerics\GaussianDistribution;
use DNW\Skills\Numerics\GaussianDistribution;
final class DrawMargin
{

View File

@ -1,19 +1,19 @@
<?php namespace Moserware\Skills\TrueSkill;
<?php namespace DNW\Skills\TrueSkill;
use Moserware\Skills\GameInfo;
use Moserware\Skills\Guard;
use Moserware\Skills\ISupportPartialPlay;
use Moserware\Skills\ISupportPartialUpdate;
use Moserware\Skills\Numerics\BasicMath;
use Moserware\Skills\Numerics\DiagonalMatrix;
use Moserware\Skills\Numerics\Matrix;
use Moserware\Skills\Numerics\Vector;
use Moserware\Skills\PartialPlay;
use Moserware\Skills\PlayersRange;
use Moserware\Skills\RankSorter;
use Moserware\Skills\SkillCalculator;
use Moserware\Skills\SkillCalculatorSupportedOptions;
use Moserware\Skills\TeamsRange;
use DNW\Skills\GameInfo;
use DNW\Skills\Guard;
use DNW\Skills\ISupportPartialPlay;
use DNW\Skills\ISupportPartialUpdate;
use DNW\Skills\Numerics\BasicMath;
use DNW\Skills\Numerics\DiagonalMatrix;
use DNW\Skills\Numerics\Matrix;
use DNW\Skills\Numerics\Vector;
use DNW\Skills\PartialPlay;
use DNW\Skills\PlayersRange;
use DNW\Skills\RankSorter;
use DNW\Skills\SkillCalculator;
use DNW\Skills\SkillCalculatorSupportedOptions;
use DNW\Skills\TeamsRange;
/**
* Calculates TrueSkill using a full factor graph.

View File

@ -1,9 +1,9 @@
<?php namespace Moserware\Skills\TrueSkill\Factors;
<?php namespace DNW\Skills\TrueSkill\Factors;
use Moserware\Skills\FactorGraphs\Factor;
use Moserware\Skills\FactorGraphs\Message;
use Moserware\Skills\FactorGraphs\Variable;
use Moserware\Skills\Numerics\GaussianDistribution;
use DNW\Skills\FactorGraphs\Factor;
use DNW\Skills\FactorGraphs\Message;
use DNW\Skills\FactorGraphs\Variable;
use DNW\Skills\Numerics\GaussianDistribution;
abstract class GaussianFactor extends Factor
{

View File

@ -1,9 +1,9 @@
<?php namespace Moserware\Skills\TrueSkill\Factors;
<?php namespace DNW\Skills\TrueSkill\Factors;
use Moserware\Skills\Numerics\GaussianDistribution;
use Moserware\Skills\TrueSkill\TruncatedGaussianCorrectionFunctions;
use Moserware\Skills\FactorGraphs\Message;
use Moserware\Skills\FactorGraphs\Variable;
use DNW\Skills\Numerics\GaussianDistribution;
use DNW\Skills\TrueSkill\TruncatedGaussianCorrectionFunctions;
use DNW\Skills\FactorGraphs\Message;
use DNW\Skills\FactorGraphs\Variable;
/**
* Factor representing a team difference that has exceeded the draw margin.

View File

@ -1,10 +1,10 @@
<?php namespace Moserware\Skills\TrueSkill\Factors;
<?php namespace DNW\Skills\TrueSkill\Factors;
use Exception;
use Moserware\Skills\FactorGraphs\KeyedVariable;
use Moserware\Skills\FactorGraphs\Message;
use Moserware\Skills\FactorGraphs\Variable;
use Moserware\Skills\Numerics\GaussianDistribution;
use DNW\Skills\FactorGraphs\KeyedVariable;
use DNW\Skills\FactorGraphs\Message;
use DNW\Skills\FactorGraphs\Variable;
use DNW\Skills\Numerics\GaussianDistribution;
/**
* Connects two variables and adds uncertainty.

View File

@ -1,8 +1,8 @@
<?php namespace Moserware\Skills\TrueSkill\Factors;
<?php namespace DNW\Skills\TrueSkill\Factors;
use Moserware\Skills\FactorGraphs\Message;
use Moserware\Skills\FactorGraphs\Variable;
use Moserware\Skills\Numerics\GaussianDistribution;
use DNW\Skills\FactorGraphs\Message;
use DNW\Skills\FactorGraphs\Variable;
use DNW\Skills\Numerics\GaussianDistribution;
/**
* Supplies the factor graph with prior information.

View File

@ -1,10 +1,10 @@
<?php namespace Moserware\Skills\TrueSkill\Factors;
<?php namespace DNW\Skills\TrueSkill\Factors;
use Moserware\Skills\Guard;
use Moserware\Skills\FactorGraphs\Message;
use Moserware\Skills\FactorGraphs\Variable;
use Moserware\Skills\Numerics\BasicMath;
use Moserware\Skills\Numerics\GaussianDistribution;
use DNW\Skills\Guard;
use DNW\Skills\FactorGraphs\Message;
use DNW\Skills\FactorGraphs\Variable;
use DNW\Skills\Numerics\BasicMath;
use DNW\Skills\Numerics\GaussianDistribution;
/**
* Factor that sums together multiple Gaussians.

View File

@ -1,9 +1,9 @@
<?php namespace Moserware\Skills\TrueSkill\Factors;
<?php namespace DNW\Skills\TrueSkill\Factors;
use Moserware\Skills\Numerics\GaussianDistribution;
use Moserware\Skills\TrueSkill\TruncatedGaussianCorrectionFunctions;
use Moserware\Skills\FactorGraphs\Message;
use Moserware\Skills\FactorGraphs\Variable;
use DNW\Skills\Numerics\GaussianDistribution;
use DNW\Skills\TrueSkill\TruncatedGaussianCorrectionFunctions;
use DNW\Skills\FactorGraphs\Message;
use DNW\Skills\FactorGraphs\Variable;
/**
* Factor representing a team difference that has not exceeded the draw margin.

View File

@ -1,10 +1,10 @@
<?php namespace Moserware\Skills\TrueSkill\Layers;
<?php namespace DNW\Skills\TrueSkill\Layers;
use Exception;
use Moserware\Skills\FactorGraphs\ScheduleLoop;
use Moserware\Skills\FactorGraphs\ScheduleSequence;
use Moserware\Skills\FactorGraphs\ScheduleStep;
use Moserware\Skills\TrueSkill\TrueSkillFactorGraph;
use DNW\Skills\FactorGraphs\ScheduleLoop;
use DNW\Skills\FactorGraphs\ScheduleSequence;
use DNW\Skills\FactorGraphs\ScheduleStep;
use DNW\Skills\TrueSkill\TrueSkillFactorGraph;
// The whole purpose of this is to do a loop on the bottom
class IteratedTeamDifferencesInnerLayer extends TrueSkillFactorGraphLayer

View File

@ -1,11 +1,11 @@
<?php namespace Moserware\Skills\TrueSkill\Layers;
<?php namespace DNW\Skills\TrueSkill\Layers;
use Moserware\Skills\PartialPlay;
use Moserware\Skills\FactorGraphs\ScheduleLoop;
use Moserware\Skills\FactorGraphs\ScheduleSequence;
use Moserware\Skills\FactorGraphs\ScheduleStep;
use Moserware\Skills\TrueSkill\Factors\GaussianWeightedSumFactor;
use Moserware\Skills\TrueSkill\TrueSkillFactorGraph;
use DNW\Skills\PartialPlay;
use DNW\Skills\FactorGraphs\ScheduleLoop;
use DNW\Skills\FactorGraphs\ScheduleSequence;
use DNW\Skills\FactorGraphs\ScheduleStep;
use DNW\Skills\TrueSkill\Factors\GaussianWeightedSumFactor;
use DNW\Skills\TrueSkill\TrueSkillFactorGraph;
class PlayerPerformancesToTeamPerformancesLayer extends TrueSkillFactorGraphLayer
{

View File

@ -1,11 +1,11 @@
<?php namespace Moserware\Skills\TrueSkill\Layers;
<?php namespace DNW\Skills\TrueSkill\Layers;
use Moserware\Skills\Numerics\BasicMath;
use Moserware\Skills\Rating;
use Moserware\Skills\FactorGraphs\ScheduleStep;
use Moserware\Skills\FactorGraphs\Variable;
use Moserware\Skills\TrueSkill\TrueSkillFactorGraph;
use Moserware\Skills\TrueSkill\Factors\GaussianPriorFactor;
use DNW\Skills\Numerics\BasicMath;
use DNW\Skills\Rating;
use DNW\Skills\FactorGraphs\ScheduleStep;
use DNW\Skills\FactorGraphs\Variable;
use DNW\Skills\TrueSkill\TrueSkillFactorGraph;
use DNW\Skills\TrueSkill\Factors\GaussianPriorFactor;
// We intentionally have no Posterior schedule since the only purpose here is to
// start the process.

View File

@ -1,10 +1,10 @@
<?php namespace Moserware\Skills\TrueSkill\Layers;
<?php namespace DNW\Skills\TrueSkill\Layers;
use Moserware\Skills\FactorGraphs\ScheduleStep;
use Moserware\Skills\FactorGraphs\KeyedVariable;
use Moserware\Skills\Numerics\BasicMath;
use Moserware\Skills\TrueSkill\TrueSkillFactorGraph;
use Moserware\Skills\TrueSkill\Factors\GaussianLikelihoodFactor;
use DNW\Skills\FactorGraphs\ScheduleStep;
use DNW\Skills\FactorGraphs\KeyedVariable;
use DNW\Skills\Numerics\BasicMath;
use DNW\Skills\TrueSkill\TrueSkillFactorGraph;
use DNW\Skills\TrueSkill\Factors\GaussianLikelihoodFactor;
class PlayerSkillsToPerformancesLayer extends TrueSkillFactorGraphLayer
{

View File

@ -1,9 +1,9 @@
<?php namespace Moserware\Skills\TrueSkill\Layers;
<?php namespace DNW\Skills\TrueSkill\Layers;
use Moserware\Skills\TrueSkill\DrawMargin;
use Moserware\Skills\TrueSkill\TrueSkillFactorGraph;
use Moserware\Skills\TrueSkill\Factors\GaussianGreaterThanFactor;
use Moserware\Skills\TrueSkill\Factors\GaussianWithinFactor;
use DNW\Skills\TrueSkill\DrawMargin;
use DNW\Skills\TrueSkill\TrueSkillFactorGraph;
use DNW\Skills\TrueSkill\Factors\GaussianGreaterThanFactor;
use DNW\Skills\TrueSkill\Factors\GaussianWithinFactor;
class TeamDifferencesComparisonLayer extends TrueSkillFactorGraphLayer
{

View File

@ -1,8 +1,8 @@
<?php namespace Moserware\Skills\TrueSkill\Layers;
<?php namespace DNW\Skills\TrueSkill\Layers;
use Moserware\Skills\FactorGraphs\Variable;
use Moserware\Skills\TrueSkill\TrueSkillFactorGraph;
use Moserware\Skills\TrueSkill\Factors\GaussianWeightedSumFactor;
use DNW\Skills\FactorGraphs\Variable;
use DNW\Skills\TrueSkill\TrueSkillFactorGraph;
use DNW\Skills\TrueSkill\Factors\GaussianWeightedSumFactor;
class TeamPerformancesToTeamPerformanceDifferencesLayer extends TrueSkillFactorGraphLayer
{
@ -26,7 +26,7 @@ class TeamPerformancesToTeamPerformanceDifferencesLayer extends TrueSkillFactorG
$newDifferencesFactor = $this->createTeamPerformanceToDifferenceFactor($strongerTeam, $weakerTeam, $currentDifference);
$this->addLayerFactor($newDifferencesFactor);
// REVIEW: Does it make sense to have groups of one?
// REVIEW: Does it make sense to have groups of one?
$outputVariablesGroup[] = array($currentDifference);
}
}

View File

@ -1,7 +1,7 @@
<?php namespace Moserware\Skills\TrueSkill\Layers;
<?php namespace DNW\Skills\TrueSkill\Layers;
use Moserware\Skills\FactorGraphs\FactorGraphLayer;
use Moserware\Skills\TrueSkill\TrueSkillFactorGraph;
use DNW\Skills\FactorGraphs\FactorGraphLayer;
use DNW\Skills\TrueSkill\TrueSkillFactorGraph;
abstract class TrueSkillFactorGraphLayer extends FactorGraphLayer
{

View File

@ -1,19 +1,19 @@
<?php namespace Moserware\Skills\TrueSkill;
<?php namespace DNW\Skills\TrueSkill;
use Moserware\Skills\GameInfo;
use Moserware\Skills\Numerics\GaussianDistribution;
use Moserware\Skills\Rating;
use Moserware\Skills\RatingContainer;
use Moserware\Skills\FactorGraphs\FactorGraph;
use Moserware\Skills\FactorGraphs\FactorList;
use Moserware\Skills\FactorGraphs\ScheduleSequence;
use Moserware\Skills\FactorGraphs\VariableFactory;
use Moserware\Skills\TrueSkill\Layers\IteratedTeamDifferencesInnerLayer;
use Moserware\Skills\TrueSkill\Layers\PlayerPerformancesToTeamPerformancesLayer;
use Moserware\Skills\TrueSkill\Layers\PlayerPriorValuesToSkillsLayer;
use Moserware\Skills\TrueSkill\Layers\PlayerSkillsToPerformancesLayer;
use Moserware\Skills\TrueSkill\Layers\TeamDifferencesComparisonLayer;
use Moserware\Skills\TrueSkill\Layers\TeamPerformancesToTeamPerformanceDifferencesLayer;
use DNW\Skills\GameInfo;
use DNW\Skills\Numerics\GaussianDistribution;
use DNW\Skills\Rating;
use DNW\Skills\RatingContainer;
use DNW\Skills\FactorGraphs\FactorGraph;
use DNW\Skills\FactorGraphs\FactorList;
use DNW\Skills\FactorGraphs\ScheduleSequence;
use DNW\Skills\FactorGraphs\VariableFactory;
use DNW\Skills\TrueSkill\Layers\IteratedTeamDifferencesInnerLayer;
use DNW\Skills\TrueSkill\Layers\PlayerPerformancesToTeamPerformancesLayer;
use DNW\Skills\TrueSkill\Layers\PlayerPriorValuesToSkillsLayer;
use DNW\Skills\TrueSkill\Layers\PlayerSkillsToPerformancesLayer;
use DNW\Skills\TrueSkill\Layers\TeamDifferencesComparisonLayer;
use DNW\Skills\TrueSkill\Layers\TeamPerformancesToTeamPerformanceDifferencesLayer;
class TrueSkillFactorGraph extends FactorGraph
{

View File

@ -1,6 +1,6 @@
<?php namespace Moserware\Skills\TrueSkill;
<?php namespace DNW\Skills\TrueSkill;
use Moserware\Skills\Numerics\GaussianDistribution;
use DNW\Skills\Numerics\GaussianDistribution;
class TruncatedGaussianCorrectionFunctions
{

View File

@ -1,20 +1,20 @@
<?php namespace Moserware\Skills\TrueSkill;
<?php namespace DNW\Skills\TrueSkill;
use Moserware\Skills\GameInfo;
use Moserware\Skills\Guard;
use Moserware\Skills\Numerics\BasicMath;
use Moserware\Skills\PairwiseComparison;
use Moserware\Skills\RankSorter;
use Moserware\Skills\Rating;
use Moserware\Skills\RatingContainer;
use Moserware\Skills\SkillCalculator;
use Moserware\Skills\SkillCalculatorSupportedOptions;
use Moserware\Skills\PlayersRange;
use Moserware\Skills\TeamsRange;
use DNW\Skills\GameInfo;
use DNW\Skills\Guard;
use DNW\Skills\Numerics\BasicMath;
use DNW\Skills\PairwiseComparison;
use DNW\Skills\RankSorter;
use DNW\Skills\Rating;
use DNW\Skills\RatingContainer;
use DNW\Skills\SkillCalculator;
use DNW\Skills\SkillCalculatorSupportedOptions;
use DNW\Skills\PlayersRange;
use DNW\Skills\TeamsRange;
/**
* Calculates the new ratings for only two players.
*
*
* When you only have two players, a lot of the math simplifies. The main purpose of this class
* is to show the bare minimum of what a TrueSkill implementation should have.
*/
@ -35,12 +35,12 @@ class TwoPlayerTrueSkillCalculator extends SkillCalculator
// Make sure things are in order
RankSorter::sort($teams, $teamRanks);
// Since we verified that each team has one player, we know the player is the first one
$winningTeamPlayers = $teams[0]->getAllPlayers();
$winner = $winningTeamPlayers[0];
$winnerPreviousRating = $teams[0]->getRating($winner);
$losingTeamPlayers = $teams[1]->getAllPlayers();
$loser = $losingTeamPlayers[0];
$loserPreviousRating = $teams[1]->getRating($loser);

View File

@ -1,19 +1,19 @@
<?php namespace Moserware\Skills\TrueSkill;
<?php namespace DNW\Skills\TrueSkill;
use Moserware\Skills\GameInfo;
use Moserware\Skills\Guard;
use Moserware\Skills\Numerics\BasicMath;
use Moserware\Skills\PairwiseComparison;
use Moserware\Skills\RankSorter;
use Moserware\Skills\Rating;
use Moserware\Skills\RatingContainer;
use Moserware\Skills\SkillCalculator;
use Moserware\Skills\SkillCalculatorSupportedOptions;
use DNW\Skills\GameInfo;
use DNW\Skills\Guard;
use DNW\Skills\Numerics\BasicMath;
use DNW\Skills\PairwiseComparison;
use DNW\Skills\RankSorter;
use DNW\Skills\Rating;
use DNW\Skills\RatingContainer;
use DNW\Skills\SkillCalculator;
use DNW\Skills\SkillCalculatorSupportedOptions;
use Moserware\Skills\PlayersRange;
use Moserware\Skills\TeamsRange;
use DNW\Skills\PlayersRange;
use DNW\Skills\TeamsRange;
use Moserware\Skills\Team;
use DNW\Skills\Team;
/**
* Calculates new ratings for only two teams where each team has 1 or more players.