//odseparowanie z chromosoma X i Y (potrzebne do obliczenia wyników w funkcji) public WartosciXY wartosci(string[] legenda, int licz) { int[] wartosciX = new int[licz]; int[] wartosciY = new int[licz]; string zmPom = ""; int k; for (int i = 0; i < licz; i++) { string zmPom2 = ""; string zmPom3 = ""; try { zmPom = legenda[i]; int j = zmPom.Length; k = j / 2; } catch (Exception) { break; } for (int l = 0; l < zmPom.Length; l++) { if (l < k) { zmPom2 += zmPom[l]; } else { zmPom3 += zmPom[l]; } } wartosciX[i] = Convert.ToInt32(zmPom2, 2); wartosciY[i] = Convert.ToInt32(zmPom3, 2); } WartosciXY wartosc = new WartosciXY(); wartosc.wartosciX = wartosciX; wartosc.wartosciY = wartosciY; return(wartosc); }
//************************************************************************************* //akcje po wybraniu wartości z listy private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //deklaracja i ustawianie parametów int wybraneID = comboBox1.SelectedIndex; SeriesCollection series = new SeriesCollection(); int licznika = 0; string zmPomA = ""; label24.Visible = true; pieChart1.Visible = true; labelNajWOsobnik.Visible = true; //dodanie danych do koła wykresowego. for (int i = 0; i < koloRuletkowe.Count; i++) { if (wybraneID == i) { for (int j = 0; j < koloRuletkowe[i].wycinki.Length; j++) { series.Add(new PieSeries() { Title = koloRuletkowe[i].chromosomy[j], Values = new ChartValues <double> { koloRuletkowe[i].wycinki[j] }, DataLabels = true, LabelPoint = labelPoint }); pieChart1.Series = series; } for (int id = 0; id < populacjaDoOdczytu[i].chromosom.Length; id++) { zmPomA = populacjaDoOdczytu[i].chromosom[id].ToString(); for (int k = 0; k < zmPomA.Length; k++) { if (zmPomA[k] == '1') { licznika++; } } licznika = 0; zmPomA = ""; } } } //Znajdowanie najlepszego osobnika w populacji double najlepszaWartosc = 0; string najlepszyosobnik = ""; for (int idPop = 0; idPop < populacjaDoOdczytu.Count; idPop++) { if (wybraneID == idPop) { for (int idElementu = 0; idElementu < populacjaDoOdczytu[idPop].chromosom.Length; idElementu++) { if (najlepszaWartosc < populacjaDoOdczytu[idPop].wartosc[idElementu]) { najlepszaWartosc = populacjaDoOdczytu[idPop].wartosc[idElementu]; najlepszyosobnik = populacjaDoOdczytu[idPop].chromosom[idElementu]; } } } } labelNajWOsobnik.Text = $"Najlepszy osobnik to: {najlepszyosobnik} \nO wartość: {najlepszaWartosc}"; najlepszyOsobnik = najlepszyosobnik; //wproawadzenie wartosci do wykresu val1.Clear(); labelLegendCh.Text = ""; string pomocniczaLegenda = ""; int licznik = 1; for (int i = 0; i < populacjaDoOdczytu.Count; i++) { if (i == wybraneID) { for (int j = 0; j < populacjaDoOdczytu[i].chromosom.Length; j++) { // val1.Add(populacjaDoOdczytu[i].wartosc[j]); pomocniczaLegenda += $"{populacjaDoOdczytu[i].chromosom[j]} "; labelLegendCh.Text += $"Id {j} chromosom: {populacjaDoOdczytu[i].chromosom[j]} \n"; licznik++; } } } //to do końca ma budować tworzyć wykres string[] rozdzieloneWartosciPopulacji = new string[licznik]; rozdzieloneWartosciPopulacji = legenda(pomocniczaLegenda, licznik); WartosciXY wartosciXY = wartosci(rozdzieloneWartosciPopulacji, licznik); double[] wyniki = new double[liczbChrom]; string[] pola; decimal[] potegi; pola = new[] { textBoxX1.Text, textBoxY1.Text, textBoxX2.Text, textBoxY2.Text, textBoxX3.Text, textBoxY3.Text, textBoxX4.Text, textBoxY4.Text, textBoxC1.Text }; potegi = new[] { numericUpDown1.Value, numericUpDown2.Value, numericUpDown3.Value, numericUpDown4.Value, numericUpDown5.Value, numericUpDown6.Value, numericUpDown7.Value, numericUpDown8.Value }; for (int idCH = 0; idCH < liczbChrom; idCH++) { wyniki[idCH] = Funkcja.obliczFunkcje(wartosciXY.wartosciX[idCH], wartosciXY.wartosciY[idCH], pola, potegi); } for (int i = 0; i < wyniki.Length; i++) { val1.Add(wyniki[i]); } cartesianChart1.Series = series2; //dotąd }