diff --git a/PHPSkills/TrueSkill/Factors/GaussianWeightedSumFactor.php b/PHPSkills/TrueSkill/Factors/GaussianWeightedSumFactor.php index 3e221f5..d1f18e9 100644 --- a/PHPSkills/TrueSkill/Factors/GaussianWeightedSumFactor.php +++ b/PHPSkills/TrueSkill/Factors/GaussianWeightedSumFactor.php @@ -63,13 +63,11 @@ class GaussianWeightedSumFactor extends GaussianFactor for ($weightsIndex = 1; $weightsIndex < $weightsLength; $weightsIndex++) { $currentWeights = array(); - $this->_weights[$weightsIndex] = &$currentWeights; - + $variableIndices = array(); $variableIndices[0] = $weightsIndex; $currentWeightsSquared = array(); - $this->_weightsSquared[$weightsIndex] = &$currentWeightsSquared; // keep a single variable to keep track of where we are in the array. // This is helpful since we skip over one of the spots @@ -112,7 +110,10 @@ class GaussianWeightedSumFactor extends GaussianFactor $currentWeights[$currentDestinationWeightIndex] = $finalWeight; $currentWeightsSquared[$currentDestinationWeightIndex] = square($finalWeight); $variableIndices[count($variableWeights)] = 0; - $this->_variableIndexOrdersForWeights[] = &$variableIndices; + $this->_variableIndexOrdersForWeights[] = $variableIndices; + + $this->_weights[$weightsIndex] = $currentWeights; + $this->_weightsSquared[$weightsIndex] = $currentWeightsSquared; } $this->createVariableToMessageBinding($sumVariable); diff --git a/PHPSkills/TrueSkill/Layers/TeamPerformancesToTeamPerformanceDifferencesLayer.php b/PHPSkills/TrueSkill/Layers/TeamPerformancesToTeamPerformanceDifferencesLayer.php index 78753a7..132c23f 100644 --- a/PHPSkills/TrueSkill/Layers/TeamPerformancesToTeamPerformanceDifferencesLayer.php +++ b/PHPSkills/TrueSkill/Layers/TeamPerformancesToTeamPerformanceDifferencesLayer.php @@ -29,7 +29,7 @@ class TeamPerformancesToTeamPerformanceDifferencesLayer extends TrueSkillFactorG $weakerTeam = $inputVariablesGroups[$i + 1][0]; $currentDifference = &$this->createOutputVariable(); - $newDifferencesFactor = &$this->createTeamPerformanceToDifferenceFactor($strongerTeam, $weakerTeam, $currentDifference); + $newDifferencesFactor = $this->createTeamPerformanceToDifferenceFactor($strongerTeam, $weakerTeam, $currentDifference); $this->addLayerFactor($newDifferencesFactor); // REVIEW: Does it make sense to have groups of one? diff --git a/PHPSkills/TrueSkill/TrueSkillFactorGraph.php b/PHPSkills/TrueSkill/TrueSkillFactorGraph.php index 9330e09..69f07fc 100644 --- a/PHPSkills/TrueSkill/TrueSkillFactorGraph.php +++ b/PHPSkills/TrueSkill/TrueSkillFactorGraph.php @@ -3,6 +3,7 @@ namespace Moserware\Skills\TrueSkill; require_once(dirname(__FILE__) . '/../GameInfo.php'); require_once(dirname(__FILE__) . '/../Rating.php'); +require_once(dirname(__FILE__) . '/../RatingContainer.php'); require_once(dirname(__FILE__) . '/../FactorGraphs/FactorGraph.php'); require_once(dirname(__FILE__) . '/../FactorGraphs/FactorList.php'); require_once(dirname(__FILE__) . '/../FactorGraphs/Schedule.php'); @@ -18,6 +19,7 @@ require_once(dirname(__FILE__) . '/Layers/TeamPerformancesToTeamPerformanceDiffe use Moserware\Numerics\GaussianDistribution; use Moserware\Skills\GameInfo; use Moserware\Skills\Rating; +use Moserware\Skills\RatingContainer; use Moserware\Skills\FactorGraphs\FactorGraph; use Moserware\Skills\FactorGraphs\FactorList; use Moserware\Skills\FactorGraphs\ScheduleSequence; @@ -130,14 +132,16 @@ class TrueSkillFactorGraph extends FactorGraph public function getUpdatedRatings() { - $result = array(); + $result = new RatingContainer(); foreach ($this->_priorLayer->getOutputVariablesGroups() as $currentTeam) { foreach ($currentTeam as $currentPlayer) { - $result[$currentPlayer->getKey()] = new Rating($currentPlayer->getValue()->getMean(), - $currentPlayer->getValue()->getStandardDeviation()); + $newRating = new Rating($currentPlayer->getValue()->getMean(), + $currentPlayer->getValue()->getStandardDeviation()); + + $result->setRating($currentPlayer, $newRating); } }