> */ private array $outputVariablesGroups = []; /** * @var array> */ private $inputVariablesGroups = []; protected function __construct(private readonly TrueSkillFactorGraph $parentFactorGraph) { } /** * @return array> */ protected function getInputVariablesGroups(): array { return $this->inputVariablesGroups; } // HACK public function getParentFactorGraph(): TrueSkillFactorGraph { return $this->parentFactorGraph; } /** * This reference is still needed * @return array> */ public function &getOutputVariablesGroups(): array { return $this->outputVariablesGroups; } /** * @return Factor[] */ public function getLocalFactors(): array { return $this->localFactors; } /** * @param array> $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); } protected function addLayerFactor(Factor $factor): void { $this->localFactors[] = $factor; } abstract public function buildLayer(): void; public function createPriorSchedule(): ?ScheduleSequence { return null; } public function createPosteriorSchedule(): ?ScheduleSequence { return null; } }