mirror of
				https://github.com/furyfire/trueskill.git
				synced 2025-11-04 10:12:28 +01:00 
			
		
		
		
	Cleaned up some of the run schedule parts
This commit is contained in:
		@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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; 
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user