<?php namespace Moserware\Skills\TrueSkill\Layers; require_once(dirname(__FILE__) . "/../DrawMargin.php"); require_once(dirname(__FILE__) . "/../TrueSkillFactorGraph.php"); require_once(dirname(__FILE__) . "/../Factors/GaussianGreaterThanFactor.php"); require_once(dirname(__FILE__) . "/../Factors/GaussianWithinFactor.php"); require_once(dirname(__FILE__) . "/TrueSkillFactorGraphLayer.php"); use Moserware\Skills\TrueSkill\DrawMargin; use Moserware\Skills\TrueSkill\TrueSkillFactorGraph; use Moserware\Skills\TrueSkill\Factors\GaussianGreaterThanFactor; use Moserware\Skills\TrueSkill\Factors\GaussianWithinFactor; class TeamDifferencesComparisonLayer extends TrueSkillFactorGraphLayer { private $_epsilon; private $_teamRanks; public function __construct(TrueSkillFactorGraph &$parentGraph, array &$teamRanks) { parent::__construct($parentGraph); $this->_teamRanks = $teamRanks; $gameInfo = $this->getParentFactorGraph()->getGameInfo(); $this->_epsilon = DrawMargin::getDrawMarginFromDrawProbability($gameInfo->getDrawProbability(), $gameInfo->getBeta()); } public function buildLayer() { $inputVarGroups = &$this->getInputVariablesGroups(); $inputVarGroupsCount = count($inputVarGroups); for ($i = 0; $i < $inputVarGroupsCount; $i++) { $isDraw = ($this->_teamRanks[$i] == $this->_teamRanks[$i + 1]); $teamDifference = $inputVarGroups[$i][0]; $factor = $isDraw ? new GaussianWithinFactor($this->_epsilon, $teamDifference) : new GaussianGreaterThanFactor($this->_epsilon, $teamDifference); $this->addLayerFactor($factor); } } } ?>