public override void BuildLayer() { foreach (var currentTeam in _Teams) { var currentTeamSkills = new List <KeyedVariable <TPlayer, GaussianDistribution> >(); foreach (var currentTeamPlayer in currentTeam) { KeyedVariable <TPlayer, GaussianDistribution> playerSkill = CreateSkillOutputVariable(currentTeamPlayer.Key); AddLayerFactor(CreatePriorFactor(currentTeamPlayer.Key, currentTeamPlayer.Value, playerSkill)); currentTeamSkills.Add(playerSkill); } OutputVariablesGroups.Add(currentTeamSkills); } }
public override void BuildLayer() { foreach (var currentTeam in InputVariablesGroups) { var currentTeamPlayerPerformances = new List <KeyedVariable <TPlayer, GaussianDistribution> >(); foreach (var playerSkillVariable in currentTeam) { KeyedVariable <TPlayer, GaussianDistribution> playerPerformance = CreateOutputVariable(playerSkillVariable.Key); AddLayerFactor(CreateLikelihood(playerSkillVariable, playerPerformance)); currentTeamPlayerPerformances.Add(playerPerformance); } OutputVariablesGroups.Add(currentTeamPlayerPerformances); } }
//If numeric, set by Index. If string, put (or append) keyed value public void SetValue(Primitive key, Variable value) { if (key.GetPrimitiveType() == Return.NUMERIC) { keyedValues[(int)CastNumber(key).GetTypedValue()] = AsKeyedVariable(value); } else if (key.GetPrimitiveType() == Return.STRING) { var keyString = CastString(key).GetTypedValue(); KeyedVariable existing = keyedValues.Where(v => v.Key == keyString).FirstOrDefault(); if (existing == null) { keyedValues.Add(new KeyedVariable(keyString, value)); } else { existing.Value = value; } } else { throw new Exception("Cannot set collection value by Primitive Type: " + key.GetPrimitiveType()); } }
private GaussianLikelihoodFactor CreateLikelihood(KeyedVariable <TPlayer, GaussianDistribution> playerSkill, KeyedVariable <TPlayer, GaussianDistribution> playerPerformance) { return(new GaussianLikelihoodFactor(Square(ParentFactorGraph.GameInfo.Beta), playerPerformance, playerSkill)); }