protected GaussianWeightedSumFactor CreatePlayerToTeamSumFactor( IList <KeyedVariable <TPlayer, GaussianDistribution> > teamMembers, Variable <GaussianDistribution> sumVariable) { return(new GaussianWeightedSumFactor(sumVariable, teamMembers.ToArray(), teamMembers.Select(v => PartialPlay.GetPartialPlayPercentage(v.Key)).ToArray())); }
private static Matrix CreatePlayerTeamAssignmentMatrix <TPlayer>( IList <IDictionary <TPlayer, Rating> > teamAssignmentsList, int totalPlayers) { var playerAssignments = new List <IEnumerable <double> >(); var totalPreviousPlayers = 0; for (var i = 0; i < teamAssignmentsList.Count - 1; ++i) { var currentTeam = teamAssignmentsList[i]; var currentRowValues = new List <double>(new double[totalPreviousPlayers]); playerAssignments.Add(currentRowValues); foreach (var currentRating in currentTeam) { currentRowValues.Add(PartialPlay.GetPartialPlayPercentage(currentRating.Key)); ++totalPreviousPlayers; } var nextTeam = teamAssignmentsList[i + 1]; foreach (var nextTeamPlayerPair in nextTeam) { currentRowValues.Add(-1 * PartialPlay.GetPartialPlayPercentage(nextTeamPlayerPair.Key)); } } var playerTeamAssignmentsMatrix = new Matrix(totalPlayers, teamAssignmentsList.Count - 1, playerAssignments); return(playerTeamAssignmentsMatrix); }