示例#1
0
        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));
 }