Пример #1
0
 public ResettingGA(IEvaluation <Element> evaluation, AStopCondition stopCondition, AGenerator <Element> generator,
                    ASelection selection, ACrossover crossover, IMutation <Element> mutation, int populationSize, int patience, int?seed = null)
     : base(evaluation, stopCondition, generator, selection, crossover, mutation, populationSize)
 {
     this.patience = patience;
     rng           = seed.HasValue ? new Random(seed.Value) : new Random();
 }
 /// <summary>
 /// Linear mutaion execution.
 /// </summary>
 /// <param name="mutation">Mutation operator.</param>
 /// <param name="mutationProbability">Probability of mutaiton</param>
 /// <param name="individuals">Individual</param>
 public virtual void Mutate(IMutation mutation, float mutationProbability, IList <IIndividual> individuals)
 {
     for (int i = 0; i < individuals.Count; i++)
     {
         mutation.Mutate(individuals[i], mutationProbability);
     }
 }
Пример #3
0
 private Configuration(int n, int k, double a, double b,
                       ISelection method1,
                       ISelection method2,
                       ISelection method3,
                       ISelection method4,
                       ICrossover crossover,
                       IMutation mutation,
                       double mutationProbability,
                       IReplacement replacement,
                       IFinisher finisher,
                       Character.Type characterType)
 {
     this.N                  = n;
     this.K                  = k;
     this.A                  = a;
     this.B                  = b;
     this.Method1            = method1;
     this.Method2            = method2;
     this.Method3            = method3;
     this.Method4            = method4;
     this.CrossoverMethod    = crossover;
     this.MutationMethod     = mutation;
     this.ReplacementMethod  = replacement;
     this.MutationProbablity = mutationProbability;
     this.FinishCondition    = finisher;
     this.CharacterType      = characterType;
 }
 public GAStallDetection(IEvaluation<Element> evaluation, AStopCondition stopCondition, AGenerator<Element> generator,
                         ASelection selection, ACrossover crossover, IMutation<Element> mutation, int populationSize, 
                         int maxNoChangeDetections)
     : base(evaluation, stopCondition, generator, selection, crossover, mutation, populationSize)
 {
     MaxNCD = maxNoChangeDetections;
 }
Пример #5
0
 public DefaultSolver(Solver.Config cfg)
 {
     config = cfg;
     random = new Random();
     mutation = new Mutation(config.mutationChance);
     crossover = new Crossover(config.singleFeatureCrossoverChance, config.crossoverChance, random);
 }
Пример #6
0
        static Population AdvanceGeneration(Population population, ISelection selection, ICrossover crossover, IMutation mutation)
        {
            var chromosomes = new List<Chromosome>();
            population = new Population(population.Take((int)(truncationRate * population.Count()))); // TRUNCATION
            chromosomes.AddRange(population.Take((int)(elitismRate * chromosomeCount)));  //ELITE (assuming that the chromosomes in the population are sorted by fitness (the fitter are at the top of the list)

            do
            {
                Chromosome chosen1 = selection.Select(population),
                           chosen2 = selection.Select(population);

                if (random.NextDouble() < crossoverRate)
                {
                    var children = crossover.Crossover(chosen1, chosen2); // CROSSOVER
                    chosen1 = children.Item1;
                    chosen2 = children.Item2;
                }

                if (random.NextDouble() < mutationRate)
                {
                    chosen1 = mutation.Mutate(chosen1); // MUTATION
                }

                if (random.NextDouble() < mutationRate)
                {
                    chosen2 = mutation.Mutate(chosen2); // MUTATION
                }

                chromosomes.Add(chosen1);
                chromosomes.Add(chosen2);
            } while (chromosomes.Count < chromosomeCount);

            return new Population(chromosomes);
        }
Пример #7
0
 public TestGeneticAlgorithm(
     double mutationProbability,
     double crossoverPropability,
     int minPopulationSize,
     int maxPopulationSize,
     IMutation mutationOperator,
     ICrossover crossoverOperator,
     IFitnessEvaluator <TestWorkload> fitnessEvaluator,
     IInitialPopulationCreator initialPopulationCreator,
     ITerminationCondition <TestState> terminationCondition,
     ISelectionStrategy selectionStrategy,
     IReinsertionStrategy reinsertionStrategy,
     IDeploymentChromosomeFactory chromosomeFactory,
     TestState currentState,
     TestWorkload workload,
     IRandomProvider randomProvider)
     : base(
         mutationProbability,
         crossoverPropability,
         minPopulationSize,
         maxPopulationSize,
         mutationOperator,
         crossoverOperator,
         fitnessEvaluator,
         initialPopulationCreator,
         terminationCondition,
         selectionStrategy,
         reinsertionStrategy,
         chromosomeFactory,
         currentState,
         workload,
         randomProvider)
 {
 }
 /// <summary>
 /// Parallel mutaion execution.
 /// </summary>
 /// <param name="mutation">Mutation operator.</param>
 /// <param name="mutationProbability">Probability of mutaiton</param>
 /// <param name="individuals">Individual</param>
 public override void Mutate(IMutation mutation, float mutationProbability, IList <IIndividual> individuals)
 {
     Parallel.ForEach(individuals, ind =>
     {
         mutation.Mutate(ind, mutationProbability);
     });
 }
 /// <summary>
 /// Mutate the specified chromosomes.
 /// </summary>
 /// <param name="mutation">The mutation class.</param>
 /// <param name="mutationProbability">The mutation probability.</param>
 /// <param name="chromosomes">The chromosomes.</param>
 public override void Mutate(IMutation mutation, float mutationProbability, IList <IChromosome> chromosomes)
 {
     Parallel.ForEach(chromosomes, c =>
     {
         mutation.Mutate(c, mutationProbability);
     });
 }
Пример #10
0
 public void AddMutation(IMutation mutation)
 {
     if (_Mutations.Any(x => x.GetType().Equals(mutation.GetType())) == false)
     {
         _Mutations.Add(mutation);
     }
 }
Пример #11
0
        public static ParameterSelection CreateSelection()
        {
            Console.Clear();

            string[]     names       = GetNames();
            string       expression  = GetExpression();
            var          bounds      = GetBounds();
            float        upperBound  = bounds.upper;
            float        lowerBound  = bounds.lower;
            bool         adaptiveOn  = IsAdaptive();
            ISelection   selection   = GetSelection();
            ICrossover   crossover   = GetCrossover();
            IMutation    mutation    = GetMutation();
            ITermination termination = GetTermination();

            Console.Clear();

            return(new ParameterSelection
            {
                Variables = names,
                Expression = expression,
                LowerBound = lowerBound,
                UpperBound = upperBound,
                AdaptiveOn = adaptiveOn,
                Selection = selection,
                Crossover = crossover,
                Mutation = mutation,
                Termination = termination
            });
        }
Пример #12
0
        public OptimizationResult Optimize()
        {
            _selection = new EliteSelection();
            _crossover = new UniformCrossover();
            _mutation  = new TworsMutation();

            _chromosome = new BlockedTestcasesChromosome(_dataset.Blockers.Count);
            _fitness    = new WeightedMaximizeSolvedTestcasesFitness(_resolver);

            _population = new Population(20, 40, _chromosome);

            _ga             = new GeneticAlgorithm(_population, _fitness, _selection, _crossover, _mutation);
            _ga.Termination = new OrTermination(new FitnessStagnationTermination(100),
                                                new GenerationNumberTermination(10000),
                                                new TimeEvolvingTermination(TimeSpan.FromMinutes(5)));

            //_ga.GenerationRan += Ga_GenerationRan;
            //_fitness.Evaluated += Fitness_Evaluated;

            _ga.Start();

            var resolvedBlockers = GetBlockersToResolve(_ga.BestChromosome);
            var resolution       = _resolver.Resolve(resolvedBlockers);

            var resolvedTestcases = resolution.ResolvedTestcases;
            var resolvedTestcasesIncludingUnblocked = resolution.ResolvedDataset.Testcases.Where(x => x.BlockerIds.Count <= 0).ToList();// GetResolvedTestcasesIncludingUnblocked(resolvedBlockers);

            var cost  = _dataset.GetCostForBlockers(resolvedBlockers);
            var value = _dataset.GetValueForTestcases(resolvedTestcases);
            var valueIncludingUnblocked = _dataset.GetValueForTestcases(resolvedTestcasesIncludingUnblocked);

            var optimizationResult = new OptimizationResult(_ga.BestChromosome.Fitness.Value, value, valueIncludingUnblocked, cost, resolvedBlockers, resolvedTestcases, resolvedTestcasesIncludingUnblocked);

            return(optimizationResult);
        }
Пример #13
0
 public KnapsackGA(CBinaryKnapsackEvaluation evaluation, AStopCondition stopCondition, AGenerator <bool> generator,
                   ASelection selection, ACrossover crossover, IMutation <bool> mutation, int populationSize, EffectType effType, int?seed)
     : base(evaluation, stopCondition, generator, selection, crossover, mutation, populationSize)
 {
     this.seed  = seed;
     effectType = effType;
 }
Пример #14
0
 public GeneticAlgorithm(
     double mutationProbability,
     double crossoverPropability,
     int minPopulationSize,
     int maxPopulationSize,
     IMutation mutationOperator,
     ICrossover crossoverOperator,
     IFitnessEvaluator <TWorkload> fitnessEvaluator,
     IInitialPopulationCreator initialPopulationCreator,
     ITerminationCondition <TState> terminationCondition,
     ISelectionStrategy selectionStrategy,
     IReinsertionStrategy reinsertionStrategy,
     IDeploymentChromosomeFactory chromosomeFactory,
     TState currentState,
     TWorkload workload,
     IRandomProvider randomProvider)
 {
     MutationProbability       = mutationProbability;
     CrossoverProbability      = crossoverPropability;
     MinPopulationSize         = minPopulationSize;
     MaxPopulationSize         = maxPopulationSize;
     MutationOperator          = mutationOperator;
     CrossoverOperator         = crossoverOperator;
     FitnessEvaluator          = fitnessEvaluator;
     InitialPopulationCreator  = initialPopulationCreator;
     TerminationCondition      = terminationCondition;
     SelectionStrategyStrategy = selectionStrategy;
     ReinsertionStrategy       = reinsertionStrategy;
     ChromosomeFactory         = chromosomeFactory;
     CurrentState   = currentState;
     Workload       = workload;
     RandomProvider = randomProvider;
 }
Пример #15
0
 public NSGA2(IEvaluation <Element, Tuple <double, double> > evaluation, IStopCondition stopCondition, AGenerator <Element> generator,
              IDominationComparer dominationComparer, ACrossover crossover, IMutation <Element> mutation, int populationSize,
              int?seed = null)
     : base(evaluation, stopCondition, generator, new NSGA2Selection(2, evaluation.tMaxValue, dominationComparer, true, seed),
            crossover, mutation, populationSize, seed)
 {
 }
 /// <summary>
 /// Mutate the specified chromosomes.
 /// </summary>
 /// <param name="mutation">The mutation class.</param>
 /// <param name="mutationProbability">The mutation probability.</param>
 /// <param name="chromosomes">The chromosomes.</param>
 public override void Mutate(IMutation mutation, float mutationProbability, IList <IChromosome> chromosomes)
 {
     for (int i = 0; i < chromosomes.Count; i++)
     {
         mutation.Mutate(chromosomes[i], mutationProbability);
     }
 }
Пример #17
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);
    }
Пример #18
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);
    }
Пример #19
0
 /// <summary>
 /// Causes the organism to mutate accordingly to the settings in the mutation.
 /// </summary>
 /// <param name="m">The mutation</param>
 public void Mutate(IMutation m)
 {
     if(m != null) {
         Root.Accept(m);
     } else {
         throw new Exception("The mutation is null");
     }
 }
 public DSMGA(IEvaluation <bool> evaluation, AStopCondition stopCondition, AGenerator <bool> generator,
              ASelection selection, ACrossover crossover, IMutation <bool> mutation, int populationSize)
     : base(evaluation, stopCondition, generator, selection, crossover, mutation, populationSize)
 {
     Combinations = GetKCombs(Enumerable.Range(0, evaluation.iSize), 2)
                    .Select(x => x.ToList()).ToList();
     ResetContingencyMatrixTable();
 }
Пример #21
0
 public ProxyMutation(IMutation mutation)
 {
     _mutation = mutation;
     _numberOfGoodStarts = 0;
     _numberOfBadStarts = 0;
     _progressList = new List<double> {OneHundredPercent};
     _progress = OneHundredPercent;
 }
Пример #22
0
 public bool Equals(IMutation obj)
 {
     if (!(obj is MutationalChunk o))
     {
         return(false);
     }
     return(Equals(o));
 }
 public GeneticAlgorithmInstance(TSPProblem problem, ISelection selection, ICrossover crossover, IMutation mutation)
 {
     this.problem    = problem;
     this.selection  = selection;
     this.crossover  = crossover;
     this.mutation   = mutation;
     randomGenerator = new Random();
 }
Пример #24
0
        public GeneticAlgorithm(double crossoverRate, double mutationRate, double elitism, double truncation, double chromosomeCount, ISelection selection, ICrossover crossover, IMutation mutation, FitnessCalculator fitnessCalculator)
        {
            CrossoverRate = crossoverRate;
            MutationRate = mutationRate;
            ElitismRate = elitism;
            TruncationRate = truncation;
            ChromosomeCount = chromosomeCount;

            this.selection = selection;
            this.mutation = mutation;
            this.crossover = crossover;

            this.fitnessCalculator = fitnessCalculator;

            random = new Random();
        }
Пример #25
0
 public GEngine(AbstractTrack[] tracks, int pCrossingover, int pMutation, IFitnessFunction fitnessFunction, IMutation mutation, ICrossingover crossingover, ISelection selection)
 {
     _countOfPerson = tracks.Length;
     _tracks = new AbstractTrack[_countOfPerson];
     _tracks = tracks;
     _pCrossingover = pCrossingover;
     _pMutation = pMutation;
     _fitnessFunction = fitnessFunction;
     _mutation = mutation;
     _crossingover = crossingover;
     _selection = selection;
     _geneticsDataSet = new DB_GeneticsDataSet();
     _launchId = Guid.NewGuid();
     _launchTableAdapter = new DB_GeneticsDataSetTableAdapters.LaunchesTableAdapter();
     _personsTableAdapter = new DB_GeneticsDataSetTableAdapters.PersonsTableAdapter();
 }
Пример #26
0
        public void RunCounterTest()
        {
            _mutation = new NotRandomMutation();
            _selection = new TournamentSelection();
            _crossingover = new CyclicalCrossingover();

            int expectCountOfGeneration = 12000;
            IFitnessFunction fitnessFunction = new GenerationCounter(expectCountOfGeneration);
            int pCrossingover = 80;
            int pMutation = 60;
            Array.Sort(_closedTracks);
            double preBestResult = _closedTracks[0].GetTrackLength();
            GEngine target = new GEngine(_closedTracks, pCrossingover, pMutation, fitnessFunction, _mutation, _crossingover, _selection);
            target.Run();
            Assert.AreEqual(expectCountOfGeneration, target.FitnessFunction.ActualCountOfReps);
            Assert.IsTrue(preBestResult >= target.FitnessFunction.BestResult);
        }
Пример #27
0
        static void OnImprovement(Species sender, IMutation mutationType)
        {
            Console.Clear();

            var improve = sender.BestFit - lastFit;

            if (imrovement.ContainsKey(mutationType))
                imrovement[mutationType] += improve;
            else
                imrovement.Add(mutationType,improve);

            Console.WriteLine("Iteration: {0} Seconds elapsed: {1}", sender.Iterations, (DateTime.Now- startTime).TotalSeconds);
            Console.WriteLine("Fit: {0}",sender.BestFit);
            Console.WriteLine("Neurons: {0}, Synapses: {1} \r\n", sender.Network.NeuronsCount, sender.Network.SynapsesCount);

            foreach (var value in imrovement.OrderByDescending(a=>a.Value))
                Console.WriteLine(value.Key.GetType().Name+" "+value.Value/sender.MutationsCollection[value.Key]);
        }
Пример #28
0
        static bool HandleCommandLineArgs(Game game, IEnumerable<string> args)
        {
            string fitnessType = "", crossoverType = "";
            bool status = true;
            options = new OptionSet
                          {
                              {"m|mutation=", "The mutation rate (0-1)", (double v) => mutationRate = v},
                              {"s|crossover=", "The crossover rate (0-1)", (double v) => crossoverRate = v},
                              {"e|elitism=", "The elitism rate (0-1)", (double v) => elitismRate = v},
                              {"c|crcount=", "The number of chromosomes per population (>1)", (int v) => chromosomeCount = v},
                              {"fitness=", "The fitness calculator [sum | levenshtein | hamming]", v => fitnessType = v},
                              {"ctype=", "The crossover type [one | two ]", v => crossoverType = v},
                              {"t|truncate=", "The rate of the chromosomes to keep from a population before advancing (0 < t <= 1)", (double v) => truncationRate = v},
                              {"?|h|help", "Show help", v => { status = false; }},
                              //{"<>", v => target = v} // this can be used for a seed
                          };
            try
            {
                options.Parse(args);
            }
            catch (OptionException ex)
            {
                status = false;
            }

            fitness = (FitnessCalculator)Activator.CreateInstance(GetOperationType(fitnessTypes, fitnessType), new object[] { game });
            crossover = (ICrossover)Activator.CreateInstance(GetOperationType(crossoverTypes, crossoverType), new object[] { fitness });
            mutation = new SinglePointMutation(new ReplayCharacterSet(), fitness);
            selection = new RouletteWheelSelection();

            if (mutationRate > 1 || crossoverRate > 1 || elitismRate > 1 || chromosomeCount <= 1 || truncationRate <= 0 || truncationRate > 1)
            {
                status = false;
            }

            return status;
        }
Пример #29
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GeneticSharp.Domain.Mutations.MutationException"/> class.
 /// </summary>
 /// <param name="mutation">The Mutation where ocurred the error.</param>
 /// <param name="message">The error message.</param>
 /// <param name="innerException">The inner exception.</param>
 public MutationException(IMutation mutation, string message, Exception innerException)
     : base("{0}: {1}".With(mutation != null ? mutation.GetType().Name : String.Empty, message), innerException)
 {
     Mutation = mutation;
 }
Пример #30
0
        public void values_init()
        {
            //---pobranie danych z bazy danych---
            var db = new BazaDanychDataContext();
            IDictionary<Przedmiot, IList<Prowadzący>> prowadzacyZajecia;
            IList<Zajecia> genotyp;

            InitializeFromDataBase(db, this.comboBox1.Text, out genotyp, out prowadzacyZajecia);
            Application.DoEvents();

            //---przypisanie genotypu---
            Timetable.Genome = genotyp;

            //---randomy---
            DoubleRandomGenerator randMutation = new DoubleRandomGenerator();
            DoubleRandomGenerator randSelector = new DoubleRandomGenerator();
            IntegerRandomGenerator randGen = new IntegerRandomGenerator();
            IntegerRandomGenerator randMateUp = new IntegerRandomGenerator();
            IntegerRandomGenerator randGenSelector = new IntegerRandomGenerator();

            //---komponenty algorytmu---
            population = new List<Timetable>();
            mutation = new TimetableTeacherMutation(prowadzacyZajecia, randMutation, randGenSelector, 0.02);
            breeder = new TimetableFactory(mutation, randMateUp);
            evalSelector = new TimetableEvaluator();

            //Timetable primeChromosome = breeder.CreateNew();

            reproducer = new CrossOverReproducer<Timetable, TimetableLocus, Zajecia>(randMateUp, breeder, new CrossOverReproducer<Timetable, TimetableLocus, Zajecia>.Config() { ChildCount = 2, ParentCount = 2 });
            selector = new RouletSelector<Timetable, TimetableLocus, Zajecia>(evalSelector, randSelector);

            //---inicjacja populacji---  (calosciowy plan dla uczelni)
            //Application.DoEvents();
            for (int i = 0; i < MaxPopulationCount; i++)
                population.Add(breeder.CreateNew());

            //moze zrobic tak...
            //populacje duzych planow rozpic na N populacjie mniejszych planow

            //dla kazdego duzego planu
            //duzy plan uzyskany z populacji rozbic na mniejsze juz teraz
            //stworzyc populacje pomiejszych planow
            //przeprowadzic iteracje GA
            //potem wszystkie te plany skonkatenowac
            //odtworzyc populacje duzych planow
            //i ocenic...

            it = 0;

            this.wykres.Series[0].Points.Clear();
            this.wykres.Series[1].Points.Clear();
            this.comboBox1.Enabled = true;
            this.poprzedni.Enabled = false;
            this.nastepny.Enabled = true;
            wybranaGrupa_SelectedIndexChanged(null, null);
            this.dataGridView1.ReadOnly = false; this.dataGridView1.AllowUserToDeleteRows = true;
            this.dataGridView2.ReadOnly = false; this.dataGridView2.AllowUserToDeleteRows = true;
            this.dataGridView3.ReadOnly = false; this.dataGridView3.AllowUserToDeleteRows = true;
            this.dataGridView4.ReadOnly = false; this.dataGridView4.AllowUserToDeleteRows = true;
            this.dataGridView5.ReadOnly = false; this.dataGridView5.AllowUserToDeleteRows = true;
        }
Пример #31
0
        private static TestComposite<ClassToTest> MakeSut(ITestComposite<ClassToTest> parent = null, IMutation<ClassToTest> mutation = null  )
        {
            parent = parent ?? new DummyTestComposite<ClassToTest>();
            mutation = mutation ?? new DummyMutation<ClassToTest>();

            return new TestComposite<ClassToTest>(parent, mutation);
        }
Пример #32
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GeneticSharp.Domain.GeneticAlgorithm"/> class.
        /// </summary>
        /// <param name="population">The chromosomes population.</param>
        /// <param name="fitness">The fitness evaluation function.</param>
        /// <param name="selection">The selection operator.</param>
        /// <param name="crossover">The crossover operator.</param>
        /// <param name="mutation">The mutation operator.</param>
        public GeneticAlgorithm(
            Population population,
            IFitness fitness,
            ISelection selection,
            ICrossover crossover,
            IMutation mutation)
        {
            ExceptionHelper.ThrowIfNull("Population", population);
            ExceptionHelper.ThrowIfNull("fitness", fitness);
            ExceptionHelper.ThrowIfNull("selection", selection);
            ExceptionHelper.ThrowIfNull("crossover", crossover);
            ExceptionHelper.ThrowIfNull("mutation", mutation);

            Population = population;
            Fitness = fitness;
            Selection = selection;
            Crossover = crossover;
            Mutation = mutation;
            Reinsertion = new ElitistReinsertion();
            Termination = new GenerationNumberTermination(1);

            CrossoverProbability = DefaultCrossoverProbability;
            MutationProbability = DefaultMutationProbability;
            TimeEvolving = TimeSpan.Zero;
            State = GeneticAlgorithmState.NotStarted;
            TaskExecutor = new LinearTaskExecutor();
        }
Пример #33
0
 public Test(IMutation mutation)
     : this()
 {
     mutate(mutation);
 }
Пример #34
0
 /// <summary>
 /// Causes the organism to mutate accordingly to the settings in the mutation.
 /// </summary>
 /// <param name="m">The mutation</param>
 public void mutate(IMutation m)
 {
     if (rootElement == null)
         throw new NullReferenceException(errorEmptyGenotype);
     rootElement.accept(m);
 }
Пример #35
0
 /// <summary>
 /// Causes the organism to mutate accordingly to the settings in the mutation.
 /// </summary>
 /// <param name="m">The mutation</param>
 public void mutate(IMutation m)
 {
     genotype.mutate(m);
 }
Пример #36
0
        public void RunSearchBestTest()
        {
            int bestReps = 50;
            int wantedResult = 6;
            List<ProxyMutation> proxyMutations = new List<ProxyMutation>();
            proxyMutations.Add(new ProxyMutation(new TwoPointMutation()));
            proxyMutations.Add(new ProxyMutation(new FourPointMutation()));
            proxyMutations.Add(new ProxyMutation(new NotRandomMutation()));
            _mutation = new SearchBestMutation(proxyMutations);

            List<ProxySelection> proxySelectios = new List<ProxySelection>();
            proxySelectios.Add(new ProxySelection(new TournamentSelection()));
            proxySelectios.Add(new ProxySelection(new RouletteSelection()));
            proxySelectios.Add(new ProxySelection(new RankingSelection()));
            _selection = new SearchBestSelection(proxySelectios);

            List<ProxyCrossingover> proxyCrossingovers = new List<ProxyCrossingover>();
            proxyCrossingovers.Add(new ProxyCrossingover(new CyclicalCrossingover()));
            proxyCrossingovers.Add(new ProxyCrossingover(new InversionCrossingover()));
            proxyCrossingovers.Add(new ProxyCrossingover(new OnePointCrossingover()));
            proxyCrossingovers.Add(new ProxyCrossingover(new TwoPointCrossingover()));
            _crossingover = new SearchBestCrossingover(proxyCrossingovers);

            IFitnessFunction fitnessFunction = new BestReps(bestReps);
            int pCrossingover = 100;
            int pMutation = 100;
            Array.Sort(_closedTracks);
            double preBestResult = _closedTracks[0].GetTrackLength();
            GEngine target = new GEngine(_closedTracks, pCrossingover, pMutation, fitnessFunction, _mutation, _crossingover, _selection);
            target.Run();
            double progress1 = proxySelectios[0].GetProgress();
            double progress2 = proxySelectios[1].GetProgress();
            double progress3 = proxySelectios[2].GetProgress();
            Assert.IsTrue(preBestResult >= target.FitnessFunction.BestResult);
        }
Пример #37
0
        /// <summary>
        /// Apply the mutation on the extension and his childs.
        /// </summary>
        /// <param name="mutation">The mutation</param>
        public void accept(IMutation mutation)
        {
            // Shortcuts can be made here to gain in performance.

            // Apply mutation locally first.
            mutation.apply(this);

            IList<Extension> copy = extensions.ToList<Extension>();

            // Propagate in lower levels.
            foreach (Extension extension in copy)
            {
                extension.accept(mutation);
            }
        }
Пример #38
0
        public void RunReachWantedResultTest()
        {
            _mutation = new NotRandomMutation();
            _selection = new TournamentSelection();
            _crossingover = new CyclicalCrossingover();

            int wantedResult = 6;
            IFitnessFunction fitnessFunction = new ReachWantedResult(wantedResult);
            int pCrossingover = 80;
            int pMutation = 60;
            Array.Sort(_closedTracks);
            double preBestResult = _closedTracks[0].GetTrackLength();
            GEngine target = new GEngine(_closedTracks, pCrossingover, pMutation, fitnessFunction, _mutation, _crossingover, _selection);
            target.Run();
            Assert.AreEqual(wantedResult, target.FitnessFunction.BestResult);
            Assert.IsTrue(preBestResult > target.FitnessFunction.BestResult);
        }