private void button7_Click(object sender, EventArgs e) { listBox1.Items.Clear(); listBox2.Items.Clear(); listBox3.Items.Clear(); DateTime zaman = DateTime.Now; // listBox1.Items.Add(zaman); Kromozom.IDSifirla(); IlkAtamaYontem ia = IlkAtamaYontem.firstfit; if (comboBox1.Text == "firstfit") { ia = IlkAtamaYontem.firstfit; } else if (comboBox1.Text == "bestfitperiod") { ia = IlkAtamaYontem.bestfitperiod; } else if (comboBox1.Text == "bestfitteam") { ia = IlkAtamaYontem.bestfitteam; } int kromozomsayisi = 0; try { kromozomsayisi = Int32.Parse(kromozomsayisiTxt.Text); } catch { MessageBox.Show("Kromozom sayısı değeri sayı olmalıdır"); return; } int caprazlamaorani = 0; try { caprazlamaorani = Int32.Parse(caprazlamasayisiTxt.Text); } catch { MessageBox.Show("Çaprazlama oranı sayı olmalıdır"); return; } int iterasyonsayisi = 0; try { iterasyonsayisi = Int32.Parse(iterasyonsayisiTxt.Text); } catch { MessageBox.Show("İterasyon sayısı degeri sayı olmalıdır"); return; } ga = new GenetikAlgoritma(ia, kromozomsayisi, caprazlamaorani, 5, iterasyonsayisi, true); ga.Calistir(listBox1); if (Islemler.ilkatamabasarili == false) { MessageBox.Show("Daha iyi bir rota için farklı bir atama yöntemi kullanın\nSorun devam ederse;\nEkip sayısını artırabilirsiniz\nHasta gereksinimlerini kontrol edin\nHasta zaman periyodlarını kontrol edin"); Islemler.ilkatamabasarili = true; } else { MessageBox.Show("Atamalar tamamlandı"); } zaman = DateTime.Now; // listBox1.Items.Add(zaman); // NesilDegistir(iterasyonsayisi-1,listBox2,listBox3); ////nesil değiştir yazıldıktan sonra bloklandı //listBox2.Items.Clear(); //listBox3.Items.Clear(); //string rotalar = "Genel Fitness:"; //rotalar += ga.populasyon.kromozomListesi[0].fitness.ToString(); //listBox2.Items.Add(rotalar); //foreach (Rota myrota in ga.populasyon.kromozomListesi[0].rotaListesi) //{ // listBox3.Items.Add("--- " + myrota.ekip.ekipID.ToString() + " ---"); // rotalar = "rota fit:" + myrota.rotaceza.ToString(); // rotalar += " ekp:" + myrota.ekip.ekipID.ToString(); // rotalar += " Güz:"; // foreach (Gen mygen in myrota.ziyaretSirasi) // { // rotalar += "-" + mygen.hasta.hastaID.ToString(); // rotalar += "(" + mygen.atandigiTimeWindow.t1.ToString() + ":" + mygen.atandigiTimeWindow.t2.ToString() + ";" + mygen.genCeza.ToString() + ")"; // if (mygen.hasta.hastaID != 0) listBox3.Items.Add(mygen.hasta.hastaID); // } // listBox2.Items.Add(rotalar); //} }
private void button7_Click(object sender, EventArgs e) { secim_ga_gredy = 1; listBox1.Items.Clear(); listBox2.Items.Clear(); listBox3.Items.Clear(); Islemler.atanamayanHastalarListesi.Clear(); DateTime zaman = DateTime.Now; label9.Text = zaman.ToString(); Kromozom.IDSifirla(); IlkAtamaYontem ia = IlkAtamaYontem.firstfit; if (comboBox1.Text == "firstfit") { ia = IlkAtamaYontem.firstfit; } else if (comboBox1.Text == "bestfitperiod") { ia = IlkAtamaYontem.bestfitperiod; } else if (comboBox1.Text == "bestfitteam") { ia = IlkAtamaYontem.bestfitteam; } int kromozomsayisi = 0; try { kromozomsayisi = Int32.Parse(kromozomsayisiTxt.Text); } catch { MessageBox.Show("Kromozom sayısı değeri sayı olmalıdır"); return; } int caprazlamaorani = 0; try { caprazlamaorani = Int32.Parse(caprazlamasayisiTxt.Text); } catch { MessageBox.Show("Çaprazlama oranı sayı olmalıdır"); return; } int iterasyonsayisi = 0; try { iterasyonsayisi = Int32.Parse(iterasyonsayisiTxt.Text); } catch { MessageBox.Show("İterasyon sayısı degeri sayı olmalıdır"); return; } bool elitizmeniyi = true; //if (comboBox3.SelectedIndex==0)//ilk deper en iyi seçimine karşılık geliyor // elitizmeniyi = true; //else // elitizmeniyi = false; string caprazlasecim = comboBox3.Text; ga = new GenetikAlgoritma(ia, kromozomsayisi, caprazlamaorani, caprazlasecim, 5, iterasyonsayisi, elitizmeniyi); ga.Calistir(listBox1); zaman = DateTime.Now; if (Islemler.ilkatamabasarili == false) { string mesaj = "İstenen Kromozom sayısı:" + ga.populasyon.populasyonBuyukluk.ToString(); mesaj += "\n" + "İlk atamada oluşturulan Kromozom sayısı:" + Islemler.ilkatamaKromozomSayisi.ToString(); mesaj += "\nDaha iyi bir rota için farklı bir atama yöntemi kullanın\nSorun devam ederse;\nEkip sayısını artırabilirsiniz\nHasta gereksinimlerini kontrol edin\nHasta zaman periyodlarını kontrol edin"; MessageBox.Show(mesaj); Islemler.ilkatamabasarili = true; //atamalar yapılamadı atanamayan hastaları yazdır } else { MessageBox.Show("Atamalar tamamlandı"); } if (ga.populasyon.kromozomListesi.Count == 0) { return; } label6.Text = listBox1.Items[listBox1.Items.Count - 1].ToString(); label7.Text = listBox1.Items[0].ToString(); // listBox1.Items.Add(zaman); // NesilDegistir(iterasyonsayisi-1,listBox2,listBox3); ////nesil değiştir yazıldıktan sonra bloklandı //listBox2.Items.Clear(); //listBox3.Items.Clear(); //string rotalar = "Genel Fitness:"; //rotalar += ga.populasyon.kromozomListesi[0].fitness.ToString(); //listBox2.Items.Add(rotalar); //foreach (Rota myrota in ga.populasyon.kromozomListesi[0].rotaListesi) //{ // listBox3.Items.Add("--- " + myrota.ekip.ekipID.ToString() + " ---"); // rotalar = "rota fit:" + myrota.rotaceza.ToString(); // rotalar += " ekp:" + myrota.ekip.ekipID.ToString(); // rotalar += " Güz:"; // foreach (Gen mygen in myrota.ziyaretSirasi) // { // rotalar += "-" + mygen.hasta.hastaID.ToString(); // rotalar += "(" + mygen.atandigiTimeWindow.t1.ToString() + ":" + mygen.atandigiTimeWindow.t2.ToString() + ";" + mygen.genCeza.ToString() + ")"; // if (mygen.hasta.hastaID != 0) listBox3.Items.Add(mygen.hasta.hastaID); // } // listBox2.Items.Add(rotalar); //} label8.Text = zaman.ToString(); }