More types

This commit is contained in:
Jens True 2023-08-02 12:39:42 +00:00
parent 72de6363fe
commit 4f60c3d024
5 changed files with 20 additions and 13 deletions

@ -8,12 +8,18 @@ use Exception;
abstract class Factor implements \Stringable abstract class Factor implements \Stringable
{ {
/**
* @var Message[] $messages
*/
private array $messages = []; private array $messages = [];
private HashMap $messageToVariableBinding; private HashMap $messageToVariableBinding;
private string $name; private string $name;
/**
* @var Variable[] $variables
*/
private array $variables = []; private array $variables = [];
protected function __construct(string $name) protected function __construct(string $name)
@ -64,7 +70,7 @@ abstract class Factor implements \Stringable
return $this->updateMessageVariable($message, $variable); return $this->updateMessageVariable($message, $variable);
} }
protected function updateMessageVariable(Message $message, Variable $variable) protected function updateMessageVariable(Message $message, Variable $variable): float
{ {
throw new Exception(); throw new Exception();
} }
@ -82,13 +88,9 @@ abstract class Factor implements \Stringable
/** /**
* Sends the ith message to the marginal and returns the log-normalization constant * Sends the ith message to the marginal and returns the log-normalization constant
*
* @param $messageIndex
* @return
*
* @throws Exception * @throws Exception
*/ */
public function sendMessageIndex($messageIndex) public function sendMessageIndex(int $messageIndex): float|int
{ {
Guard::argumentIsValidIndex($messageIndex, count($this->messages), 'messageIndex'); Guard::argumentIsValidIndex($messageIndex, count($this->messages), 'messageIndex');
@ -98,7 +100,7 @@ abstract class Factor implements \Stringable
return $this->sendMessageVariable($message, $variable); return $this->sendMessageVariable($message, $variable);
} }
abstract protected function sendMessageVariable(Message $message, Variable $variable); abstract protected function sendMessageVariable(Message $message, Variable $variable): float|int;
abstract public function createVariableToMessageBinding(Variable $variable); abstract public function createVariableToMessageBinding(Variable $variable);

@ -4,6 +4,9 @@ namespace DNW\Skills\FactorGraphs;
abstract class FactorGraphLayer abstract class FactorGraphLayer
{ {
/**
* @var Factor[] $localFactors
*/
private array $localFactors = []; private array $localFactors = [];
private array $outputVariablesGroups = []; private array $outputVariablesGroups = [];
@ -34,6 +37,9 @@ abstract class FactorGraphLayer
return $this->outputVariablesGroups; return $this->outputVariablesGroups;
} }
/**
* @return Factor[]
*/
public function getLocalFactors(): array public function getLocalFactors(): array
{ {
return $this->localFactors; return $this->localFactors;

@ -4,7 +4,7 @@ namespace DNW\Skills;
class PartialPlay class PartialPlay
{ {
public static function getPartialPlayPercentage($player) public static function getPartialPlayPercentage(Player $player): float
{ {
// If the player doesn't support the interface, assume 1.0 == 100% // If the player doesn't support the interface, assume 1.0 == 100%
$supportsPartialPlay = $player instanceof ISupportPartialPlay; $supportsPartialPlay = $player instanceof ISupportPartialPlay;

@ -13,6 +13,7 @@ use DNW\Skills\PlayersRange;
use DNW\Skills\RankSorter; use DNW\Skills\RankSorter;
use DNW\Skills\SkillCalculator; use DNW\Skills\SkillCalculator;
use DNW\Skills\SkillCalculatorSupportedOptions; use DNW\Skills\SkillCalculatorSupportedOptions;
use DNW\Skills\Team;
use DNW\Skills\TeamsRange; use DNW\Skills\TeamsRange;
use DNW\Skills\RatingContainer; use DNW\Skills\RatingContainer;
@ -151,11 +152,9 @@ class FactorGraphTrueSkillCalculator extends SkillCalculator
$playerAssignments = []; $playerAssignments = [];
$totalPreviousPlayers = 0; $totalPreviousPlayers = 0;
$teamAssignmentsListCount = is_countable($teamAssignmentsList) ? count($teamAssignmentsList) : 0;
$currentColumn = 0; $currentColumn = 0;
for ($i = 0; $i < $teamAssignmentsListCount - 1; $i++) { for ($i = 0; $i < count($teamAssignmentsList) - 1; $i++) {
$currentTeam = $teamAssignmentsList[$i]; $currentTeam = $teamAssignmentsList[$i];
// Need to add in 0's for all the previous players, since they're not // Need to add in 0's for all the previous players, since they're not
@ -185,6 +184,6 @@ class FactorGraphTrueSkillCalculator extends SkillCalculator
$currentColumn++; $currentColumn++;
} }
return Matrix::fromColumnValues($totalPlayers, $teamAssignmentsListCount - 1, $playerAssignments); return Matrix::fromColumnValues($totalPlayers, count($teamAssignmentsList) - 1, $playerAssignments);
} }
} }

@ -27,7 +27,7 @@ class IteratedTeamDifferencesInnerLayer extends TrueSkillFactorGraphLayer
); );
} }
public function buildLayer() public function buildLayer(): void
{ {
$inputVariablesGroups = $this->getInputVariablesGroups(); $inputVariablesGroups = $this->getInputVariablesGroups();
$this->TeamPerformancesToTeamPerformanceDifferencesLayer->setInputVariablesGroups($inputVariablesGroups); $this->TeamPerformancesToTeamPerformanceDifferencesLayer->setInputVariablesGroups($inputVariablesGroups);