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 SnakeAiTrainer CreateSnakeAiTrainer()
        {
            var neuralNetworkSpecification = SnakeNeuralNetworkSpecification.Specification;
            var geneticAlgorithm           = CreateGeneticAlgorithm(neuralNetworkSpecification, DefaultTrainingSpecification);

            var trainingTextPosition = new Vector2(25, 25);
            var trainingTextColor    = Color.Green;

            ISnakeController createController(int id, NeuralNetwork neuralNetwork) => new SnakeAiController(id, neuralNetwork);

            var aiTrainingFramework = new AiTrainingFramework <ISnakeController>(neuralNetworkSpecification, geneticAlgorithm, trainingTextPosition, trainingTextColor, createController);
            var controllers         = aiTrainingFramework.CreateNewControllers(new List <(int id, int score)>());

            return(new SnakeAiTrainer(aiTrainingFramework, controllers));
        }
        private static FlappyBirdAiTrainer CreateFlappyBirdAiTrainer()
        {
            var neuralNetworkSpecification = FlappyBirdNeuralNetworkSpecification.Specification;

            var trainingSpec = DefaultTrainingSpecification;

            trainingSpec.FittestKeptScoreThreshold = 500;

            var geneticAlgorithm = CreateGeneticAlgorithm(neuralNetworkSpecification, trainingSpec);

            var trainingTextPosition = new Vector2(25, 25);
            var trainingTextColor    = Color.Red;

            IFlappyBirdController createController(int id, NeuralNetwork neuralNetwork) => new FlappyBirdAiController(id, neuralNetwork);

            var aiTrainingFramework = new AiTrainingFramework <IFlappyBirdController>(neuralNetworkSpecification, geneticAlgorithm, trainingTextPosition, trainingTextColor, createController);
            var controllers         = aiTrainingFramework.CreateNewControllers(new List <(int id, int score)>());

            return(new FlappyBirdAiTrainer(aiTrainingFramework, controllers));
        }
 internal Driving2DAiTrainer(AiTrainingFramework <IDriving2DController> aiTrainingFramework, IReadOnlyList <IDriving2DController> controllers)
     : base(controllers)
 {
     this.aiTrainingFramework = aiTrainingFramework;
     maxLapTime = TimeSpan.FromSeconds(15);
 }
 internal SnakeAiTrainer(AiTrainingFramework <ISnakeController> aiTrainingFramework, IReadOnlyList <ISnakeController> controllers)
     : base(controllers)
 {
     this.aiTrainingFramework = aiTrainingFramework;
 }
예제 #6
0
 internal FlappyBirdAiTrainer(AiTrainingFramework <IFlappyBirdController> aiTrainingFramework, IReadOnlyList <IFlappyBirdController> controllers)
     : base(controllers)
 {
     this.aiTrainingFramework = aiTrainingFramework;
 }