public TicTacToeGenetic(FeedforwardNetwork network, bool reset, int populationSize, double mutationPercent, double percentToMate, Type opponent) { this.setOpponent(opponent); this.MutationPercent = mutationPercent; this.MatingPopulation = percentToMate * 2; this.PopulationSize = populationSize; this.PercentToMate = percentToMate; this.Chromosomes = new TicTacToeChromosome[this.PopulationSize]; for (int i = 0; i < this.Chromosomes.Length; i++) { FeedforwardNetwork chromosomeNetwork = (FeedforwardNetwork)network .Clone(); if (reset) { chromosomeNetwork.Reset(); } TicTacToeChromosome c = new TicTacToeChromosome(this, chromosomeNetwork); c.UpdateGenes(); SetChromosome(i, c); } SortChromosomes(); }
/// <summary> /// Construct a genetic algorithm for a neural network that uses training sets. /// </summary> /// <param name="network">The neural network.</param> /// <param name="reset">Should each neural network be reset to random values.</param> /// <param name="input">The input training set.</param> /// <param name="ideal">The ideal values for the input training set.</param> /// <param name="populationSize">The initial population size.</param> /// <param name="mutationPercent">The mutation percentage.</param> /// <param name="percentToMate">The percentage of the population allowed to mate.</param> public TrainingSetNeuralGeneticAlgorithm(FeedforwardNetwork network, bool reset, double[][] input, double[][] ideal, int populationSize, double mutationPercent, double percentToMate) { this.MutationPercent = mutationPercent; this.MatingPopulation = percentToMate * 2; this.PopulationSize = populationSize; this.PercentToMate = percentToMate; this.input = input; this.ideal = ideal; this.Chromosomes = new TrainingSetNeuralChromosome[this.PopulationSize]; for (int i = 0; i < this.Chromosomes.Length; i++) { FeedforwardNetwork chromosomeNetwork = (FeedforwardNetwork)network .Clone(); if (reset) { chromosomeNetwork.Reset(); } TrainingSetNeuralChromosome c = new TrainingSetNeuralChromosome( this, chromosomeNetwork); c.UpdateGenes(); SetChromosome(i, c); } SortChromosomes(); }
/// <summary> /// Construct a genetic algorithm for a neural network that uses training sets. /// </summary> /// <param name="network">The neural network.</param> /// <param name="reset">Should each neural network be reset to random values.</param> /// <param name="input">The input training set.</param> /// <param name="ideal">The ideal values for the input training set.</param> /// <param name="populationSize">The initial population size.</param> /// <param name="mutationPercent">The mutation percentage.</param> /// <param name="percentToMate">The percentage of the population allowed to mate.</param> public TrainingSetNeuralGeneticAlgorithm(FeedforwardNetwork network, bool reset, double[][] input, double[][] ideal, int populationSize, double mutationPercent, double percentToMate) { this.MutationPercent = mutationPercent; this.MatingPopulation = percentToMate * 2; this.PopulationSize = populationSize; this.PercentToMate = percentToMate; this.input = input; this.ideal = ideal; this.Chromosomes = new TrainingSetNeuralChromosome[this.PopulationSize]; for (int i = 0; i < this.Chromosomes.Length; i++) { FeedforwardNetwork chromosomeNetwork = (FeedforwardNetwork)network .Clone(); if (reset) { chromosomeNetwork.Reset(); } TrainingSetNeuralChromosome c = new TrainingSetNeuralChromosome( this, chromosomeNetwork); c.UpdateGenes(); SetChromosome(i, c); } SortChromosomes(); }
public TrainingSetNeuralGeneticAlgorithm(FeedforwardNetwork network, bool reset, double[][] input, double[][] ideal, int populationSize, double mutationPercent, double allowedPercentageToMate) { MutationPercent = mutationPercent; MatingPopulation = allowedPercentageToMate * 2; PopulationSize = populationSize; PercentToMate = allowedPercentageToMate; Input = input; Ideal = ideal; Chromosomes = new TrainingSetNeuralChromosome[PopulationSize]; for (var i = 0; i < Chromosomes.Length; i++) { var chromosomeNetwork = (FeedforwardNetwork)network.Clone(); if (reset) { chromosomeNetwork.Reset(); } var c = new TrainingSetNeuralChromosome(this, chromosomeNetwork); c.UpdateGenes(); SetChromosome(i, c); } SortChromosomes(); }
public TicTacToeGenetic(FeedforwardNetwork network, bool reset, int populationSize, double mutationPercent, double percentToMate, Type opponent) { this.setOpponent(opponent); this.MutationPercent = mutationPercent; this.MatingPopulation = percentToMate * 2; this.PopulationSize = populationSize; this.PercentToMate = percentToMate; this.Chromosomes = new TicTacToeChromosome[this.PopulationSize]; var rangePartitioner = Partitioner.Create(0, this.Chromosomes.Length); //Parallel.ForEach(rangePartitioner, (range, loopState) => { for (int i = 0; i < Chromosomes.Length; i++) { Console.WriteLine("step: " + i); FeedforwardNetwork chromosomeNetwork = (FeedforwardNetwork)network .Clone(); if (reset) { chromosomeNetwork.Reset(); } TicTacToeChromosome c = new TicTacToeChromosome(this, chromosomeNetwork); c.UpdateGenes(); lock (_locker) { SetChromosome(i, c); } } }; Console.WriteLine("PreEpoch # Error:" + getScore()); SortChromosomes(); }
public TrainingSetNeuralGeneticAlgorithm(FeedforwardNetwork network, bool reset, double[][] input, double[][] ideal, int populationSize, double mutationPercent, double allowedPercentageToMate) { MutationPercent = mutationPercent; MatingPopulation = allowedPercentageToMate * 2; PopulationSize = populationSize; PercentToMate = allowedPercentageToMate; Input = input; Ideal = ideal; Chromosomes = new TrainingSetNeuralChromosome[PopulationSize]; for (var i = 0; i < Chromosomes.Length; i++) { var chromosomeNetwork = (FeedforwardNetwork)network.Clone(); if (reset) chromosomeNetwork.Reset(); var c = new TrainingSetNeuralChromosome(this, chromosomeNetwork); c.UpdateGenes(); SetChromosome(i, c); } SortChromosomes(); }