mirror of
				https://github.com/furyfire/trueskill.git
				synced 2025-11-04 10:12:28 +01:00 
			
		
		
		
	String based "name" for Variable class removed for performance
This commit is contained in:
		@@ -42,7 +42,7 @@ class GaussianWeightedSumFactor extends GaussianFactor
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(Variable $sumVariable, array $variablesToSum, array $variableWeights)
 | 
			
		||||
    {
 | 
			
		||||
        parent::__construct(self::createName((string)$sumVariable, $variablesToSum, $variableWeights));
 | 
			
		||||
        parent::__construct('$sumVariable, $variablesToSum, $variableWeights');
 | 
			
		||||
 | 
			
		||||
        // The first weights are a straightforward copy
 | 
			
		||||
        // v_0 = a_1*v_1 + a_2*v_2 + ... + a_n * v_n
 | 
			
		||||
@@ -235,42 +235,4 @@ class GaussianWeightedSumFactor extends GaussianFactor
 | 
			
		||||
            $updatedVariables
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param Variable[] $variablesToSum
 | 
			
		||||
     * @param float[] $weights
 | 
			
		||||
     */
 | 
			
		||||
    private static function createName(string $sumVariable, array $variablesToSum, array $weights): string
 | 
			
		||||
    {
 | 
			
		||||
        // TODO: Perf? Use PHP equivalent of StringBuilder? implode on arrays?
 | 
			
		||||
        $result = $sumVariable;
 | 
			
		||||
        $result .= ' = ';
 | 
			
		||||
 | 
			
		||||
        $totalVars = count($variablesToSum);
 | 
			
		||||
        for ($i = 0; $i < $totalVars; ++$i) {
 | 
			
		||||
            $isFirst = ($i == 0);
 | 
			
		||||
 | 
			
		||||
            if ($isFirst && ($weights[$i] < 0)) {
 | 
			
		||||
                $result .= '-';
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $absValue = sprintf('%.2f', \abs($weights[$i])); // 0.00?
 | 
			
		||||
            $result .= $absValue;
 | 
			
		||||
            $result .= '*[';
 | 
			
		||||
            $result .= (string)$variablesToSum[$i];
 | 
			
		||||
            $result .= ']';
 | 
			
		||||
 | 
			
		||||
            $isLast = ($i === $totalVars - 1);
 | 
			
		||||
 | 
			
		||||
            if (! $isLast) {
 | 
			
		||||
                if ($weights[$i + 1] >= 0) {
 | 
			
		||||
                    $result .= ' + ';
 | 
			
		||||
                } else {
 | 
			
		||||
                    $result .= ' - ';
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $result;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user