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; }
private void SetupParentSelector() { TournamentSelector selector = new TournamentSelector(); selector.ChildCount = (int)numericPopulation.Value; selector.TournamentSize = (int)numericTournamentSize.Value; eaLoop.ParentSelector = selector; }
public void WhenSelectorIsRequested_Tournament_CorrectSelectionShouldBeReturned() { TournamentSelector selector = new TournamentSelector(); Selector requested = SelectionProvider.GetSelector(SelectionType.Tournament); Assert.AreEqual(selector.Name, requested.Name); }
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(); }