_teams = $teams; } public function buildLayer() { foreach ($this->_teams as $currentTeam) { $currentTeamSkills = array(); foreach ($currentTeam as $currentTeamPlayer) { $playerSkill = $this->createSkillOutputVariable($currentTeamPlayer.Key); $this->addLayerFactor($this->createPriorFactor($currentTeamPlayer.Key, $currentTeamPlayer.Value, $playerSkill)); $currentTeamSkills[] = $playerSkill; } $outputVariablesGroups = $this->getOutputVariablesGroups(); $outputVariablesGroups[] = $currentTeamSkills; } } public function createPriorSchedule() { return $this->scheduleSequence( array_map( function($prior) { return new ScheduleStep("Prior to Skill Step", $prior, 0); }, $this->getLocalFactors()), "All priors"); } private function createPriorFactor($player, $priorRating, $skillsVariable) { return new GaussianPriorFactor($priorRating->getMean(), square($priorRating->getStandardDeviation()) + square($this->getParentFactorGraph()->getGameInfo()->getDynamicsFactor()), $skillsVariable); } private function createSkillOutputVariable($key) { return $this->getParentFactorGraph()->getVariableFactory()->createKeyedVariable($key, "{0}'s skill", $key); } } ?>