Ejemplo n.º 1
0
 private void SetFitnessFunction(FitnessFunctionDelegate argDelegate)
 {
     //uncheck
     miXXplusYY.IsChecked   = false;
     miTripod.IsChecked     = false;
     miAlpine.IsChecked     = false;
     miGriewank.IsChecked   = false;
     miRosenbrock.IsChecked = false;
     //set
     ffd = argDelegate;
     //preview
     cvPage.Children.Clear();
     if (Preview)
     {
         Optimizer = new PreviewDisplayer
         {
             LowerParamBounds = new ArrayList {
                 -100, -100
             },
             UpperParamBounds = new ArrayList {
                 100, 100
             },
             FitnessFunction = ffd
         };
         Optimizer.GenerationCreated += this.ShowAntibodies;
         Optimizer.Optimize();
     }
 }
Ejemplo n.º 2
0
        public RoutingTest(IOptimizationMethod optimizer, RouteTable routeTable, Canvas cvPage, TextBox textBox)
        {
            this.optimizer = optimizer;
            this.fullTable = routeTable;
            this.cvPage    = cvPage;
            this.tbResults = textBox;
            this.pathLines = new ArrayList();
            this.cars      = new List <Car>();
            int pointsCount = routeTable.Points.Count;//Összes pont száma
            int pathPmax    = 1;

            for (int i = 0; i < 9; i++)
            {
                int pointC = RNG.Next(pointsCount) + 1;//Aktuális utvonal pontjainak a száma
                while (pointC <= 3)
                {
                    pointC = RNG.Next(pointsCount) + 1;
                }
                if (pointC > pathPmax)
                {
                    pathPmax = pointC;
                }
                ArrayList path = new ArrayList();
                for (int j = 1; j < pointC; j++)
                {
                    int rnd = RNG.Next(pointsCount);
                    while (path.Contains(rnd) || rnd == 0)
                    {
                        rnd = RNG.Next(pointsCount);
                    }
                    path.Add(rnd);
                }
                pathLines.Add(path);
            }
            for (int i = 0; i < 5; i++)
            {
                this.cars.Add(new Car()
                {
                    index = i + 1, MaxPathPoint = (int)((RNG.Next(pathPmax) + 1) * 3), CurrentDailyPath = 0, MaxDailyPath = (RNG.Next(pathPmax) + 1) * 2, MaxPathDistance = (RNG.Next(pathPmax) + 1) * 150
                });
                Car car = this.cars[cars.Count - 1];
                car.MaxPathDistanceRes = car.MaxPathDistance;
            }
        }
Ejemplo n.º 3
0
        private void OptMethod(int id)
        {
            switch (id)
            {
            case 0:     //Firework
                Optimizer = new Firework
                {
                    // Number of particles in the swarm.
                    NumberOfElements = NA,
                    m            = m,
                    ymax         = double.MaxValue,
                    a            = a,
                    b            = b,
                    Amax         = Amax,
                    mhat         = mhat,
                    StoppingType = stoppingType,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Number of allowed affinity evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Affinity treshold.
                    StoppingFitnessTreshold = Ftr,
                    Slow = false
                };
                break;

            case 1:     //Particle Swarm
                Optimizer = new ParticleSwarm
                {
                    // Number of particles in the swarm.
                    NumberOfElements = NA,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,

                    c0 = c0,
                    // Multiplication factor for the distance to the personal best position.
                    cp = cp,
                    // Multiplication factor for the distance to the global best position.
                    cg = cg,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Fitness treshold.
                    StoppingFitnessTreshold = Ftr,
                    StoppingType            = stoppingType,
                    Slow = false
                };
                break;

            case 2:     //Clonal generation
                Optimizer = new ClonalGeneration
                {
                    // Size of the antibody pool.
                    NumberOfElements = NA,
                    // Number of antibodies selected for cloning.
                    NumberSelectedForCloning = cgn,
                    // Parameter determining the number of clones created for an antibody that was selected for cloning. (0,1]
                    Beta = beta,
                    // Number of antibodies created with random parameters in each new generation.
                    RandomAntibodiesPerGeneration = d,
                    // Mutation coefficient (0,1].
                    Ro = ro,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Number of allowed affinity evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Affinity treshold.
                    StoppingFitnessTreshold = Ftr,
                    Slow = false
                };
                break;

            case 3:
                Optimizer = new GeneticAlgorithm
                {
                    // Size of the individual pool.
                    NumberOfElements = NA,
                    // Number of parents in each generation.
                    ParentsInEachGeneration = P,
                    // The probability of mutation.
                    MutationProbability = pm,
                    // The number of crossovers in each generation.
                    CrossoverPerGeneration = crossoverCount,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Fitness treshold.
                    StoppingFitnessTreshold = Ftr,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    Slow         = false
                };
                break;

            case 4:     //Clonal generation local
                Optimizer = new ClonalGenerationLocal
                {
                    LowerParamBounds = new ArrayList {
                        -100.0
                    },
                    UpperParamBounds = new ArrayList {
                        100.0
                    },
                    // Size of the antibody pool.
                    NumberOfElements = NA,
                    // Number of antibodies selected for cloning.
                    NumberSelectedForCloning = cgn,
                    // Parameter determining the number of clones created for an antibody that was selected for cloning. (0,1]
                    Beta = beta,
                    // Number of antibodies created with random parameters in each new generation.
                    RandomAntibodiesPerGeneration = d,
                    // Mutation coefficient (0,1].
                    Ro = ro,
                    // RelativeStepSize
                    StepSizeRelative = cglssr,
                    // Local search/get
                    LocalSearchesPerGeneration = cgln,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Number of allowed affinity evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Affinity treshold.
                    StoppingFitnessTreshold = Ftr,
                    Slow = false
                };
                break;

            case 5:
                Optimizer = new CoordinateDescent
                {
                    NumberOfElements = NA,
                    StepSizeRelative = 0.6,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Fitness treshold.
                    StoppingFitnessTreshold = Ftr,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    Slow         = false
                };
                break;

            case 6:
                Optimizer = new ArtificialBeeColony
                {
                    NumberOfElements = NA,
                    //Felderitő méhek maximális keresési számas egy ciklus alatt
                    MaxStep = MaxStep,
                    //Felderítő méhek száma
                    ExBeeCount = ExBeeCount,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Fitness treshold.
                    StoppingFitnessTreshold = Ftr,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    Slow         = false
                };
                break;

            case 7:
                Optimizer = new BacterialForaging
                {
                    // Size of the antibody pool.
                    NumberOfElements = NA,
                    ClonesCount      = ClonesCount,
                    Infections       = Infections,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Fitness treshold.
                    StoppingFitnessTreshold = Ftr,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    Slow         = false
                };
                break;

            case 8:
                Optimizer = new DifferentialEvolution()
                {
                    weighf           = weighf,
                    crossf           = crossf,
                    NumberOfElements = NA,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Fitness treshold.
                    StoppingFitnessTreshold = Ftr,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    Slow         = false
                };
                break;

            case 9:
                Optimizer = new SelfOrgMigrating
                {
                    NumberOfElements = NA,
                    PRT        = 0.6,
                    PathLength = 10,
                    PopSize    = 7,
                    Step       = 0.6,
                    Type       = SelfOrgMigratingType.AllToAll,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Fitness treshold.
                    StoppingFitnessTreshold = Ftr,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    Slow         = false
                };
                break;

            case 10:
                Optimizer = new HaromonySearch
                {
                    NumberOfElements = NA,
                    consid_rate      = consid_rate,
                    adjust_rate      = adjust_rate,
                    range            = range,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Fitness treshold.
                    StoppingFitnessTreshold = Ftr,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    Slow         = false
                };
                break;

            case 11:
                Optimizer = new NelderMead
                {
                    NumberOfElements = NA,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = nev,
                    // Fitness treshold.
                    StoppingFitnessTreshold = Ftr,
                    // Number of generations.
                    StoppingNumberOfGenerations = ng,
                    // Stopping criteria.
                    StoppingType = stoppingType,
                    Slow         = false
                };
                break;
            }
        }
Ejemplo n.º 4
0
        private async void OptimizeButton_Click(object sender, RoutedEventArgs e)
        {
            /*if (fuzzySystem.Type == FuzzyType.Sugeno && CheckOutput.IsChecked == true)
             * {
             *  MessageBox.Show("Output optimization is not valid for Sugeno-type fuzzy systems.", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning);
             *  return;
             * }*/

            // Disable the optimize button and the optimization parameters
            OptimizeButton.IsEnabled = false;
            UseButton.IsEnabled      = false;
            RadioBaseRatio.IsEnabled = false;
            RadioRefPoint.IsEnabled  = false;
            CheckInput.IsEnabled     = false;
            CheckOutput.IsEnabled    = false;
            // Initialize variables
            ArrayList initParams = new ArrayList();
            ArrayList lbp        = new ArrayList();
            ArrayList ubp        = new ArrayList();

            // Set up initial parameters
            if (CheckInput.IsChecked == true)
            {
                foreach (InputOutput input in fuzzySystem.Inputs)
                {
                    foreach (MembershipFunction MF in input.MFs)
                    {
                        if (RadioRefPoint.IsChecked == true)
                        {
                            initParams.Add((double)(MF.GetReferencePoint()));
                            lbp.Add((double)(input.Range[0]));
                            ubp.Add((double)(input.Range[1]));
                        }
                        if (RadioBaseRatio.IsChecked == true)
                        {
                            initParams.Add((double)(MF.GetTrapBaseRatio()));
                            lbp.Add(0.0);
                            ubp.Add(0.95);
                        }
                    }
                }
            }
            if (CheckOutput.IsChecked == true)
            {
                foreach (InputOutput output in fuzzySystem.Outputs)
                {
                    foreach (MembershipFunction MF in output.MFs)
                    {
                        if (RadioRefPoint.IsChecked == true)
                        {
                            initParams.Add((double)(MF.GetReferencePoint()));
                            lbp.Add((double)(output.Range[0]));
                            ubp.Add((double)(output.Range[1]));
                        }
                        if (RadioBaseRatio.IsChecked == true)
                        {
                            initParams.Add((double)(MF.GetTrapBaseRatio()));
                            lbp.Add(0.0);
                            ubp.Add(0.95);
                        }
                    }
                }
            }

            bool[] ints = new bool[initParams.Count];

            // Set up the optimizer object depending on the settings
            switch (MethodId)
            {
            case 0:     //Firework
                Optimizer = new Firework
                {
                    // Number of particles in the swarm.
                    NumberOfElements = NA,
                    m    = m,
                    ymax = double.MaxValue,
                    a    = a,
                    b    = b,
                    Amax = Amax,
                    mhat = mhat,
                    Slow = false
                };
                break;

            case 1:     //Particle Swarm
                Optimizer = new ParticleSwarm
                {
                    // Number of particles in the swarm.
                    NumberOfElements = NA,
                    c0 = c0,
                    // Multiplication factor for the distance to the personal best position.
                    cp = cp,
                    // Multiplication factor for the distance to the global best position.
                    cg   = cg,
                    Slow = false
                };
                break;

            case 2:     //Clonal generation
                if (cgn > NA)
                {
                    MessageBox.Show("Number of antibodies selected for cloning at the end of each generation greater than the number of antibodies.", "ERROR", MessageBoxButton.OK);
                    OptimizeButton.IsEnabled = true;
                    return;
                }
                Optimizer = new ClonalGeneration
                {
                    // Size of the antibody pool.
                    NumberOfElements = NA,
                    // Number of antibodies selected for cloning.
                    NumberSelectedForCloning = cgn,
                    // Parameter determining the number of clones created for an antibody that was selected for cloning. (0,1]
                    Beta = beta,
                    // Number of antibodies created with random parameters in each new generation.
                    RandomAntibodiesPerGeneration = d,
                    // Mutation coefficient (0,1].
                    Ro   = ro,
                    Slow = false
                };
                break;

            case 3:
                Optimizer = new GeneticAlgorithm
                {
                    // Size of the individual pool.
                    NumberOfElements = NA,
                    // Number of parents in each generation.
                    ParentsInEachGeneration = P,
                    // The probability of mutation.
                    MutationProbability = pm,
                    // The number of crossovers in each generation.
                    CrossoverPerGeneration = crossoverCount,
                    Slow = false
                };
                break;

            case 4:     //Clonal generation
                if (cgn > NA)
                {
                    MessageBox.Show("Number of antibodies selected for cloning at the end of each generation greater than the number of antibodies.", "ERROR", MessageBoxButton.OK);
                    OptimizeButton.IsEnabled = true;
                    return;
                }
                Optimizer = new ClonalGenerationLocal
                {
                    // Size of the antibody pool.
                    NumberOfElements = NA,
                    // Number of antibodies selected for cloning.
                    NumberSelectedForCloning = cgn,
                    // Parameter determining the number of clones created for an antibody that was selected for cloning. (0,1]
                    Beta = beta,
                    // Number of antibodies created with random parameters in each new generation.
                    RandomAntibodiesPerGeneration = d,
                    // Mutation coefficient (0,1].
                    Ro = ro,
                    // Local searches per generation
                    LocalSearchesPerGeneration = cgln,
                    Slow = false
                };
                break;
            }

            // Set common parameters
            Optimizer.InitialParameters = initParams;
            Optimizer.LowerParamBounds  = lbp;
            Optimizer.UpperParamBounds  = ubp;
            // Bounds are required before setting this value
            if (MethodId == 4)
            {
                ((ClonalGenerationLocal)Optimizer).StepSizeRelative = cglssr;
            }
            Optimizer.Integer                     = ints;
            Optimizer.FitnessFunction             = FitnessFunctionMSE;
            Optimizer.StoppingNumberOfGenerations = StopGenerationNumber;
            Optimizer.StoppingNumberOfEvaluations = StopAffinityEvaluation;
            Optimizer.StoppingFitnessTreshold     = StopFitnessTreshold;
            Optimizer.StoppingType                = StopType;

            // Output string
            string outstr = "Initial parameters: " + List(initParams) + "\r\n";

            // Open progress window and begin the optimization
            ProgressWindow           = new OptimizationProgressWindow();
            ProgressWindow.OptWindow = this;
            ProgressWindow.Show();
            if (IoputMfWindows != null)
            {
                foreach (MFsPreviewWindow window in IoputMfWindows)
                {
                    window.Close();
                }
            }
            IoputMfWindows = new List <MFsPreviewWindow>();
            foreach (InputOutput input in fuzzySystem.Inputs)
            {
                IoputMfWindows.Add(new MFsPreviewWindow(input));
                IoputMfWindows[IoputMfWindows.Count - 1].Show();
            }
            foreach (InputOutput output in fuzzySystem.Outputs)
            {
                IoputMfWindows.Add(new MFsPreviewWindow(output));
                IoputMfWindows[IoputMfWindows.Count - 1].Show();
            }
            Optimizer.GenerationCreated += OnNewGeneration;
            // <DELAYER>

            /*var z = Task.Run(() => (delayer()));
             * int y = await z;*/
            // </DELAYER>
            var x       = Task.Run(() => (Optimizer.Optimize()));
            var Results = await x;

            ProgressWindow.Close();

            // Add results to output string
            outstr += "Initial MSE: " + Results.InfoList[InfoTypes.InitialFitness] + "\r\n" +
                      "Final parameters: " + List(Results.OptimizedParameters) + "\r\n" +
                      "Final MSE: " + $"{Results.InfoList[InfoTypes.FinalFitness],10:F6}" + "\r\n" +
                      "Number of generations: " + Results.InfoList[InfoTypes.Generations] + "\r\n" +
                      "Number of fitness evaluations: " + Results.InfoList[InfoTypes.Evaluations] + "\r\n" +
                      "Best affinities in each generation: " + List((ArrayList)Results.InfoList[InfoTypes.Affinities]) + "\r\n" +
                      "Optimization time in milliseconds: " + Results.InfoList[InfoTypes.ExecutionTime];

            fuzzySystem   = GetModifiedFuzzySystem(Results.OptimizedParameters);
            FuzzyBox.Text = fuzzySystem.ToString();

            // Display results and reenable the optimize button
            MessageBox.Show(outstr, "Optimization finished", MessageBoxButton.OK);
            OptimizeButton.IsEnabled = true;
            UseButton.IsEnabled      = true;
            RadioBaseRatio.IsEnabled = true;
            RadioRefPoint.IsEnabled  = true;
            CheckInput.IsEnabled     = true;
            CheckOutput.IsEnabled    = true;
        }
Ejemplo n.º 5
0
        private void OptMethod(int id)
        {
            switch (id)
            {
            case 0:     //Firework
                Optimizer = new Firework
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    Integer           = Integer,
                    FitnessFunction   = FitnessFunction,
                    // Number of particles in the swarm.
                    NumberOfElements = NumberOfElements,
                    m            = m,
                    ymax         = double.MaxValue,
                    a            = a,
                    b            = b,
                    Amax         = Amax,
                    mhat         = NumberOfElements,
                    StoppingType = StoppingType,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,
                    // Number of allowed affinity evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Affinity treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    Slow = Slow
                };
                break;

            case 1:     //Particle Swarm
                Optimizer = new ParticleSwarm
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    Integer           = Integer,
                    FitnessFunction   = FitnessFunction,
                    // Number of particles in the swarm.
                    NumberOfElements = NumberOfElements,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,

                    c0 = c0,
                    // Multiplication factor for the distance to the personal best position.
                    cp = cp,
                    // Multiplication factor for the distance to the global best position.
                    cg = cg,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Fitness treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    StoppingType            = StoppingType,
                    Slow = Slow
                };
                break;

            case 2:     //Clonal generation
                Optimizer = new ClonalGeneration
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    Integer           = Integer,
                    FitnessFunction   = FitnessFunction,
                    // Size of the antibody pool.
                    NumberOfElements = NumberOfElements,
                    // Number of antibodies selected for cloning.
                    NumberSelectedForCloning = NumberOfElements / 3,
                    // Parameter determining the number of clones created for an antibody that was selected for cloning. (0,1]
                    Beta = beta,
                    // Number of antibodies created with random parameters in each new generation.
                    RandomAntibodiesPerGeneration = NumberOfElements / 5,
                    // Mutation coefficient (0,1].
                    Ro = ro,
                    // Stopping criteria.
                    StoppingType = StoppingType,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,
                    // Number of allowed affinity evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Affinity treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    Slow = Slow
                };
                break;

            case 3:
                Optimizer = new GeneticAlgorithm
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    Integer           = Integer,
                    FitnessFunction   = FitnessFunction,
                    // Size of the individual pool.
                    NumberOfElements = NumberOfElements,
                    // Number of parents in each generation.
                    ParentsInEachGeneration = NumberOfElements / 2,
                    // The probability of mutation.
                    MutationProbability = pm,
                    // The number of crossovers in each generation.
                    CrossoverPerGeneration = NumberOfElements,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Fitness treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,
                    // Stopping criteria.
                    StoppingType = StoppingType,
                    Slow         = Slow
                };
                break;

            case 4:     //Clonal generation local
                Optimizer = new ClonalGenerationLocal
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    Integer           = Integer,
                    FitnessFunction   = FitnessFunction,
                    // Size of the antibody pool.
                    NumberOfElements = NumberOfElements,
                    // Number of antibodies selected for cloning.
                    NumberSelectedForCloning = NumberOfElements / 3,
                    // Parameter determining the number of clones created for an antibody that was selected for cloning. (0,1]
                    Beta = beta,
                    // Number of antibodies created with random parameters in each new generation.
                    RandomAntibodiesPerGeneration = d,
                    // Mutation coefficient (0,1].
                    Ro = ro,
                    // RelativeStepSize
                    StepSizeRelative = cglssr,
                    // Local search/get
                    LocalSearchesPerGeneration = cgln,
                    // Stopping criteria.
                    StoppingType = StoppingType,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,
                    // Number of allowed affinity evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Affinity treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    Slow = Slow
                };
                break;

            case 5:
                Optimizer = new CoordinateDescent
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    // Size of the antibody pool.
                    NumberOfElements = NumberOfElements,
                    StepSizeRelative = 5,
                    Integer          = Integer,
                    FitnessFunction  = FitnessFunction,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Fitness treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,
                    // Stopping criteria.
                    StoppingType = StoppingType,
                    Slow         = Slow
                };
                break;

            case 6:
                Optimizer = new ArtificialBeeColony
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    Integer           = Integer,
                    FitnessFunction   = FitnessFunction,
                    // Size of the antibody pool.
                    NumberOfElements = NumberOfElements,
                    //Felderitő méhek maximális keressi számas ciklus alatt
                    MaxStep = MaxStep,
                    //Felderítő méhek száma
                    ExBeeCount = Elite,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Fitness treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,
                    // Stopping criteria.
                    StoppingType = StoppingType,
                    Slow         = Slow
                };
                break;

            case 7:
                Optimizer = new BacterialForaging
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    Integer           = Integer,
                    // Size of the antibody pool.
                    NumberOfElements = NumberOfElements,
                    ClonesCount      = ClonesCount,
                    Infections       = Infections,
                    FitnessFunction  = FitnessFunction,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Fitness treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,
                    // Stopping criteria.
                    StoppingType = StoppingType,
                    Slow         = Slow
                };
                break;

            case 8:
                Optimizer = new DifferentialEvolution
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    Integer           = Integer,
                    weighf            = weighf,
                    crossf            = crossf,
                    // Size of the antibody pool.
                    NumberOfElements = NumberOfElements,
                    FitnessFunction  = FitnessFunction,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Fitness treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,
                    // Stopping criteria.
                    StoppingType = StoppingType,
                    Slow         = Slow
                };
                break;

            case 9:
                Optimizer = new SelfOrgMigrating
                {
                    InitialParameters = InitialParameters,
                    LowerParamBounds  = LowerParamBounds,
                    UpperParamBounds  = UpperParamBounds,
                    Integer           = Integer,
                    NumberOfElements  = NumberOfElements,
                    PRT             = 0.1,
                    PathLength      = 3,
                    PopSize         = 7,
                    Step            = 0.11,
                    Type            = SelfOrgMigratingType.AllToRand,
                    FitnessFunction = FitnessFunction,
                    // Number of allowed fitness evaluations.
                    StoppingNumberOfEvaluations = StoppingNumberOfEvaluations,
                    // Fitness treshold.
                    StoppingFitnessTreshold = StoppingFitnessTreshold,
                    // Number of generations.
                    StoppingNumberOfGenerations = StoppingNumberOfGenerations,
                    // Stopping criteria.
                    StoppingType = StoppingType,
                    Slow         = Slow
                };
                break;
            }
        }