Exemple #1
0
        private void SetupParentSelector()
        {
            switch (comboBoxParentSelector.SelectedIndex)
            {
            // Fitness-Proportionate
            case FITNESS_INDEX:
                eaLoop.ParentSelector = new FitnessProportionate();
                break;

            // Sigma-Scaling
            case SIGMA_INDEX:
                eaLoop.ParentSelector = new SigmaScaling();
                break;

            // Rank Scaling
            case RANK_INDEX:
                RankScaling rankScaling = new RankScaling();
                rankScaling.Min       = (float)numericRankMin.Value;
                rankScaling.Max       = (float)numericRankMax.Value;
                eaLoop.ParentSelector = rankScaling;
                break;

            // Tournament Selector
            case TOURNAMENT_INDEX:
                TournamentSelector tournamentSelector = new TournamentSelector();
                tournamentSelector.K  = (int)numericTournamentK.Value;
                tournamentSelector.E  = (float)numericTournamentE.Value;
                eaLoop.ParentSelector = tournamentSelector;
                break;
            }

            eaLoop.ParentSelector.ChildCount = (int)numericChildCount.Value;
        }
Exemple #2
0
        private void SetupParentSelector()
        {
            TournamentSelector selector = new TournamentSelector();

            selector.ChildCount     = (int)numericPopulation.Value;
            selector.TournamentSize = (int)numericTournamentSize.Value;
            eaLoop.ParentSelector   = selector;
        }
Exemple #3
0
        public void WhenSelectorIsRequested_Tournament_CorrectSelectionShouldBeReturned()
        {
            TournamentSelector selector = new TournamentSelector();

            Selector requested = SelectionProvider.GetSelector(SelectionType.Tournament);

            Assert.AreEqual(selector.Name, requested.Name);
        }
Exemple #4
0
        private static void Main(string[] args)
        {
            var converter   = new MidiConverter();
            var midi        = MidiFile.Read(@"Files\hey-jude.mid");
            var input       = converter.MidiToMelody(midi);
            var inputToSave = converter.MelodyToMidi(input);

            converter.SaveMidi(inputToSave, @"Files\input.mid");

            var measureMutationOperator = new List <IMeasureMutationOperator>
            {
                new MeasureInversionOperator(),
                new MeasureReorganizationOperator(),
                new MeasureReplacementOperator(),
                new MeasureBrokerOperator(),
                new MeasureExchangeOperator(),
            };

            var melodyMutationOperators = new List <IMelodyMutationOperator>
            {
                new MelodyExchangeOperator(),
                new MelodyInversionOperator(),
            };

            var crossoverOperator        = new RandomCutOffCrossoverOperator(measureMutationOperator, melodyMutationOperators);
            var initializer              = new RandomInitializer(input);
            var selector                 = new TournamentSelector();
            var replacementOperator      = new HalfReplacementOperator(crossoverOperator, selector);
            var fitnessCalculator        = new MelodySimilarityFitnessCalculator();
            var stoppingCriterionChecker = new MultipleStoppingCriterionChecker();
            var geneticAlgorithm         = new MelodyGenerator(crossoverOperator, fitnessCalculator, initializer, measureMutationOperator, melodyMutationOperators, replacementOperator, selector, stoppingCriterionChecker);
            var geneticEventsManager     = Singleton <GeneticEventsManager> .Instance();

            geneticEventsManager.Set(input);
            // Test
            new List <Melody>()
            {
                input
            }.ForEach(currentMelody => fitnessCalculator.Calculate(input, currentMelody));
            var output       = geneticAlgorithm.Generate();
            var outputToSave = converter.MelodyToMidi(output);

            converter.SaveMidi(outputToSave, @"Files\output.mid");

            Console.ReadLine();
        }