コード例 #1
0
ファイル: GeneticTuner.cs プロジェクト: 64-bit/UnityPIDTuner
        private void InitPopulation(PIDTunerRequirements requirements, GenerationArguments generationArguments)
        {
            //TODO:Create init mutator
            var mutator = new RandomMutator();

            while (_currentPopulation.Count < generationArguments.GenerationSize)
            {
                var newInstance = new GeneticInstance(requirements, mutator);
                _currentPopulation.Add(newInstance);
            }
        }
コード例 #2
0
ファイル: GeneticTuner.cs プロジェクト: 64-bit/UnityPIDTuner
            public GeneticInstance(PIDTunerRequirements requirements, MutationArguments mutator)
            {
                CurrentScore          = 0.0f;
                ControllerGeneticData = new List <TuneableController>(requirements.Controllers.Count);

                foreach (var controller in requirements.Controllers)
                {
                    var controllerCopy = controller.Controller.DeepCopy();
                    controllerCopy.Mutate(mutator);
                    ControllerGeneticData.Add(controllerCopy);
                }
            }
コード例 #3
0
ファイル: GeneticTuner.cs プロジェクト: 64-bit/UnityPIDTuner
        public GeneticTuner(PIDTunerRequirements requirements, MutationArguments mutator, GenerationArguments generationArguments)
        {
            if (requirements == null)
            {
                throw new ArgumentNullException(nameof(requirements));
            }

            _mutator             = mutator ?? throw new ArgumentNullException(nameof(mutator));
            _generationArguments = generationArguments;
            _generationArguments.Validate();

            CurrentGeneration = 0;

            InitPopulation(requirements, _generationArguments);
        }