public void InitializeEvolution(Color[,] sourceIndividual)
        {
            if (AlgorithmInformation.Population < 4)
            {
                AlgorithmInformation.Population = 4;
            }

            if (AlgorithmInformation.Elite < 2)
            {
                AlgorithmInformation.Elite = 2;
            }

            _threads             = new List <Thread>();
            _populationForThread = new int[AlgorithmInformation.GetOptimalThreadAmount()];

            _populationIndividuals = new Individual[AlgorithmInformation.Population];
            _populationToPass      = new Individual[AlgorithmInformation.Population];
            _eliteIndividuals      = new Individual[AlgorithmInformation.Elite];

            _destinationIndividual = sourceIndividual;

            _evolutionFitness = new EvolutionFitness(AlgorithmInformation.ImageWidth, AlgorithmInformation.ImageHeight);

            Individual individual;

            for (int i = 0; i < AlgorithmInformation.Population; i++)
            {
                individual = new Individual();
                individual.Initialize();

                _populationIndividuals[i] = individual;
            }
        }
        public void InitializeEvolution(Color[,] sourceIndividual)
        {
            _parentIndividual = new Individual();
            _parentIndividual.Initialize();

            _destinationIndividual = sourceIndividual;

            _evolutionFitness = new EvolutionFitness(AlgorithmInformation.ImageWidth, AlgorithmInformation.ImageHeight);
        }
        public void InitializeFromDNA(Color[,] sourceIndividual, List <IndividualListData> individualData, int generation)
        {
            _parentIndividual = new Individual();

            _parentIndividual.InitializeFromDNA(individualData[0]);

            _destinationIndividual = sourceIndividual;

            _evolutionFitness = new EvolutionFitness(AlgorithmInformation.ImageWidth, AlgorithmInformation.ImageHeight);

            this._generation = generation;
        }