import java.util.*; public class TeamGeneticLearningFuzzy { PlayerGeneticLearningFuzzy[] Team; int iGen; public TeamGeneticLearningFuzzy() { iGen = 0; Team = new PlayerGeneticLearningFuzzy[100]; for (int i = 0; i < 100; i++) Team[i]=new PlayerGeneticLearningFuzzy(); } public TeamGeneticLearningFuzzy(String sInitType) { iGen = 0; Team = new PlayerGeneticLearningFuzzy[100]; for (int i = 0; i < 100; i++) Team[i]=new PlayerGeneticLearningFuzzy(sInitType); } public void Train(int iIterations) { iGen++; Player[] Players = new Player[2]; Players[0] = new PlayerS17(); Table cTable; for (int i = 0; i < 100; i++) { Players[1]=Team[i]; cTable = new Table(Players); for (int j = 0; j < iIterations; j++) { cTable.play(); } } Arrays.sort(Team); Random generator = new Random(); int Parent1 = 100; int Parent2 = 100; int OldParent1 = 100; int OldParent2 = 100; for (int i = 40; i < 80; i++) { while (Parent1 == OldParent1) Parent1 = generator.nextInt(40); Parent2 = Parent1; while (Parent2 == Parent1 || Parent2 == OldParent2) Parent2 = generator.nextInt(40); Team[i] = new PlayerGeneticLearningFuzzy(iGen, Team[Parent1], Team[Parent2]); OldParent1 = Parent1; OldParent2 = Parent2; } for (int i = 80; i < 100; i++) { Team[i] = new PlayerGeneticLearningFuzzy(iGen); } for (int i = 0; i < 100; i++) { System.out.println(Team[i].getName()+": "+Team[i].getRunningScore()); } } public void Train() { Train(1000); } public void Reset() { for (int i = 0; i < 100; i++) Team[i].reset(); } public static void main(String[] args) { int iIterations; int iGenerations; int iTrainingRuns; if (args.length>0) iGenerations = Integer.parseInt(args[0]); else iGenerations = 25; if (args.length>1) iIterations = Integer.parseInt(args[1]); else iIterations = 100000; if (args.length>2) iTrainingRuns = Integer.parseInt(args[2]); else iTrainingRuns = 1000; TeamGeneticLearningFuzzy TeamGL = new TeamGeneticLearningFuzzy(); System.out.println("Type: "+TeamGL.Team[0].getName()+"; Iterations: "+iIterations+"; Generations: "+iGenerations+"; Trainings Runs: "+iTrainingRuns); for (int i = 0; i < iGenerations; i++) { System.out.println("Beginning Generation #"+(i+1)); TeamGL.Train(iTrainingRuns); System.out.println("Training Generation #"+(i+1)+" Complete"); TeamGL.Team[0].run(iIterations); TeamGL.Team[1].run2(iIterations); } } }