More type stuff and unused code removed.

This commit is contained in:
Jens True 2023-08-01 12:56:37 +00:00
parent dc35035c3c
commit 7792552c9f
9 changed files with 20 additions and 44 deletions

@ -1,24 +0,0 @@
<?php
namespace DNW\Skills\FactorGraphs;
use Exception;
// XXX: This class is not used anywhere
class DefaultVariable extends Variable
{
public function __construct()
{
parent::__construct('Default', null);
}
public function getValue()
{
return null;
}
public function setValue($value): never
{
throw new Exception();
}
}

@ -102,7 +102,7 @@ abstract class Factor implements \Stringable
abstract public function createVariableToMessageBinding(Variable $variable); abstract public function createVariableToMessageBinding(Variable $variable);
protected function createVariableToMessageBindingWithMessage(Variable $variable, Message $message) protected function createVariableToMessageBindingWithMessage(Variable $variable, Message $message): Message
{ {
$this->_messageToVariableBinding->setValue($message, $variable); $this->_messageToVariableBinding->setValue($message, $variable);
$this->_messages[] = $message; $this->_messages[] = $message;

@ -4,12 +4,12 @@ namespace DNW\Skills\FactorGraphs;
class KeyedVariable extends Variable class KeyedVariable extends Variable
{ {
public function __construct(private $_key, $name, $prior) public function __construct(private mixed $_key, string $name, mixed $prior)
{ {
parent::__construct($name, $prior); parent::__construct($name, $prior);
} }
public function getKey() public function getKey(): mixed
{ {
return $this->_key; return $this->_key;
} }

@ -24,7 +24,7 @@ class Variable implements \Stringable
$this->_value = $value; $this->_value = $value;
} }
public function resetToPrior() public function resetToPrior(): void
{ {
$this->_value = $this->_prior; $this->_value = $this->_prior;
} }

@ -8,14 +8,14 @@ class VariableFactory
{ {
} }
public function createBasicVariable($name) public function createBasicVariable(string $name): Variable
{ {
$initializer = $this->_variablePriorInitializer; $initializer = $this->_variablePriorInitializer;
return new Variable($name, $initializer()); return new Variable($name, $initializer());
} }
public function createKeyedVariable($key, $name) public function createKeyedVariable(mixed $key, string $name): KeyedVariable
{ {
$initializer = $this->_variablePriorInitializer; $initializer = $this->_variablePriorInitializer;

@ -11,14 +11,14 @@ class HashMap
private array $_hashToKey = []; private array $_hashToKey = [];
public function getValue($key) public function getValue(string|object $key): mixed
{ {
$hash = self::getHash($key); $hash = self::getHash($key);
return $this->_hashToValue[$hash]; return $this->_hashToValue[$hash];
} }
public function setValue($key, $value) public function setValue(string|object $key, mixed $value): self
{ {
$hash = self::getHash($key); $hash = self::getHash($key);
$this->_hashToKey[$hash] = $key; $this->_hashToKey[$hash] = $key;
@ -27,22 +27,22 @@ class HashMap
return $this; return $this;
} }
public function getAllKeys() public function getAllKeys(): array
{ {
return array_values($this->_hashToKey); return array_values($this->_hashToKey);
} }
public function getAllValues() public function getAllValues(): array
{ {
return array_values($this->_hashToValue); return array_values($this->_hashToValue);
} }
public function count() public function count(): int
{ {
return count($this->_hashToKey); return count($this->_hashToKey);
} }
private static function getHash($key) private static function getHash(string|Object $key): string
{ {
if (is_object($key)) { if (is_object($key)) {
return spl_object_hash($key); return spl_object_hash($key);

@ -4,34 +4,34 @@ namespace DNW\Skills;
class RatingContainer class RatingContainer
{ {
private $_playerToRating; private HashMap $_playerToRating;
public function __construct() public function __construct()
{ {
$this->_playerToRating = new HashMap(); $this->_playerToRating = new HashMap();
} }
public function getRating(Player $player) public function getRating(Player $player): mixed
{ {
return $this->_playerToRating->getValue($player); return $this->_playerToRating->getValue($player);
} }
public function setRating(Player $player, Rating $rating) public function setRating(Player $player, Rating $rating): HashMap
{ {
return $this->_playerToRating->setValue($player, $rating); return $this->_playerToRating->setValue($player, $rating);
} }
public function getAllPlayers() public function getAllPlayers(): array
{ {
return $this->_playerToRating->getAllKeys(); return $this->_playerToRating->getAllKeys();
} }
public function getAllRatings() public function getAllRatings(): array
{ {
return $this->_playerToRating->getAllValues(); return $this->_playerToRating->getAllValues();
} }
public function count() public function count(): int
{ {
return $this->_playerToRating->count(); return $this->_playerToRating->count();
} }

@ -6,7 +6,7 @@ use DNW\Skills\Numerics\GaussianDistribution;
final class DrawMargin final class DrawMargin
{ {
public static function getDrawMarginFromDrawProbability($drawProbability, $beta) public static function getDrawMarginFromDrawProbability(float $drawProbability, float $beta): float
{ {
// Derived from TrueSkill technical report (MSR-TR-2006-80), page 6 // Derived from TrueSkill technical report (MSR-TR-2006-80), page 6

@ -22,7 +22,7 @@ abstract class GaussianFactor extends Factor
return $logZ; return $logZ;
} }
public function createVariableToMessageBinding(Variable $variable) public function createVariableToMessageBinding(Variable $variable): Message
{ {
$newDistribution = GaussianDistribution::fromPrecisionMean(0, 0); $newDistribution = GaussianDistribution::fromPrecisionMean(0, 0);