Esempio n. 1
0
        public static AbstractMutation ChosenMutationMethod(MutationMethod mutationMethod, double MutationProbability, int pointMutation)
        {
            AbstractMutation mutation = null;

            switch (mutationMethod)
            {
            case MutationMethod.InversionMutation:
                mutation = new InversionMutation(MutationProbability, pointMutation);
                break;

            case MutationMethod.ReplaceMutation:
                mutation = new ReplaceMutaion(MutationProbability, pointMutation);
                break;

            case MutationMethod.SwapMutation:
                mutation = new SwapMutation(MutationProbability, pointMutation);
                break;

            case MutationMethod.TranslocationMutation:
                mutation = new TranslocationMutation(MutationProbability, pointMutation);
                break;

            case MutationMethod.NonMutation:
                mutation = null;
                break;
            }

            return(mutation);
        }
Esempio n. 2
0
        /// <summary>
        /// Мутация при которой все особоби, кроме самой лучшей мутируют
        /// (мутируют около 1/3 битов).
        /// </summary>
        /// <param name="population">Популяция.</param>
        private void CatacliysmicMutation(Population population)
        {
            Chromosome       bestChromosome = population.BestChromosome();
            int              bitsMutation   = (int)(population.SizeChromosome * 0.7);
            AbstractMutation mutation       = GeneticMethod.ChosenMutationMethod(mutationMethod, 100, bitsMutation);

            foreach (var chromosome in population.populationList)
            {
                if (!chromosome.Equals(bestChromosome))
                {
                    mutation.Mutation(chromosome);
                }
            }
        }