private static Driving2DAiTrainer CreateDriving2DAiTrainer() { var neuralNetworkSpecification = Driving2DNeuralNetworkSpecification.Specification; var trainingSpec = new TrainingSpecification { PopulationSize = 100, TopFractionToKeep = 0.05, ChildrenFractionToGenerate = 0.92, MutationRate = 0.05, FittestKeptScoreThreshold = 0 }; var geneticAlgorithm = CreateGeneticAlgorithm(neuralNetworkSpecification, trainingSpec); var trainingTextPosition = new Vector2(10, 75); var trainingTextColor = Color.Blue; IDriving2DController createController(int id, NeuralNetwork neuralNetwork) => new Driving2DAiController(id, neuralNetwork); var aiTrainingFramework = new AiTrainingFramework <IDriving2DController>(neuralNetworkSpecification, geneticAlgorithm, trainingTextPosition, trainingTextColor, createController); var controllers = aiTrainingFramework.CreateNewControllers(new List <(int id, int score)>()); return(new Driving2DAiTrainer(aiTrainingFramework, controllers)); }
private static GeneticAlgorithm CreateGeneticAlgorithm(NeuralNetworkSpecification neuralNetworkSpecification, TrainingSpecification trainingSpecification) { var randomWeightsGenerator = new RandomWeightsGenerator(neuralNetworkSpecification); return(new GeneticAlgorithm(randomWeightsGenerator, trainingSpecification, neuralNetworkSpecification)); }