private void btnAlgoritam_Click(object sender, EventArgs e) { GenetskiAlgoritam ga = new GenetskiAlgoritam(); double rX = ga.algoritam(); double rY = GenetskiAlgoritam.funkcija(rX); label4.Text = "Resenje: f(" + rX.ToString("#0.000") + ")=" + rY.ToString("#0.000"); }
private void btnPopulacija_Click(object sender, EventArgs e) { int brojVrsta = 10; Jedinka[] populacija = new Jedinka[brojVrsta]; try { double maxX = Convert.ToDouble(tbMaxX.Text); double minX = Convert.ToDouble(tbMinX.Text); Random rnd = new Random(); for (int i = 0; i < brojVrsta; i++) { double x = minX + (maxX - minX) * rnd.NextDouble(); populacija[i] = new Jedinka(x, minX, maxX); populacija[i].ocena = GenetskiAlgoritam.funkcija(x); } // odrediti ocenuP double minOcena = populacija[0].ocena; double maxOcena = populacija[0].ocena; for (int i = 0; i < brojVrsta; i++) { minOcena = Math.Min(minOcena, populacija[i].ocena); maxOcena = Math.Max(maxOcena, populacija[i].ocena); } // skaliranje minOcena = 0 maxOcena = 100 double a = 100 / (maxOcena - minOcena); double b = -a * minOcena; double ukupno = 0; for (int i = 0; i < brojVrsta; i++) { double ocenaP = (float)(a * populacija[i].ocena + b); ukupno += ocenaP; populacija[i].ocenaP = ocenaP / 100.0; //Debug.WriteLine("Za X : " + populacija[i].x + ", ocena je : " + populacija[i].ocena + " i ocenaP je " + populacija[i].ocenaP); } populacijaPanel1.populacija = populacija; populacijaPanel1.Refresh(); } catch (Exception ex) { statusBar.Text = "Greška!"; } }
public PopulacijaPanel() { InitializeComponent(); int brojVrsta = 10; populacija = new Jedinka[brojVrsta]; Random rnd = new Random(); double minX = 0; double maxX = 100; for (int i = 0; i < brojVrsta; i++) { double x = minX + (maxX - minX) * rnd.NextDouble(); populacija[i] = new Jedinka(x, minX, maxX); populacija[i].ocena = GenetskiAlgoritam.funkcija(x); } // odrediti ocenuP double minOcena = populacija[0].ocena; double maxOcena = populacija[0].ocena; for (int i = 0; i < brojVrsta; i++) { minOcena = Math.Min(minOcena, populacija[i].ocena); maxOcena = Math.Max(maxOcena, populacija[i].ocena); } // skaliranje minOcena = 0 maxOcena = 100 double a = 100 / (maxOcena - minOcena); double b = -a * minOcena; double ukupno = 0; for (int i = 0; i < brojVrsta; i++) { double ocenaP = (float)(a * populacija[i].ocena + b); populacija[i].ocenaP = ocenaP / 100.0; ukupno += populacija[i].ocenaP; } // procentualno //for (int i = 0; i < brojVrsta; i++) //{ // double ocenaP = populacija[i].ocenaP / ukupno ; // populacija[i].ocenaP = ocenaP; //} }
private void btnAlgoritam_Click(object sender, EventArgs e) { GenetskiAlgoritam ga = new GenetskiAlgoritam(); GenetskiAlgoritam.traziMAX = true; double rX = ga.algoritam(); //TODO 17:Promeniti ispis double rX2 = ga.resenjeX2; double rY = GenetskiAlgoritam.funkcija(rX, rX2); if (GenetskiAlgoritam.traziMAX == true) { label4.Text = "Resenje: f(" + rX.ToString("#0.000") + "," + rX2.ToString("#0.000") + ")=" + rY.ToString("#0.000"); } else { label4.Text = "Resenje: f(" + rX.ToString("#0.000") + "," + rX2.ToString("#0.000") + ")=" + (-rY).ToString("#0.000"); } }