mirror of
				https://github.com/furyfire/trueskill.git
				synced 2025-11-04 10:12:28 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Moserware\Skills\TrueSkill\Layers;
 | 
						|
 | 
						|
class TeamDifferencesComparisonLayer extends TrueSkillFactorGraphLayer
 | 
						|
{
 | 
						|
    private $_epsilon;
 | 
						|
    private $_teamRanks;
 | 
						|
 | 
						|
    public function __construct(TrueSkillFactorGraph $parentGraph, array $teamRanks)
 | 
						|
    {
 | 
						|
        parent::__construct($parentGraph);
 | 
						|
        $this->_teamRanks = $teamRanks;
 | 
						|
        $gameInfo = $this->getParentFactorGraph()->getGameInfo();
 | 
						|
        $this->_epsilon = DrawMargin::getDrawMarginFromDrawProbability($gameInfo->getDrawProbability(), $gameInfo->getBeta());
 | 
						|
    }
 | 
						|
 | 
						|
    public function buildLayer()
 | 
						|
    {
 | 
						|
        $inputVarGroups = $this->getInputVariablesGroups();
 | 
						|
        $inputVarGroupsCount = count($inputVarGroups);
 | 
						|
 | 
						|
        for ($i = 0; $i < $inputVarGroupsCount; $i++)
 | 
						|
        {
 | 
						|
            $isDraw = ($this->_teamRanks[$i] == $this->_teamRanks[$i + 1]);
 | 
						|
            $teamDifference = $inputVarGroups[$i][0];
 | 
						|
 | 
						|
            $factor =
 | 
						|
                $isDraw
 | 
						|
                    ? new GaussianWithinFactor($this->_epsilon, $teamDifference)
 | 
						|
                    : new GaussianGreaterThanFactor($this->_epsilon, $teamDifference);
 | 
						|
 | 
						|
            $this->addLayerFactor($factor);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
?>
 |