mirror of
				https://github.com/furyfire/trueskill.git
				synced 2025-11-04 10:12:28 +01:00 
			
		
		
		
	First pass at building the graph, but still off from running it
This commit is contained in:
		@@ -93,7 +93,7 @@ class GaussianWeightedSumFactor extends GaussianFactor
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                $currentWeights[$currentDestinationWeightIndex] = $currentWeight;
 | 
			
		||||
                $currentWeightsSquared[$currentDestinationWeightIndex] = $currentWeight*currentWeight;
 | 
			
		||||
                $currentWeightsSquared[$currentDestinationWeightIndex] = $currentWeight*$currentWeight;
 | 
			
		||||
 | 
			
		||||
                $variableIndices[$currentDestinationWeightIndex + 1] = $currentWeightSourceIndex + 1;
 | 
			
		||||
                $currentDestinationWeightIndex++;
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,8 @@ class IteratedTeamDifferencesInnerLayer extends TrueSkillFactorGraphLayer
 | 
			
		||||
 | 
			
		||||
    public function buildLayer()
 | 
			
		||||
    {
 | 
			
		||||
        $this->_TeamPerformancesToTeamPerformanceDifferencesLayer->setInputVariablesGroups($this->getInputVariablesGroups());
 | 
			
		||||
        $inputVariablesGroups = $this->getInputVariablesGroups();
 | 
			
		||||
        $this->_TeamPerformancesToTeamPerformanceDifferencesLayer->setInputVariablesGroups($inputVariablesGroups);
 | 
			
		||||
        $this->_TeamPerformancesToTeamPerformanceDifferencesLayer->buildLayer();
 | 
			
		||||
 | 
			
		||||
        $this->_TeamDifferencesComparisonLayer->setInputVariablesGroups(
 | 
			
		||||
 
 | 
			
		||||
@@ -27,12 +27,13 @@ class PlayerPerformancesToTeamPerformancesLayer extends TrueSkillFactorGraphLaye
 | 
			
		||||
    {
 | 
			
		||||
        foreach ($this->getInputVariablesGroups() as $currentTeam)
 | 
			
		||||
        {
 | 
			
		||||
            $teamPerformance = $this->createOutputVariable($currentTeam);
 | 
			
		||||
            $this->addLayerFactor($this->createPlayerToTeamSumFactor($currentTeam, $teamPerformance));
 | 
			
		||||
            $teamPerformance = &$this->createOutputVariable($currentTeam);
 | 
			
		||||
            $newSumFactor = $this->createPlayerToTeamSumFactor($currentTeam, $teamPerformance);
 | 
			
		||||
            $this->addLayerFactor($newSumFactor);
 | 
			
		||||
 | 
			
		||||
            // REVIEW: Does it make sense to have groups of one?
 | 
			
		||||
            $outputVariablesGroups = $this->getOutputVariablesGroups();
 | 
			
		||||
            $outputVariablesGroups = $teamPerformance;
 | 
			
		||||
            $outputVariablesGroups = &$this->getOutputVariablesGroups();
 | 
			
		||||
            $outputVariablesGroups[] = array($teamPerformance);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,8 @@ class PlayerSkillsToPerformancesLayer extends TrueSkillFactorGraphLayer
 | 
			
		||||
            foreach ($currentTeam as $playerSkillVariable)
 | 
			
		||||
            {
 | 
			
		||||
                $playerPerformance = $this->createOutputVariable($playerSkillVariable->getKey());
 | 
			
		||||
                $this->addLayerFactor($this->createLikelihood($playerSkillVariable, $playerPerformance));
 | 
			
		||||
                $newLikelihoodFactor = $this->createLikelihood($playerSkillVariable, $playerPerformance);
 | 
			
		||||
                $this->addLayerFactor($newLikelihoodFactor);
 | 
			
		||||
                $currentTeamPlayerPerformances[] = &$playerPerformance;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 
 | 
			
		||||
@@ -20,16 +20,17 @@ class TeamPerformancesToTeamPerformanceDifferencesLayer extends TrueSkillFactorG
 | 
			
		||||
 | 
			
		||||
    public function buildLayer()
 | 
			
		||||
    {
 | 
			
		||||
        $inputVariablesGroup = $this->getInputVariablesGroups();
 | 
			
		||||
        $inputVariablesGroupCount = count($inputVariablesGroup);
 | 
			
		||||
        $inputVariablesGroups = &$this->getInputVariablesGroups();
 | 
			
		||||
        $inputVariablesGroupsCount = count($inputVariablesGroups);
 | 
			
		||||
 | 
			
		||||
        for ($i = 0; $i < $inputVariablesGroupCount - 1; $i++)
 | 
			
		||||
        for ($i = 0; $i < $inputVariablesGroupsCount - 1; $i++)
 | 
			
		||||
        {
 | 
			
		||||
            $strongerTeam = $inputVariablesGroups[$i][0];
 | 
			
		||||
            $weakerTeam = $inputVariablesGroups[$i + 1][0];
 | 
			
		||||
 | 
			
		||||
            $currentDifference = $this->createOutputVariable();
 | 
			
		||||
            $this->addLayerFactor($this->createTeamPerformanceToDifferenceFactor($strongerTeam, $weakerTeam, currentDifference));
 | 
			
		||||
            $newDifferencesFactor = $this->createTeamPerformanceToDifferenceFactor($strongerTeam, $weakerTeam, $currentDifference);
 | 
			
		||||
            $this->addLayerFactor($newDifferencesFactor);
 | 
			
		||||
 | 
			
		||||
            // REVIEW: Does it make sense to have groups of one?
 | 
			
		||||
            $outputVariablesGroup = $this->getOutputVariablesGroups();
 | 
			
		||||
@@ -40,7 +41,9 @@ class TeamPerformancesToTeamPerformanceDifferencesLayer extends TrueSkillFactorG
 | 
			
		||||
    private function createTeamPerformanceToDifferenceFactor(
 | 
			
		||||
        Variable &$strongerTeam, Variable &$weakerTeam, Variable &$output)
 | 
			
		||||
    {
 | 
			
		||||
        return new GaussianWeightedSumFactor($output, array($strongerTeam, $weakerTeam), array(1.0, -1.0));
 | 
			
		||||
        $teams = array($strongerTeam, $weakerTeam);
 | 
			
		||||
        $weights = array(1.0, -1.0);
 | 
			
		||||
        return new GaussianWeightedSumFactor($output, $teams, $weights);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function createOutputVariable()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user