private void btnStart_Click(object sender, EventArgs e) { if (cmbAlgorithms.Text == "" || cmbFunction.Text == "" || txtExperiments.Text == "") { MessageBox.Show("Lütfen bilgileri eksiksiz giriniz."); } else { table.Columns.Clear(); table.Rows.Clear(); label3.Text = ""; label4.Text = ""; label5.Text = ""; label11.Text = ""; table.Columns.Add("En iyi çözüm", typeof(double)); for (int i = 0; i < nd; i++) { table.Columns.Add("Çözüm adayı " + (i + 1), typeof(double)); } table.Columns.Add("İşlem süresi", typeof(double)); table.Columns.Add("Deney sayısı", typeof(int)); table.Columns.Add("Min en iyi çözüm", typeof(double)); table.Columns.Add("Max en iyi çözüm", typeof(double)); table.Columns.Add("En iyi çözümlerin ortalaması", typeof(double)); table.Columns.Add("Standart sapma", typeof(double)); dgwFitnessInf.DataSource = table; NumofExp = int.Parse(txtExperiments.Text); sw.Start(); switch (cmbAlgorithms.Text) { case "Genetic Algorithm": for (int i = 0; i < NumofExp; i++) { Genetic gen = new Genetic(); double globalMin = gen.geneticStart(cmbFunction.Text); if (gen.getDeger() == -1) { MessageBox.Show("Fonksiyonun parametre sayısı ile değişkenlerinizin sayısı uyuşmuyor!"); break; } else { double[][] randPop = gen.getRandPop(); MinBul min = new TekMinBul(gen.getFitness()); int minindex = min.minBul(); sw.Stop(); row = table.NewRow(); row["En iyi çözüm"] = globalMin; for (int h = 0; h < nd; h++) { row["Çözüm adayı " + (h + 1)] = randPop[minindex][h]; } row["İşlem süresi"] = sw.ElapsedMilliseconds; table.Rows.Add(row); dgwFitnessInf.DataSource = table; } } break; case "SOS Algorithm": for (int i = 0; i < NumofExp; i++) { Sos sos = new Sos(); double globalMin = sos.sosStart(cmbFunction.Text); if (sos.getDeger() == -1) { MessageBox.Show("Fonksiyonun parametre sayısı ile değişkenlerinizin sayısı uyuşmuyor!"); break; } else { double[][] randPop = sos.getRandPop(); MinBul min = new TekMinBul(sos.getFitness()); int minindex = min.minBul(); sw.Stop(); row = table.NewRow(); row["En iyi çözüm"] = globalMin; for (int h = 0; h < nd; h++) { row["Çözüm adayı " + (h + 1)] = randPop[minindex][h]; } row["İşlem süresi"] = sw.ElapsedMilliseconds; table.Rows.Add(row); dgwFitnessInf.DataSource = table; } } break; } try { double[] bfs = new double[dgwFitnessInf.Rows.Count - 1]; foreach (DataGridViewRow row in dgwFitnessInf.Rows) { ort += Convert.ToDouble(row.Cells[0].Value); bf = Convert.ToDouble(row.Cells[0].Value); if (m == dgwFitnessInf.Rows.Count - 1) { break; } bfs[m] = bf; m++; } average = ort / dgwFitnessInf.Rows.Count; for (int i = 0; i < dgwFitnessInf.Rows.Count - 1; i++) { ss += Math.Pow((bfs[i] - average), 2); } ss = ss / (dgwFitnessInf.Rows.Count - 2); label3.Text = bfs.Min() + ""; label4.Text = bfs.Max() + ""; label5.Text = (average) + ""; label11.Text = ss + ""; row["Deney sayısı"] = txtExperiments.Text; row["Min en iyi çözüm"] = bfs.Min(); row["Max en iyi çözüm"] = bfs.Max(); row["En iyi çözümlerin ortalaması"] = average; row["Standart sapma"] = ss; pnlInfo.Visible = true; btnStart.Enabled = false; } catch (Exception) { MessageBox.Show("Lütfen probleminize uygun bir fonksiyon seçiniz.");; } } }