public GA(AlgorithmParameters algorithmParameters, EvaluatedFunction evaluatedFunction) { this.algorithmParameters = algorithmParameters; this.evaluatedFunction = evaluatedFunction; this.Chromosomes = new BitArray[algorithmParameters.Generations, 2, algorithmParameters.Population]; this.ChromosomeValues = new double[algorithmParameters.Generations, 3, algorithmParameters.Population]; this.BestValues = new double[algorithmParameters.Generations]; this.MeanValues = new double[algorithmParameters.Generations]; this.MedianValues = new double[algorithmParameters.Generations]; this.random = new Random(); // generate first population for (int individualIndex = 0; individualIndex < algorithmParameters.Population; individualIndex++) { int x = generateRandomValue(); int y = generateRandomValue(); System.Diagnostics.Debug.WriteLine("X: " + x.ToString()); System.Diagnostics.Debug.WriteLine("Y: " + y.ToString()); BitArray x_genome = int2Binary(x, this.algorithmParameters.Precision); BitArray y_genome = int2Binary(y, this.algorithmParameters.Precision); this.Chromosomes[0, 0, individualIndex] = x_genome; this.Chromosomes[0, 1, individualIndex] = y_genome; } }
private void AddParameters(object sender, RoutedEventArgs e) { DlgAddParameters dlg = new DlgAddParameters(); AlgorithmParameters algorithmParameters; if (dlg.ShowDialog() == true) { double crossoverProbability = (double)dlg.crossoverProbability.Value; double mutationProbability = (double)dlg.mutationProbability.Value; int population = (int)dlg.individualsNumber.Value; int generationsNumber = (int)dlg.generationsNumber.Value; int precision = (int)dlg.precision.Value; bool isMaximumSearching = (bool)dlg.maximumSearch.IsChecked; algorithmParameters = new AlgorithmParameters(crossoverProbability, mutationProbability, population, generationsNumber, precision, isMaximumSearching); algorithmParametersList.Add(algorithmParameters); ICollectionView AlgParams = CollectionViewSource.GetDefaultView(AlgorithmGrid.ItemsSource); if (AlgParams != null && AlgParams.CanGroup == true) { AlgParams.GroupDescriptions.Clear(); } AlgorithmGrid.Items.Refresh(); } }
private void Edit_Algorithm(object sender, RoutedEventArgs e) { DlgAddParameters dlg = new DlgAddParameters(); AlgorithmParameters algorithmParameters = AlgorithmGrid.SelectedItem as AlgorithmParameters; int indexOfAlgorithm = algorithmParametersList.IndexOf(algorithmParameters); dlg.crossoverProbability.Value = algorithmParameters.CrossoverProbability; dlg.mutationProbability.Value = algorithmParameters.MutationProbability; dlg.individualsNumber.Value = algorithmParameters.Population; dlg.generationsNumber.Value = algorithmParameters.Generations; dlg.precision.Value = algorithmParameters.Precision; dlg.maximumSearch.IsChecked = algorithmParameters.isMaxSearching; if (dlg.ShowDialog() == true) { algorithmParameters.CrossoverProbability = (double)dlg.crossoverProbability.Value; algorithmParameters.MutationProbability = (double)dlg.mutationProbability.Value; algorithmParameters.Population = (int)dlg.individualsNumber.Value; algorithmParameters.Generations = (int)dlg.generationsNumber.Value; algorithmParameters.Precision = (int)dlg.precision.Value; algorithmParameters.isMaxSearching = (bool)dlg.maximumSearch.IsChecked; algorithmParametersList[indexOfAlgorithm] = algorithmParameters; AlgorithmGrid.Items.Refresh(); } }
private void FilterParameters(object sender, RoutedEventArgs e) { DlgFilterParameters dlg = new DlgFilterParameters(); if (dlg.ShowDialog() == true) { ListCollectionView collectionView = new ListCollectionView(algorithmParametersList); collectionView.Filter = (o) => { AlgorithmParameters algorithmParameters = o as AlgorithmParameters; if (dlg.greaterCrossover.IsChecked != null) { if ((bool)dlg.greaterCrossover.IsChecked) { if (algorithmParameters.CrossoverProbability <= dlg.crossoverProbability.Value) { return(false); } } } if (dlg.lesserCrossover.IsChecked != null) { if ((bool)dlg.lesserCrossover.IsChecked) { if (algorithmParameters.CrossoverProbability >= dlg.crossoverProbability.Value) { return(false); } } } if (dlg.greaterMutation.IsChecked != null) { if ((bool)dlg.greaterMutation.IsChecked) { if (algorithmParameters.MutationProbability <= dlg.mutationProbability.Value) { return(false); } } } if (dlg.lesserMutation.IsChecked != null) { if ((bool)dlg.lesserMutation.IsChecked) { if (algorithmParameters.MutationProbability >= dlg.mutationProbability.Value) { return(false); } } } if (dlg.greaterPrecision.IsChecked != null) { if ((bool)dlg.greaterPrecision.IsChecked) { if (algorithmParameters.Precision <= dlg.precision.Value) { return(false); } } } if (dlg.lesserPrecision.IsChecked != null) { if ((bool)dlg.lesserPrecision.IsChecked) { if (algorithmParameters.Precision >= dlg.precision.Value) { return(false); } } } if (dlg.greaterPopulation.IsChecked != null) { if ((bool)dlg.greaterPopulation.IsChecked) { if (algorithmParameters.Population <= dlg.individualsNumber.Value) { return(false); } } } if (dlg.lesserPopulation.IsChecked != null) { if ((bool)dlg.lesserPopulation.IsChecked) { if (algorithmParameters.Population >= dlg.individualsNumber.Value) { return(false); } } } if (dlg.greaterGeneration.IsChecked != null) { if ((bool)dlg.greaterGeneration.IsChecked) { if (algorithmParameters.Generations <= dlg.generationsNumber.Value) { return(false); } } } if (dlg.lesserGeneration.IsChecked != null) { if ((bool)dlg.lesserGeneration.IsChecked) { if (algorithmParameters.Generations >= dlg.generationsNumber.Value) { return(false); } } } if (dlg.minimumSearch.IsChecked != null) { if ((bool)dlg.minimumSearch.IsChecked) { if (algorithmParameters.isMaxSearching) { return(false); } } } if (dlg.maximumSearch.IsChecked != null) { if ((bool)dlg.maximumSearch.IsChecked) { if (!algorithmParameters.isMaxSearching) { return(false); } } } return(true); }; AlgorithmGrid.ItemsSource = collectionView; } }