import java.util.*; public class PlayerGeneticLearningHeadstart extends Player { public PlayerGeneticLearningHeadstart() { sName = "Genetic Learning with Headstart"; sShortType = "GLH"; iDecisionMatrix = GenerateDecisionMatrix("Random"); } public PlayerGeneticLearningHeadstart(int iGen) { sName = "Genetic Learning with Headstart, Generation "+iGen+" (Mutation)"; sShortType = "GLH"; iDecisionMatrix = GenerateDecisionMatrix("Random"); } public PlayerGeneticLearningHeadstart(String sInitType) { sName = "Genetic Learning with Headstart"; sShortType = "GLH"; iDecisionMatrix = GenerateDecisionMatrix(sInitType); } public PlayerGeneticLearningHeadstart(int iGen, Player Parent1, Player Parent2) { sName = "Genetic Learning with Headstart, Generation "+iGen+" (Bred)"; sShortType = "GLH"; iDecisionMatrix = Breed(Parent1, Parent2); } public int[][] Breed(Player Parent1, Player Parent2) { int[][] ReturnedMatrix = new int[17][10]; Random generator = new Random(); int iDonor; for (int i = 0; i < 17; i++) { for (int j = 0; j < 10; j++) { iDonor = generator.nextInt(2); if (iDonor == 0) ReturnedMatrix[i][j] = Parent1.iDecisionMatrix[i][j]; else ReturnedMatrix[i][j] = Parent2.iDecisionMatrix[i][j]; } } return ReturnedMatrix; } 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 = 100000; Player pOne = new PlayerGeneticLearningHeadstart(); Player pTwo = new PlayerGeneticLearningHeadstart(); System.out.println("Type: "+pOne.getName()+"; Iterations: "+iIterations+"; Generations: "+iGenerations+"; Trainings Runs: "+iTrainingRuns); System.out.println(pOne.toString()); System.out.println(pTwo.toString()); for (int i = 0; i < iGenerations; i++) { System.out.println("Beginning Generation #"+(i+1)); pOne.run(iIterations); pTwo.run2(iIterations); } } }