Example #1
0
        private List <Team> computeTeams(int teamMemberNumber, int teamNumber, Constants.MatchPolicy policy)
        {
            Random         rnd            = new Random();
            List <Team>    teams          = new List <Team>();
            List <Team>    tempTeams      = new List <Team>();
            PlayerSelecter playerSelecter = new PlayerSelecter(core.CheckedHumanPlayers.Values.ToList());

            score = 0;
            double avgElo = 0;

            int[] scores = new int[teamNumber];
            for (int i = 0; i < Constants.Iterations; i++)
            {
                tempTeams.Clear();
                playerSelecter.reset();
                for (int j = 0; j < teamNumber; j++)
                {
                    tempTeams.Add(new Team());
                }
                for (int j = 0; j < teamMemberNumber; j++)
                {
                    for (int k = 0; k < teamNumber; k++)
                    {
                        Player player;
                        if (teamMemberNumber == 1)
                        {
                            player = playerSelecter.getNextPlayer();
                        }
                        else
                        {
                            player = playerSelecter.getRandomPlayer();
                        }
                        tempTeams[k].addMember(player, player.selectRaceRandomly(rnd));
                    }
                }
                for (int j = 0; j < teamNumber; j++)
                {
                    scores[j] = tempTeams[j].computeEloTeam();
                }
                double tempScore  = Statistics.StdDev(scores);
                double tempAvgElo = Statistics.Mean(scores);
                if (policyScore(policy, tempScore, score, tempAvgElo, avgElo) || (i == 0))//TODO
                {
                    score  = tempScore;
                    avgElo = tempAvgElo;
                    teams.Clear();
                    for (int j = 0; j < teamNumber; j++)
                    {
                        tempTeams[j].EloAdv = (scores.Sum() - tempTeams[j].EloTeam) / (teamNumber - 1);
                        teams.Add(tempTeams[j].getCopy());
                    }
                }
            }
            return(teams);
        }
Example #2
0
        private List<Team> computeTeams(int teamMemberNumber, int teamNumber, Constants.MatchPolicy policy)
        {
            Random rnd = new Random();
            List<Team> teams = new List<Team>();
            List<Team> tempTeams = new List<Team>();
            PlayerSelecter playerSelecter = new PlayerSelecter(core.CheckedHumanPlayers.Values.ToList());
            score = 0;
            double avgElo = 0;
            int[] scores = new int[teamNumber];
            for (int i = 0; i < Constants.Iterations; i++)
            {
                tempTeams.Clear();
                playerSelecter.reset();
                for (int j = 0; j < teamNumber; j++)
                {
                    tempTeams.Add(new Team());
                }
                for (int j = 0; j < teamMemberNumber; j++)
                {
                    for (int k = 0; k < teamNumber; k++)
                    {
                        Player player;
                        if (teamMemberNumber == 1)
                        {
                            player = playerSelecter.getNextPlayer();
                        }
                        else
                        {
                            player = playerSelecter.getRandomPlayer();

                        }
                        tempTeams[k].addMember(player, player.selectRaceRandomly(rnd));
                    }
                }
                for (int j = 0; j < teamNumber; j++)
                {
                    scores[j] = tempTeams[j].computeEloTeam();
                }
                double tempScore = Statistics.StdDev(scores);
                double tempAvgElo = Statistics.Mean(scores);
                if (policyScore(policy, tempScore, score, tempAvgElo, avgElo) || (i==0))//TODO
                {
                    score = tempScore;
                    avgElo = tempAvgElo;
                    teams.Clear();
                    for (int j = 0; j < teamNumber; j++)
                    {
                        tempTeams[j].EloAdv = (scores.Sum()-tempTeams[j].EloTeam)/(teamNumber-1);
                        teams.Add(tempTeams[j].getCopy());
                    }
                }
            }
            return teams;
        }