mirror of
				https://github.com/furyfire/trueskill.git
				synced 2025-11-04 10:12:28 +01:00 
			
		
		
		
	Getting rid of more warnings.
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace DNW\Skills\FactorGraphs;
 | 
			
		||||
use DNW\Skills\FactorGraphs\ScheduleSequence;
 | 
			
		||||
 | 
			
		||||
abstract class FactorGraphLayer
 | 
			
		||||
{
 | 
			
		||||
@@ -9,15 +10,23 @@ abstract class FactorGraphLayer
 | 
			
		||||
     */
 | 
			
		||||
    private array $localFactors = [];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array<int,array<int,object>> 
 | 
			
		||||
     */
 | 
			
		||||
    private array $outputVariablesGroups = [];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array<int,array<int,object>> 
 | 
			
		||||
     */
 | 
			
		||||
    private $inputVariablesGroups = [];
 | 
			
		||||
 | 
			
		||||
    protected function __construct(private readonly FactorGraph $parentFactorGraph)
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function getInputVariablesGroups()
 | 
			
		||||
    /**
 | 
			
		||||
     * @return array<int,array<int,object>>
 | 
			
		||||
     */
 | 
			
		||||
    protected function getInputVariablesGroups(): array
 | 
			
		||||
    {
 | 
			
		||||
        return $this->inputVariablesGroups;
 | 
			
		||||
    }
 | 
			
		||||
@@ -31,6 +40,7 @@ abstract class FactorGraphLayer
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This reference is still needed
 | 
			
		||||
     * @return array<int,array<int,object>>
 | 
			
		||||
     */
 | 
			
		||||
    public function &getOutputVariablesGroups(): array
 | 
			
		||||
    {
 | 
			
		||||
@@ -45,11 +55,17 @@ abstract class FactorGraphLayer
 | 
			
		||||
        return $this->localFactors;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param array<int,array<int,object>> $value
 | 
			
		||||
     */
 | 
			
		||||
    public function setInputVariablesGroups(array $value): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->inputVariablesGroups = $value;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param Schedule[] $itemsToSequence
 | 
			
		||||
     */
 | 
			
		||||
    protected function scheduleSequence(array $itemsToSequence, string $name): ScheduleSequence
 | 
			
		||||
    {
 | 
			
		||||
        return new ScheduleSequence($name, $itemsToSequence);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,9 @@ namespace DNW\Skills\Numerics;
 | 
			
		||||
 | 
			
		||||
class DiagonalMatrix extends Matrix
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @param float[] $diagonalValues
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(array $diagonalValues)
 | 
			
		||||
    {
 | 
			
		||||
        $diagonalCount = count($diagonalValues);
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,16 @@ class Matrix
 | 
			
		||||
{
 | 
			
		||||
    public const ERROR_TOLERANCE = 0.0000000001;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param array<int,array<int,float>> $matrixRowData
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(private int $rowCount = 0, private int $columnCount = 0, private array $matrixRowData = array())
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param array<int,array<int,float>> $columnValues
 | 
			
		||||
     */
 | 
			
		||||
    public static function fromColumnValues(int $rows, int $columns, array $columnValues): self
 | 
			
		||||
    {
 | 
			
		||||
        $data = [];
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ class RankSorter
 | 
			
		||||
     *
 | 
			
		||||
     * @param  array<mixed> $teams     The items to sort according to the order specified by ranks.
 | 
			
		||||
     * @param  array<int>   $teamRanks The ranks for each item where 1 is first place.
 | 
			
		||||
     * @return array<array>
 | 
			
		||||
     * @return array<mixed>
 | 
			
		||||
     */
 | 
			
		||||
    public static function sort(array &$teams, array &$teamRanks): array
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,7 @@ class FactorGraphTrueSkillCalculator extends SkillCalculator
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Team[] $teamAssignmentsList
 | 
			
		||||
     * @param Team[] $teamAssignmentsList
 | 
			
		||||
     */
 | 
			
		||||
    private static function getPlayerMeansVector(array $teamAssignmentsList): Vector
 | 
			
		||||
    {
 | 
			
		||||
@@ -106,7 +106,7 @@ class FactorGraphTrueSkillCalculator extends SkillCalculator
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Team[] $teamAssignmentsList
 | 
			
		||||
     * @param Team[] $teamAssignmentsList
 | 
			
		||||
     */
 | 
			
		||||
    private static function getPlayerCovarianceMatrix(array $teamAssignmentsList): DiagonalMatrix
 | 
			
		||||
    {
 | 
			
		||||
@@ -123,7 +123,7 @@ class FactorGraphTrueSkillCalculator extends SkillCalculator
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Helper function that gets a list of values for all player ratings
 | 
			
		||||
     * @var Team[] $teamAssignmentsList
 | 
			
		||||
     * @param Team[] $teamAssignmentsList
 | 
			
		||||
     * @return int[]
 | 
			
		||||
     */
 | 
			
		||||
    private static function getPlayerRatingValues(array $teamAssignmentsList, \Closure $playerRatingFunction): array
 | 
			
		||||
 
 | 
			
		||||
@@ -230,6 +230,10 @@ class GaussianWeightedSumFactor extends GaussianFactor
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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?
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ class IteratedTeamDifferencesInnerLayer extends TrueSkillFactorGraphLayer
 | 
			
		||||
 | 
			
		||||
    public function createPriorSchedule(): ?ScheduleSequence
 | 
			
		||||
    {
 | 
			
		||||
        switch (is_countable($this->getInputVariablesGroups()) ? count($this->getInputVariablesGroups()) : 0) {
 | 
			
		||||
        switch (count($this->getInputVariablesGroups())) {
 | 
			
		||||
            case 0:
 | 
			
		||||
            case 1:
 | 
			
		||||
                throw new Exception('InvalidOperation');
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@ use DNW\Skills\Player;
 | 
			
		||||
use DNW\Skills\Team;
 | 
			
		||||
use DNW\Skills\TrueSkill\Factors\GaussianWeightedSumFactor;
 | 
			
		||||
use DNW\Skills\FactorGraphs\Variable; 
 | 
			
		||||
use DNW\Skills\FactorGraphs\KeyedVariable; 
 | 
			
		||||
 | 
			
		||||
class PlayerPerformancesToTeamPerformancesLayer extends TrueSkillFactorGraphLayer
 | 
			
		||||
{
 | 
			
		||||
@@ -42,7 +43,7 @@ class PlayerPerformancesToTeamPerformancesLayer extends TrueSkillFactorGraphLaye
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param Team[] $teamMembers
 | 
			
		||||
     * @param KeyedVariable[] $teamMembers
 | 
			
		||||
     */
 | 
			
		||||
    protected function createPlayerToTeamSumFactor(array $teamMembers, Variable $sumVariable): GaussianWeightedSumFactor
 | 
			
		||||
    {
 | 
			
		||||
@@ -81,6 +82,9 @@ class PlayerPerformancesToTeamPerformancesLayer extends TrueSkillFactorGraphLaye
 | 
			
		||||
        return $this->scheduleSequence($allFactors, "all of the team's sum iterations");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param KeyedVariable[] $team
 | 
			
		||||
     */
 | 
			
		||||
    private function createOutputVariable(array $team): Variable
 | 
			
		||||
    {
 | 
			
		||||
        $memberNames = array_map(fn ($currentPlayer) => (string) ($currentPlayer->getKey()), $team);
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ class TeamDifferencesComparisonLayer extends TrueSkillFactorGraphLayer
 | 
			
		||||
    public function buildLayer(): void
 | 
			
		||||
    {
 | 
			
		||||
        $inputVarGroups = $this->getInputVariablesGroups();
 | 
			
		||||
        $inputVarGroupsCount = is_countable($inputVarGroups) ? count($inputVarGroups) : 0;
 | 
			
		||||
        $inputVarGroupsCount = count($inputVarGroups);
 | 
			
		||||
 | 
			
		||||
        for ($i = 0; $i < $inputVarGroupsCount; $i++) {
 | 
			
		||||
            $isDraw = ($this->teamRanks[$i] == $this->teamRanks[$i + 1]);
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ class TeamPerformancesToTeamPerformanceDifferencesLayer extends TrueSkillFactorG
 | 
			
		||||
    public function buildLayer(): void
 | 
			
		||||
    {
 | 
			
		||||
        $inputVariablesGroups = $this->getInputVariablesGroups();
 | 
			
		||||
        $inputVariablesGroupsCount = is_countable($inputVariablesGroups) ? count($inputVariablesGroups) : 0;
 | 
			
		||||
        $inputVariablesGroupsCount = count($inputVariablesGroups);
 | 
			
		||||
        $outputVariablesGroup = &$this->getOutputVariablesGroups();
 | 
			
		||||
 | 
			
		||||
        for ($i = 0; $i < $inputVariablesGroupsCount - 1; $i++) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user