public SimAnnealing(double T0, int myArgCnt, double[] rMin, double[] rMax, int itMax, int myOptOrient, double myAlpha, Parser.PostfixNotationExpression myFunc)
 {
     TInit = T0;
     T = T0;
     argCnt = myArgCnt;
     rangeMax = new Point(myArgCnt, rMax);
     rangeMin = new Point(myArgCnt, rMin);
     iterMax = itMax;
     optOrient = -myOptOrient;
     alpha = myAlpha;
     func = myFunc;
     rand = new Random();
 }
Ejemplo n.º 2
0
 public FireflyMethod(int myB, int myArgCnt, double[] rMin, double[] rMax, double myGamma, int itMax, int myOptOrient, double myAlpha, double myBeta0, Parser.PostfixNotationExpression myFunc)
 {
     B = myB;
     argCnt = myArgCnt;
     rangeMax = new Point(myArgCnt, rMax);
     rangeMin = new Point(myArgCnt, rMin);
     gamma = myGamma;
     iterMax = itMax;
     optOrient = myOptOrient;
     alpha = myAlpha;
     beta0 = myBeta0;
     func = myFunc;
     rand = new Random();
 }
Ejemplo n.º 3
0
 private void StartSimAnnealing()
 {
     double T = Convert.ToDouble(textBox21.Text);
     if (T <= 0)
     {
         throwError("T должно быть больше 0");
         return;
     }
     double alpha = Convert.ToDouble(textBox23.Text);
     if (alpha <= 0 || alpha >= 1)
     {
         throwError("alpha должно быть в пределах (0, 1)");
         return;
     }
     int maxIter = Convert.ToInt32(textBox22.Text);
     if (maxIter <= 0)
     {
         throwError("Max Iteration должно быть положительным целым числом");
         return;
     }
     int argCnt = Convert.ToInt32(textBox12.Text);
     if (argCnt <= 0)
     {
         throwError("n должно быть положительным числом");
         return;
     }
     double[] rangeMin = getPointFromString(textBox14.Text, argCnt).ToArray();
     double[] rangeMax = getPointFromString(textBox15.Text, argCnt).ToArray();
     Parser.PostfixNotationExpression myFunc = new Parser.PostfixNotationExpression(textBox13.Text);
     int optOrient;
     if (radioButton1.Checked)
     {
         optOrient = 1;
     }
     else if (radioButton2.Checked)
     {
         optOrient = -1;
     }
     else
     {
         throwError("Выберите Max или Min");
         return;
     }
     SimAnnealing.SimAnnealing mySimAnnealingMethod = new SimAnnealing.SimAnnealing(T, argCnt, rangeMin, rangeMax,
                                                                                    maxIter, optOrient, alpha, myFunc);
     double[] res = mySimAnnealingMethod.search();
     addResultToLabel20(argCnt, res, myFunc);
     return;
 }
Ejemplo n.º 4
0
        private void StartFireflyMethod()
        {
            int B = Convert.ToInt32(textBox16.Text);
            if (B <= 0)
            {
                throwError("B должно быть положительным целым числом");
                return;
            }
            double alpha = Convert.ToDouble(textBox19.Text);
            if (alpha <= 0)
            {
                throwError("alpha должно быть положительным числом");
                return;
            }
            int maxIter = Convert.ToInt32(textBox18.Text);
            if (maxIter <= 0)
            {
                throwError("Max Iteration должно быть положительным целым числом");
                return;
            }
            double beta = Convert.ToDouble(textBox20.Text);
            if (beta < 0)
            {
                throwError("beta должно быть неотрицательным числом");
                return;
            }
            double gamma = Convert.ToDouble(textBox17.Text);
            if (gamma < 0 || gamma > 1)
            {
                throwError("gamma должно быть в промежутке [0, 1]");
                return;
            }
            int argCnt = Convert.ToInt32(textBox12.Text);
            if (argCnt <= 0)
            {
                throwError("n должно быть положительным числом");
                return;
            }
            double[] rangeMin = getPointFromString(textBox14.Text, argCnt).ToArray();
            double[] rangeMax = getPointFromString(textBox15.Text, argCnt).ToArray();
            Parser.PostfixNotationExpression myFunc = new Parser.PostfixNotationExpression(textBox13.Text);
            int optOrient;
            if (radioButton1.Checked)
            {
                optOrient = 1;
            }
            else if (radioButton2.Checked)
            {
                optOrient = -1;
            }
            else
            {
                throwError("Выберите Max или Min");
                return;
            }

            FireflyMethod.FireflyMethod myFireflyMethod = new FireflyMethod.FireflyMethod(B, argCnt, rangeMin, rangeMax, gamma,
                                                                                          maxIter, optOrient, alpha, beta, myFunc);
            double[] res = myFireflyMethod.search();
            addResultToLabel20(argCnt, res, myFunc);
            return;
        }
Ejemplo n.º 5
0
 private void StartBeeMethod()
 {
     int Bs = Convert.ToInt32(textBox1.Text);
     if (Bs <= 0)
     {
         throwError("Bs должно быть положительным целым числом");
         return;
     }
     double alpha = Convert.ToDouble(textBox2.Text);
     if (alpha <= 0)
     {
         throwError("alpha должно быть положительным числом");
         return;
     }
     double TInit = Convert.ToDouble(textBox3.Text);
     if (TInit <= 0)
     {
         throwError("TInit должно быть положительным числом");
         return;
     }
     double TFinal = Convert.ToDouble(textBox4.Text);
     if (TFinal <= 0)
     {
         throwError("TFinal должно быть положительным числом");
         return;
     }
     int maxIter = Convert.ToInt32(textBox5.Text);
     if (maxIter <= 0)
     {
         throwError("Max Iteration должно быть положительным целым числом");
         return;
     }
     double w = Convert.ToDouble(textBox6.Text);
     if (w < 0)
     {
         throwError("w должно быть неотрицательным числом");
         return;
     }
     double eps = Convert.ToDouble(textBox7.Text);
     if (eps < 0)
     {
         throwError("eps должно быть неотрицательным числом");
         return;
     }
     double eta = Convert.ToDouble(textBox8.Text);
     if (eta < 0)
     {
         throwError("eta должно быть неотрицательным числом");
         return;
     }
     double beta = Convert.ToDouble(textBox9.Text);
     if (beta < 0)
     {
         throwError("beta должно быть неотрицательным числом");
         return;
     }
     double gamma = Convert.ToDouble(textBox10.Text);
     if (gamma < 0 || gamma > 1)
     {
         throwError("gamma должно быть в промежутке [0, 1]");
         return;
     }
     double range = Convert.ToDouble(textBox11.Text);
     if (range <= 0)
     {
         throwError("range должно быть неотрицательным числом");
         return;
     }
     int argCnt = Convert.ToInt32(textBox12.Text);
     if (argCnt <= 0)
     {
         throwError("n должно быть положительным числом");
         return;
     }
     double[] rangeMin = getPointFromString(textBox14.Text, argCnt).ToArray();
     double[] rangeMax = getPointFromString(textBox15.Text, argCnt).ToArray();
     Parser.PostfixNotationExpression myFunc = new Parser.PostfixNotationExpression(textBox13.Text);
     int optOrient;
     if (radioButton1.Checked)
     {
         optOrient = 1;
     }
     else if (radioButton2.Checked)
     {
         optOrient = -1;
     }
     else
     {
         throwError("Выберите Max или Min");
         return;
     }
     BeeMethod.BeeMethod myBeeMethod = new BeeMethod.BeeMethod(Bs,         alpha, TInit, TFinal, argCnt, maxIter, rangeMin,
                                                               rangeMax,       w,   eps,    eta,   beta,   gamma,    range,
                                                               optOrient, myFunc);
     double[] res = myBeeMethod.search();
     addResultToLabel20(argCnt, res, myFunc);
     return;
 }