Beispiel #1
0
        /// <summary>Initializes a new instance of the <see cref="GeneticAlgorithm"/> class.</summary>
        /// <param name="population">The chromosomes population.</param>
        /// <param name="selection">The selection operator.</param>
        /// <param name="crossover">The crossover operator.</param>
        /// <param name="mutation">The mutation operator.</param>
        /// <param name="reinsertion">The reinsertion operator.</param>
        /// <param name="termination">The termination operator.</param>

        public DynamoGeneticAlgorithm(
            IPopulation population,
            ISelection selection,
            ICrossover crossover,
            IMutation mutation,
            IReinsertion reinsertion,
            ITermination termination)
        {
            ExceptionHelper.ThrowIfNull("population", population);
            ExceptionHelper.ThrowIfNull("selection", selection);
            ExceptionHelper.ThrowIfNull("crossover", crossover);
            ExceptionHelper.ThrowIfNull("mutation", mutation);
            ExceptionHelper.ThrowIfNull("reinsertion", reinsertion);
            ExceptionHelper.ThrowIfNull("termination", termination);

            Population  = population;
            Selection   = selection;
            Crossover   = crossover;
            Mutation    = mutation;
            Reinsertion = reinsertion;
            Termination = termination;

            SelectionSize        = 0;
            CrossoverProbability = (float)DefaultCrossoverProbability;
            MutationProbability  = (float)DefaultMutationProbability;

            TimeEvolving      = TimeSpan.Zero;
            OperatorsStrategy = new DefaultOperatorsStrategy();

            State = GeneticAlgorithmState.NotStarted;
        }
Beispiel #2
0
    private void PrepareComboBoxes()
    {
        PrepareEditComboBox(
            cmbSelection,
            btnEditSelection,
            SelectionService.GetSelectionNames,
            SelectionService.GetSelectionTypeByName,
            SelectionService.CreateSelectionByName,
            () => m_selection,
            (i) => m_selection = i);

        PrepareEditComboBox(
            cmbCrossover,
            btnEditCrossover,
            CrossoverService.GetCrossoverNames,
            CrossoverService.GetCrossoverTypeByName,
            CrossoverService.CreateCrossoverByName,
            () => m_crossover,
            (i) => m_crossover = i);

        PrepareEditComboBox(
            cmbMutation,
            btnEditMutation,
            MutationService.GetMutationNames,
            MutationService.GetMutationTypeByName,
            MutationService.CreateMutationByName,
            () => m_mutation,
            (i) => m_mutation = i);

        PrepareEditComboBox(
            cmbTermination,
            btnEditTermination,
            () => {
            return(TerminationService.GetTerminationNames()
                   .Where(t => !t.Equals("And", StringComparison.OrdinalIgnoreCase) && !t.Equals("Or", StringComparison.OrdinalIgnoreCase)).ToList());
        },
            TerminationService.GetTerminationTypeByName,
            TerminationService.CreateTerminationByName,
            () => m_termination,
            (i) => m_termination = i);

        PrepareEditComboBox(
            cmbTermination1,
            btnEditReinsertion,
            ReinsertionService.GetReinsertionNames,
            ReinsertionService.GetReinsertionTypeByName,
            ReinsertionService.CreateReinsertionByName,
            () => m_reinsertion,
            (i) => m_reinsertion = i);

        PrepareEditComboBox(
            cmbGenerationStrategy,
            btnEditGenerationStrategy,
            PopulationService.GetGenerationStrategyNames,
            PopulationService.GetGenerationStrategyTypeByName,
            PopulationService.CreateGenerationStrategyByName,
            () => m_generationStrategy,
            (i) => m_generationStrategy = i);
    }
Beispiel #3
0
    private void PrepareComboBoxes()
    {
        PrepareEditComboBox(
            cmbSelection,
            btnEditSelection,
            SelectionService.GetSelectionNames,
            SelectionService.GetSelectionTypeByName,
            SelectionService.CreateSelectionByName,
            () => m_selection,
            (i) => m_selection = i);

        PrepareEditComboBox(
            cmbCrossover,
            btnEditCrossover,
            CrossoverService.GetCrossoverNames,
            CrossoverService.GetCrossoverTypeByName,
            CrossoverService.CreateCrossoverByName,
            () => m_crossover,
            (i) => m_crossover = i);

        PrepareEditComboBox(
            cmbMutation,
            btnEditMutation,
            MutationService.GetMutationNames,
            MutationService.GetMutationTypeByName,
            MutationService.CreateMutationByName,
            () => m_mutation,
            (i) => m_mutation = i);

        PrepareEditComboBox(
            cmbTermination,
            btnEditTermination,
            () =>
        {
            return(TerminationService.GetTerminationNames());
        },
            TerminationService.GetTerminationTypeByName,
            TerminationService.CreateTerminationByName,
            () => m_termination,
            (i) => m_termination = i);

        PrepareEditComboBox(
            cmbReinsertion,
            btnEditReinsertion,
            ReinsertionService.GetReinsertionNames,
            ReinsertionService.GetReinsertionTypeByName,
            ReinsertionService.CreateReinsertionByName,
            () => m_reinsertion,
            (i) => m_reinsertion = i);

        PrepareEditComboBox(
            cmbGenerationStrategy,
            btnEditGenerationStrategy,
            PopulationService.GetGenerationStrategyNames,
            PopulationService.GetGenerationStrategyTypeByName,
            PopulationService.CreateGenerationStrategyByName,
            () => m_generationStrategy,
            (i) => m_generationStrategy = i);
    }
Beispiel #4
0
 public NSGA2(IReproduction <TChromosome> crossover,
              IEvaluator <TChromosome> evaluator,
              IReinsertion <TChromosome> reinsertion)
 {
     _crossover   = crossover;
     _evaluator   = evaluator;
     _reinsertion = reinsertion;
 }
Beispiel #5
0
 public NSGA2(IReproduction <TChromosome> crossover,
              IReproduction <TChromosome> mutation,
              IEvaluator <TChromosome> evaluator,
              IReinsertion <TChromosome> reinsertion) :
     this(crossover, evaluator, reinsertion)
 {
     _mutation = mutation;
 }
Beispiel #6
0
 public GeneticAlgorithm(Population population, ISelection selection, ICrossover crossover, IReinsertion reinsertion)
 {
     Population           = population;
     Selection            = selection;
     Crossover            = crossover;
     Reinsertion          = reinsertion;
     CrossoverProbability = DefaultCrossoverProbability;
     MutationProbability  = DefaultMutationProbability;
 }
 public GenerationGeneratorBase(
     int toProduceCount,
     IReinsertion <T> reinsertion,
     IBreeding <T> breeding)
 {
     ToProduceCount  = toProduceCount;
     GenomeProducers = new IGenomeProducer <T>[2]
     {
         reinsertion,
         breeding
     };
 }
        public void CreateReinsertionByName_ValidName_ReinsertionCreated()
        {
            IReinsertion actual = ReinsertionService.CreateReinsertionByName("Elitist") as ElitistReinsertion;

            Assert.IsNotNull(actual);

            actual = ReinsertionService.CreateReinsertionByName("Fitness Based") as FitnessBasedReinsertion;
            Assert.IsNotNull(actual);

            actual = ReinsertionService.CreateReinsertionByName("Pure") as PureReinsertion;
            Assert.IsNotNull(actual);

            actual = ReinsertionService.CreateReinsertionByName("Uniform") as UniformReinsertion;
            Assert.IsNotNull(actual);
        }
 public JobShopReinsertion(ISelection selection, IReinsertion elitism, IFitness fitness) : base(true, true)
 {
     this.selection = selection;
     this.elitism   = elitism;
     this.fitness   = fitness;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="GeneticSharp.Domain.Reinsertions.ReinsertionException"/> class.
 /// </summary>
 /// <param name="reinsertion">The Reinsertion where occurred the error.</param>
 /// <param name="message">The error message.</param>
 /// <param name="innerException">The inner exception.</param>
 public ReinsertionException(IReinsertion reinsertion, string message, Exception innerException)
     : base("{0}: {1}".With(reinsertion != null ? reinsertion.GetType().Name : String.Empty, message), innerException)
 {
     Reinsertion = reinsertion;
 }
Beispiel #11
0
        public Configuration(int selectionType, int crossType, int mutaType, int reinsertionType, int terminationType)
        {
            //  Initialize(); //IMPORTANT

            SelectionID = selectionType;
            Selection   = new TournamentSelection();
            if (selectionType == 1)
            {
                Selection = new EliteSelection();
            }
            else if (selectionType == 2)
            {
                Selection = new RouletteWheelSelection();
            }
            else if (selectionType == 3)
            {
                Selection = new StochasticUniversalSamplingSelection();
            }
            else if (selectionType == 4)
            {
                Selection = new TournamentSelection();                          //check options
            }
            CrossoverID = crossType;
            Crossover   = new UniformCrossover(0.5f);
            if (crossType == 1)
            {
                Crossover = new CutAndSpliceCrossover();
            }
            else if (crossType == 2)
            {
                Crossover = new CycleCrossover();
            }
            else if (crossType == 3)
            {
                Crossover = new OnePointCrossover();                      //options swapPoint
            }
            else if (crossType == 4)
            {
                Crossover = new OrderBasedCrossover();
            }
            else if (crossType == 5)
            {
                Crossover = new OrderedCrossover();
            }
            else if (crossType == 6)
            {
                Crossover = new PartiallyMappedCrossover();
            }
            else if (crossType == 7)
            {
                Crossover = new ThreeParentCrossover();
            }
            else if (crossType == 8)
            {
                Crossover = new TwoPointCrossover();                      //options SwapPoint
            }
            else if (crossType == 9)
            {
                Crossover = new UniformCrossover(0.5f);                      //mix probability is 5
            }
            MutationID = mutaType;
            Mutation   = new UniformMutation(true);
            if (mutaType == 1)
            {
                Mutation = new ReverseSequenceMutation();
            }
            else if (mutaType == 2)
            {
                Mutation = new TworsMutation();
            }
            else if (mutaType == 3)
            {
                Mutation = new UniformMutation(true);                     //options
            }
            ReinsertionID = reinsertionType;
            Reinsertion   = null;
            if (reinsertionType == 1)
            {
                Reinsertion = new ElitistReinsertion();
            }
            else if (reinsertionType == 2)
            {
                Reinsertion = new FitnessBasedReinsertion();
            }
            else if (reinsertionType == 3)
            {
                Reinsertion = new PureReinsertion();
            }
            else if (reinsertionType == 4)
            {
                Reinsertion = new UniformReinsertion();
            }
            else if (reinsertionType == 5)
            {
                Reinsertion = null;
            }


            TerminationID = terminationType;

            Termination = new TimeEvolvingTermination();
            if (terminationType == 1)
            {
                Termination = new GenerationNumberTermination();
            }
            else if (terminationType == 2)
            {
                Termination = new TimeEvolvingTermination(new System.TimeSpan(0, 3, 0));
            }
            else if (terminationType == 3)
            {
                Termination = new FitnessStagnationTermination(200);                            //options
            }
            else if (terminationType == 4)
            {
                Termination = new FitnessThresholdTermination();                           // expected fitness
            }
            else if (terminationType == 5)
            {
                Termination = new AndTermination();
            }
            else if (terminationType == 6)
            {
                Termination = new OrTermination();
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="GeneticSharp.Domain.Reinsertions.ReinsertionException"/> class.
 /// </summary>
 /// <param name="reinsertion">The Reinsertion where occurred the error.</param>
 /// <param name="message">The error message.</param>
 /// <param name="innerException">The inner exception.</param>
 public ReinsertionException(IReinsertion reinsertion, string message, Exception innerException)
     : base("{0}: {1}".With(reinsertion != null ? reinsertion.GetType().Name : String.Empty, message), innerException)
 {
     Reinsertion = reinsertion;
 }
Beispiel #13
0
        public AlgoritmoGenetico(Problema problema, IPopulation population, ISelection selection,
                                 ICrossover crossover, float crossoverProbability, IMutation mutation, float mutationProbability, ITermination termination, IReinsertion reinsertion) : base(problema)
        {
            ga = new GeneticAlgorithm(population, new FitnessViajante(problema), selection, crossover, mutation)
            {
                CrossoverProbability = crossoverProbability,
                MutationProbability  = mutationProbability,
                Reinsertion          = reinsertion,
                Termination          = termination,
                TaskExecutor         = new SmartThreadPoolTaskExecutor(),
            };

            ga.GenerationRan += Ga_GenerationRan;
        }