static void RunTrial(int offset) { RESULTS_FILE = EXPERIMENTS_DIR + RESULTS_FILE_BASE + offset + ".csv"; _random = new FastRandom(); _experiment = new SocialExperiment(); XmlDocument xmlConfig = new XmlDocument(); xmlConfig.Load(CONFIG_FILE); _experiment.Initialize("SimpleEvolution", xmlConfig.DocumentElement); _experiment.NeatGenomeParameters.AddConnectionMutationProbability = 0; _experiment.NeatGenomeParameters.AddNodeMutationProbability = 0; _experiment.NeatGenomeParameters.DeleteConnectionMutationProbability = 0; SocialExperiment.CreateNetwork(FEED_FORWARD_NETWORK_FILE, _experiment.InputCount, _experiment.OutputCount); // Record the changes at each step _experiment.World.Stepped += new social_learning.World.StepEventHandler(World_Stepped); // Read in the seed genome from file. This is the prototype for our other population of networks. var seed = _experiment.LoadPopulation(XmlReader.Create(FEED_FORWARD_NETWORK_FILE))[0]; // Create a genome factory with our neat genome parameters object and the appropriate number of input and output neuron genes. IGenomeFactory <NeatGenome> genomeFactory = _experiment.CreateGenomeFactory(); // Create an initial population of randomly generated genomes. List <NeatGenome> genomeList = genomeFactory.CreateGenomeList(_experiment.DefaultPopulationSize, 0, seed); // Randomize the genomes RandomizeGenomes(genomeList); // Create genome decoder. IGenomeDecoder <NeatGenome, IBlackBox> genomeDecoder = _experiment.CreateGenomeDecoder(); // Create the evaluator that will handle the simulation _evaluator = new ForagingEvaluator <NeatGenome>(genomeDecoder, _experiment.World, AgentTypes.Social) { MaxTimeSteps = 200000UL, BackpropEpochsPerExample = 1 }; using (TextWriter writer = new StreamWriter(RESULTS_FILE)) writer.WriteLine("Step,Best,Average"); // Start the simulation _evaluator.Evaluate(genomeList); }
static void RunTrial(int offset) { RESULTS_FILE = EXPERIMENTS_DIR + RESULTS_FILE_BASE + offset + ".csv"; _random = new FastRandom(); _experiment = new SocialExperiment(); XmlDocument xmlConfig = new XmlDocument(); xmlConfig.Load(CONFIG_FILE); _experiment.Initialize("SimpleEvolution", xmlConfig.DocumentElement); _experiment.NeatGenomeParameters.AddConnectionMutationProbability = 0; _experiment.NeatGenomeParameters.AddNodeMutationProbability = 0; _experiment.NeatGenomeParameters.DeleteConnectionMutationProbability = 0; SocialExperiment.CreateNetwork(FEED_FORWARD_NETWORK_FILE, _experiment.InputCount, _experiment.OutputCount); // Record the changes at each step _experiment.World.Stepped += new social_learning.World.StepEventHandler(World_Stepped); // Read in the seed genome from file. This is the prototype for our other population of networks. var seed = _experiment.LoadPopulation(XmlReader.Create(FEED_FORWARD_NETWORK_FILE))[0]; // Create a genome factory with our neat genome parameters object and the appropriate number of input and output neuron genes. IGenomeFactory<NeatGenome> genomeFactory = _experiment.CreateGenomeFactory(); // Create an initial population of randomly generated genomes. List<NeatGenome> genomeList = genomeFactory.CreateGenomeList(_experiment.DefaultPopulationSize, 0, seed); // Randomize the genomes RandomizeGenomes(genomeList); // Create genome decoder. IGenomeDecoder<NeatGenome, IBlackBox> genomeDecoder = _experiment.CreateGenomeDecoder(); // Create the evaluator that will handle the simulation _evaluator = new ForagingEvaluator<NeatGenome>(genomeDecoder, _experiment.World, AgentTypes.Social) { MaxTimeSteps = 200000UL, BackpropEpochsPerExample = 1 }; using (TextWriter writer = new StreamWriter(RESULTS_FILE)) writer.WriteLine("Step,Best,Average"); // Start the simulation _evaluator.Evaluate(genomeList); }
static void Main(string[] args) { _random = new FastRandom(); _experiment = new SocialExperiment(); XmlDocument xmlConfig = new XmlDocument(); xmlConfig.Load(CONFIG_FILE); _experiment.Initialize("SimpleEvolution", xmlConfig.DocumentElement); _experiment.NeatGenomeParameters.AddConnectionMutationProbability = 0; _experiment.NeatGenomeParameters.AddNodeMutationProbability = 0; _experiment.NeatGenomeParameters.DeleteConnectionMutationProbability = 0; SocialExperiment.CreateNetwork(FEED_FORWARD_NETWORK_FILE, _experiment.InputCount, 20, _experiment.OutputCount); // Record the changes at each step _experiment.World.Stepped += new social_learning.World.StepEventHandler(World_Stepped); // Read in the teacher genome from file. var agentGenome = _experiment.LoadPopulation(XmlReader.Create(FEED_FORWARD_NETWORK_FILE)); // Create genome decoder. IGenomeDecoder <NeatGenome, IBlackBox> genomeDecoder = _experiment.CreateGenomeDecoder(); // Create the evaluator that will handle the simulation _evaluator = new ForagingEvaluator <NeatGenome>(genomeDecoder, _experiment.World, AgentTypes.QLearning) { MaxTimeSteps = 50000000UL, BackpropEpochsPerExample = 1 }; using (TextWriter writer = new StreamWriter(RESULTS_FILE)) writer.WriteLine("Step,Score"); // Start the simulation _evaluator.Evaluate(agentGenome); }
static void Main(string[] args) { _random = new FastRandom(); _experiment = new SocialExperiment(); XmlDocument xmlConfig = new XmlDocument(); xmlConfig.Load(CONFIG_FILE); _experiment.Initialize("SimpleEvolution", xmlConfig.DocumentElement); _experiment.NeatGenomeParameters.AddConnectionMutationProbability = 0; _experiment.NeatGenomeParameters.AddNodeMutationProbability = 0; _experiment.NeatGenomeParameters.DeleteConnectionMutationProbability = 0; SocialExperiment.CreateNetwork(FEED_FORWARD_NETWORK_FILE, _experiment.InputCount, 20, _experiment.OutputCount); // Record the changes at each step _experiment.World.Stepped += new social_learning.World.StepEventHandler(World_Stepped); // Read in the teacher genome from file. var agentGenome = _experiment.LoadPopulation(XmlReader.Create(FEED_FORWARD_NETWORK_FILE)); // Create genome decoder. IGenomeDecoder<NeatGenome, IBlackBox> genomeDecoder = _experiment.CreateGenomeDecoder(); // Create the evaluator that will handle the simulation _evaluator = new ForagingEvaluator<NeatGenome>(genomeDecoder, _experiment.World, AgentTypes.QLearning) { MaxTimeSteps = 50000000UL, BackpropEpochsPerExample = 1 }; using (TextWriter writer = new StreamWriter(RESULTS_FILE)) writer.WriteLine("Step,Score"); // Start the simulation _evaluator.Evaluate(agentGenome); }
/// <summary> /// Create and return a NeatEvolutionAlgorithm object ready for running the NEAT algorithm/search. Various sub-parts /// of the algorithm are also constructed and connected up. /// This overload accepts a pre-built genome2 population and their associated/parent genome2 factory. /// </summary> public NeatEvolutionAlgorithm<NeatGenome> CreateEvolutionAlgorithm(IGenomeFactory<NeatGenome> genomeFactory, List<NeatGenome> genomeList) { // Create distance metric. Mismatched genes have a fixed distance of 10; for matched genes the distance is their weigth difference. IDistanceMetric distanceMetric = new ManhattanDistanceMetric(1.0, 0.0, 10.0); ISpeciationStrategy<NeatGenome> speciationStrategy = new ParallelKMeansClusteringStrategy<NeatGenome>(distanceMetric, new ParallelOptions()); // Create complexity regulation strategy. IComplexityRegulationStrategy complexityRegulationStrategy = new NullComplexityRegulationStrategy();// ExperimentUtils.CreateComplexityRegulationStrategy(_complexityRegulationStr, _complexityThreshold); // Create the evolution algorithm. NeatEvolutionAlgorithm<NeatGenome> ea = new NeatEvolutionAlgorithm<NeatGenome>(_eaParams, speciationStrategy, complexityRegulationStrategy); // Create genome decoder. IGenomeDecoder<NeatGenome, IBlackBox> genomeDecoder = CreateGenomeDecoder(); // Create a genome list evaluator. This packages up the genome decoder with the phenome evaluator. _evaluator = new ForagingEvaluator<NeatGenome>(genomeDecoder, _world, _agentType, _navigationEnabled, _hidingEnabled) { MaxTimeSteps = _timeStepsPerGeneration, EvoParadigm = _paradigm, MemParadigm = _memory, GenerationsPerMemorySize = _memGens, MaxMemorySize = _maxMemorySize, TeachParadigm = _teaching, TrialId = TrialId, PredatorCount = _predCount, PredatorDistribution = PredatorDistribution, PredatorTypes = _predTypes, PredatorGenerations = _predGens, DistinguishPredators = _distinguishPreds, LogDiversity = _logDiversity }; // Initialize the evolution algorithm. ea.Initialize(_evaluator, genomeFactory, genomeList); // Finished. Return the evolution algorithm return ea; }