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(); }
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(); }
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; }
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; }
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; }