/// <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; }
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); }
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); }
public NSGA2(IReproduction <TChromosome> crossover, IEvaluator <TChromosome> evaluator, IReinsertion <TChromosome> reinsertion) { _crossover = crossover; _evaluator = evaluator; _reinsertion = reinsertion; }
public NSGA2(IReproduction <TChromosome> crossover, IReproduction <TChromosome> mutation, IEvaluator <TChromosome> evaluator, IReinsertion <TChromosome> reinsertion) : this(crossover, evaluator, reinsertion) { _mutation = mutation; }
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; }
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; }
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; }