diff --git a/PHPSkills/FactorGraphs/Factor.php b/PHPSkills/FactorGraphs/Factor.php index 384c43e..ad571e3 100644 --- a/PHPSkills/FactorGraphs/Factor.php +++ b/PHPSkills/FactorGraphs/Factor.php @@ -49,7 +49,9 @@ abstract class Factor public function updateMessageIndex($messageIndex) { Guard::argumentIsValidIndex($messageIndex, count($this->_messages), "messageIndex"); - return $this->updateMessageVariable($this->_messages[$messageIndex], $this->_messageToVariableBinding->getValue($messageIndex)); + $message = $this->_messages[$messageIndex]; + $variable = $this->_messageToVariableBinding->getValue($this->_messages[$messageIndex]); + return $this->updateMessageVariable($message, $variable); } protected function updateMessageVariable(Message $message, Variable $variable) @@ -60,7 +62,7 @@ abstract class Factor /// Resets the marginal of the variables a factor is connected to public function resetMarginals() { - foreach ($this->_messageToVariableBindings->getAllValues() as $currentVariable) + foreach ($this->_messageToVariableBinding->getAllValues() as $currentVariable) { $currentVariable->resetToPrior(); } @@ -69,7 +71,7 @@ abstract class Factor /// Sends the ith message to the marginal and returns the log-normalization constant public function sendMessageIndex($messageIndex) { - Guard::argumentIsValidIndex($messageIndex, count($_messages), "messageIndex"); + Guard::argumentIsValidIndex($messageIndex, count($this->_messages), "messageIndex"); $message = $this->_messages[$messageIndex]; $variable = $this->_messageToVariableBinding->getValue($message); diff --git a/PHPSkills/FactorGraphs/FactorGraphLayer.php b/PHPSkills/FactorGraphs/FactorGraphLayer.php index 0a80ef7..ec0e93a 100644 --- a/PHPSkills/FactorGraphs/FactorGraphLayer.php +++ b/PHPSkills/FactorGraphs/FactorGraphLayer.php @@ -43,7 +43,7 @@ abstract class FactorGraphLayer $this->_inputVariablesGroups = $value; } - protected function scheduleSequence(&$itemsToSequence, $name) + protected function scheduleSequence($itemsToSequence, $name) { return new ScheduleSequence($name, $itemsToSequence); } diff --git a/PHPSkills/FactorGraphs/Message.php b/PHPSkills/FactorGraphs/Message.php index 47d217e..c318dcf 100644 --- a/PHPSkills/FactorGraphs/Message.php +++ b/PHPSkills/FactorGraphs/Message.php @@ -12,11 +12,16 @@ class Message $this->_value = $value; } - public function getValue() + public function& getValue() { return $this->_value; } + public function setValue(&$value) + { + $this->_value = &$value; + } + public function __toString() { return $this->_name; diff --git a/PHPSkills/HashMap.php b/PHPSkills/HashMap.php index dc4f3c1..c1e4446 100644 --- a/PHPSkills/HashMap.php +++ b/PHPSkills/HashMap.php @@ -9,7 +9,8 @@ class HashMap public function getValue($key) { - return $this->_hashToValue[self::getHash($key)]; + $hash = self::getHash($key); + return $this->_hashToValue[$hash]; } public function setValue($key, $value) diff --git a/PHPSkills/Numerics/GaussianDistribution.php b/PHPSkills/Numerics/GaussianDistribution.php index 6c0dacb..55cf685 100644 --- a/PHPSkills/Numerics/GaussianDistribution.php +++ b/PHPSkills/Numerics/GaussianDistribution.php @@ -115,7 +115,7 @@ class GaussianDistribution // Computes the absolute difference between two Gaussians public static function subtract(GaussianDistribution $left, GaussianDistribution $right) { - return absoluteDifference($left, $right); + return GaussianDistribution::absoluteDifference($left, $right); } public static function logProductNormalization(GaussianDistribution $left, GaussianDistribution $right) diff --git a/PHPSkills/TrueSkill/Factors/GaussianFactor.php b/PHPSkills/TrueSkill/Factors/GaussianFactor.php index d9d7567..98d98db 100644 --- a/PHPSkills/TrueSkill/Factors/GaussianFactor.php +++ b/PHPSkills/TrueSkill/Factors/GaussianFactor.php @@ -25,7 +25,7 @@ abstract class GaussianFactor extends Factor $marginal = &$variable->getValue(); $messageValue = &$message->getValue(); $logZ = GaussianDistribution::logProductNormalization($marginal, $messageValue); - $variable->setValue($marginal*$messageValue); + $variable->setValue(GaussianDistribution::multiply($marginal, $messageValue)); return $logZ; } diff --git a/PHPSkills/TrueSkill/Factors/GaussianLikelihoodFactor.php b/PHPSkills/TrueSkill/Factors/GaussianLikelihoodFactor.php index be2e41e..a30dedd 100644 --- a/PHPSkills/TrueSkill/Factors/GaussianLikelihoodFactor.php +++ b/PHPSkills/TrueSkill/Factors/GaussianLikelihoodFactor.php @@ -66,8 +66,8 @@ class GaussianLikelihoodFactor extends GaussianFactor public function updateMessageIndex($messageIndex) { - $messages = $this->getMessages(); - $vars = $this->getVariables(); + $messages = &$this->getMessages(); + $vars = &$this->getVariables(); switch ($messageIndex) { diff --git a/PHPSkills/TrueSkill/TrueSkillFactorGraph.php b/PHPSkills/TrueSkill/TrueSkillFactorGraph.php index dbff5fe..9330e09 100644 --- a/PHPSkills/TrueSkill/TrueSkillFactorGraph.php +++ b/PHPSkills/TrueSkill/TrueSkillFactorGraph.php @@ -91,7 +91,7 @@ class TrueSkillFactorGraph extends FactorGraph foreach ($this->_layers as $currentLayer) { - foreach ($currentLayer->getFactors() as $currentFactor) + foreach ($currentLayer->getLocalFactors() as $currentFactor) { $factorList->addFactor($currentFactor); } @@ -107,10 +107,10 @@ class TrueSkillFactorGraph extends FactorGraph foreach ($this->_layers as $currentLayer) { - $currentPriorSchedule = &$currentLayer->createPriorSchedule(); + $currentPriorSchedule = $currentLayer->createPriorSchedule(); if ($currentPriorSchedule != null) { - $fullSchedule[] = &$currentPriorSchedule; + $fullSchedule[] = $currentPriorSchedule; } }