int[] GeneticAlgorythm()
    {
        string fName = "C:\\Users\\user\\Documents\\GitHub\\SI-Inteligentna_Smieciarka\\Śmieciarka\\dataWasteland.cjc";

        IFormatter formatter = new BinaryFormatter();

        int[] alpha = board1;

        Plansze generation = new Plansze();

        if (File.Exists(fName))
        {
            Plansze a = Plansze.DeserializeItem(fName, formatter);
            generation.plansza1 = a.plansza1;
            generation.plansza2 = a.plansza2;
            generation.plansza3 = a.plansza3;
            generation.plansza4 = a.plansza4;
        }
        else
        {
            //Plansze z 4 śmietniskami
            generation.plansza1 = Generate(Generate(board1));
            generation.plansza2 = Generate(Generate(board2));
            //Plansze z 2 śmietniskami
            generation.plansza3 = Generate(board3);
            generation.plansza4 = Generate(board4);
        }

        //Ocenianie osobników
        int mark1 = WaterDistance(generation.plansza1) + EntranceProximity(generation.plansza1) + CityDistance(generation.plansza1) + WasteDistance(generation.plansza1);
        int mark2 = WaterDistance(generation.plansza2) + EntranceProximity(generation.plansza2) + CityDistance(generation.plansza2) + WasteDistance(generation.plansza2);
        int mark3 = WaterDistance(generation.plansza3) + EntranceProximity(generation.plansza3) + CityDistance(generation.plansza3) + WasteDistance(generation.plansza3);
        int mark4 = WaterDistance(generation.plansza4) + EntranceProximity(generation.plansza4) + CityDistance(generation.plansza4) + WasteDistance(generation.plansza4);

        int[] marks = { mark1, mark2, mark3, mark4 };

        string info = "Początek:\n" + WaterDistance(generation.plansza1) + " " + EntranceProximity(generation.plansza1) + " " + CityDistance(generation.plansza1) + " " + WasteDistance(generation.plansza1) + "\n"
                      + " " + WaterDistance(generation.plansza2) + " " + EntranceProximity(generation.plansza2) + " " + CityDistance(generation.plansza2) + " " + WasteDistance(generation.plansza2) + "\n"
                      + " " + WaterDistance(generation.plansza3) + " " + EntranceProximity(generation.plansza3) + " " + CityDistance(generation.plansza3) + " " + WasteDistance(generation.plansza3) + "\n"
                      + " " + WaterDistance(generation.plansza4) + " " + EntranceProximity(generation.plansza4) + " " + CityDistance(generation.plansza4) + " " + WasteDistance(generation.plansza4) + "\n";

        //542 teraz

        return(alpha);
    }
    int[] AlgorythmGenetic()
    {
        // This is the name of the file holding the data. You can use any file extension you like.
        string fileName = "C:\\Users\\user\\Documents\\GitHub\\SI-Inteligentna_Smieciarka\\Śmieciarka\\dataOsobniki.cjc";

        // Use a BinaryFormatter or SoapFormatter.
        IFormatter formatter = new BinaryFormatter();

        int[] osobnik = plansza1;
        //generacja genów
        Plansze osobniki = new Plansze();

        if (File.Exists(fileName))
        {
            Plansze a = Plansze.DeserializeItem(fileName, formatter); // Deserialize the instance.
            osobniki.plansza1 = a.plansza1;
            osobniki.plansza2 = a.plansza2;
            osobniki.plansza3 = a.plansza3;
            osobniki.plansza4 = a.plansza4;
        }
        else
        {
            //generacja genów
            osobniki.plansza1 = Generuj(Generuj(Generuj(plansza1)));

            osobniki.plansza2 = Generuj(Generuj(Generuj(plansza2)));

            osobniki.plansza3 = Generuj(Generuj(Generuj(Generuj(plansza3))));

            osobniki.plansza4 = Generuj(Generuj(plansza4));
        }

        //ocena genów
        int    ocena1    = Filtr1(osobniki.plansza1) + Filtr2(osobniki.plansza1, 1) + Filtr2(osobniki.plansza1, 2) + Filtr2(osobniki.plansza1, 3) + Filtr4(osobniki.plansza1);
        int    ocena2    = Filtr1(osobniki.plansza2) + Filtr2(osobniki.plansza2, 1) + Filtr2(osobniki.plansza2, 2) + Filtr2(osobniki.plansza2, 3) + Filtr4(osobniki.plansza2);
        int    ocena3    = Filtr1(osobniki.plansza3) + Filtr2(osobniki.plansza3, 1) + Filtr2(osobniki.plansza3, 2) + Filtr2(osobniki.plansza3, 3) + Filtr4(osobniki.plansza3);
        int    ocena4    = Filtr1(osobniki.plansza4) + Filtr2(osobniki.plansza4, 1) + Filtr2(osobniki.plansza4, 2) + Filtr2(osobniki.plansza4, 3) + Filtr4(osobniki.plansza4);
        string wiadomosc = "start:\n" + Filtr1(osobniki.plansza1) + " " + Filtr2(osobniki.plansza1, 1) + " " + Filtr2(osobniki.plansza1, 2) + " " + Filtr2(osobniki.plansza1, 3) + " " + Filtr3(osobniki.plansza1) + " " + Filtr4(osobniki.plansza1) + " " + Filtr5(osobniki.plansza1) + "\n" +
                           Filtr1(osobniki.plansza2) + " " + Filtr2(osobniki.plansza2, 1) + " " + Filtr2(osobniki.plansza2, 2) + " " + Filtr2(osobniki.plansza2, 3) + " " + Filtr3(osobniki.plansza2) + " " + Filtr4(osobniki.plansza2) + " " + Filtr5(osobniki.plansza2) + "\n" +
                           Filtr1(osobniki.plansza3) + " " + Filtr2(osobniki.plansza3, 1) + " " + Filtr2(osobniki.plansza3, 2) + " " + Filtr2(osobniki.plansza3, 3) + " " + Filtr3(osobniki.plansza3) + " " + Filtr4(osobniki.plansza3) + " " + Filtr5(osobniki.plansza3) + "\n" +
                           Filtr1(osobniki.plansza4) + " " + Filtr2(osobniki.plansza4, 1) + " " + Filtr2(osobniki.plansza4, 2) + " " + Filtr2(osobniki.plansza4, 3) + " " + Filtr3(osobniki.plansza4) + " " + Filtr4(osobniki.plansza4) + " " + Filtr5(osobniki.plansza4) + "\n";

        int[] tabela_ocen = { ocena1, ocena2, ocena3, ocena4 };

        for (int i = 0; i < 4; i++)
        {
            if (tabela_ocen[i] < 1)
            {
                tabela_ocen[i] = 1;
            }
        }

        int ilosc_skrzyzowan = 0;
        int suma_ocen;

        int[] szansa = new int[3];
        wiadomosc = wiadomosc + "Tabela ocen: " + tabela_ocen[0] + " " + tabela_ocen[1] + " " + tabela_ocen[2] + " " + tabela_ocen[3] + "\n";

        while (ilosc_skrzyzowan < 20)
        {
            suma_ocen = tabela_ocen[0] + tabela_ocen[1] + tabela_ocen[2] + tabela_ocen[3];
            wiadomosc = wiadomosc + "Suma ocen: " + suma_ocen + "\n";
            for (int i = 0; i < 3; i++)
            {
                if (suma_ocen != 0)
                {
                    szansa[i] = (tabela_ocen[i] * 100) / suma_ocen;
                }
                else
                {
                    szansa[i] = 0;
                }
            }

            int wybrany_osobnik11 = Random.Range(1, 101);
            wiadomosc = wiadomosc + "Wylosowany numer: " + wybrany_osobnik11 + "\nszanse wylosowania: " + szansa[0] + " " + szansa[1] + " " + szansa[2] + "\nWylosowane osobniki: ";
            if (wybrany_osobnik11 <= szansa[0])
            {
                int wybrany_osobnik12 = Random.Range(szansa[0] + 1, 101);
                if (wybrany_osobnik12 <= szansa[0] + szansa[1])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza3 = Mutacja(osobniki.plansza1);
                    }
                    else
                    {
                        osobniki.plansza3 = osobniki.plansza1;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza4 = Mutacja(osobniki.plansza2);
                    }
                    else
                    {
                        osobniki.plansza4 = osobniki.plansza2;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza1, osobniki.plansza2);
                    osobniki.plansza1 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza2 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "12\n";
                }
                if (wybrany_osobnik12 > szansa[0] + szansa[1] && wybrany_osobnik12 <= szansa[0] + szansa[1] + szansa[2])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza2 = Mutacja(osobniki.plansza1);
                    }
                    else
                    {
                        osobniki.plansza2 = osobniki.plansza1;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza4 = Mutacja(osobniki.plansza3);
                    }
                    else
                    {
                        osobniki.plansza4 = osobniki.plansza3;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza1, osobniki.plansza3);
                    osobniki.plansza1 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza3 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "13\n";
                }
                if (wybrany_osobnik12 > szansa[0] + szansa[1] + szansa[2])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza2 = Mutacja(osobniki.plansza1);
                    }
                    else
                    {
                        osobniki.plansza2 = osobniki.plansza1;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza3 = Mutacja(osobniki.plansza4);
                    }
                    else
                    {
                        osobniki.plansza3 = osobniki.plansza4;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza1, osobniki.plansza4);
                    osobniki.plansza1 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza4 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "14\n";
                }
            }

            if (wybrany_osobnik11 > szansa[0] && wybrany_osobnik11 <= szansa[0] + szansa[1])
            {
                int wybrany_osobnik13 = Random.Range(1, 101);
                while (wybrany_osobnik13 > szansa[0] && wybrany_osobnik13 <= szansa[0] + szansa[1])
                {
                    wybrany_osobnik13 = Random.Range(1, 101);
                }

                if (wybrany_osobnik13 <= szansa[0])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza3 = Mutacja(osobniki.plansza2);
                    }
                    else
                    {
                        osobniki.plansza3 = osobniki.plansza2;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza4 = Mutacja(osobniki.plansza1);
                    }
                    else
                    {
                        osobniki.plansza4 = osobniki.plansza1;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza2, osobniki.plansza1);
                    osobniki.plansza1 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza2 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "21\n";
                }
                if (wybrany_osobnik13 > szansa[0] + szansa[1] && wybrany_osobnik13 <= szansa[0] + szansa[1] + szansa[2])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza1 = Mutacja(osobniki.plansza2);
                    }
                    else
                    {
                        osobniki.plansza1 = osobniki.plansza2;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza4 = Mutacja(osobniki.plansza3);
                    }
                    else
                    {
                        osobniki.plansza4 = osobniki.plansza3;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza2, osobniki.plansza3);
                    osobniki.plansza3 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza2 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "23\n";
                }
                if (wybrany_osobnik13 > szansa[0] + szansa[1] + szansa[2])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza1 = Mutacja(osobniki.plansza2);
                    }
                    else
                    {
                        osobniki.plansza1 = osobniki.plansza2;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza3 = Mutacja(osobniki.plansza4);
                    }
                    else
                    {
                        osobniki.plansza3 = osobniki.plansza4;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza2, osobniki.plansza4);
                    osobniki.plansza4 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza2 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "24\n";
                }
            }

            if (wybrany_osobnik11 > szansa[0] + szansa[1] && wybrany_osobnik11 <= szansa[0] + szansa[1] + szansa[2])
            {
                int wybrany_osobnik14 = Random.Range(1, 101);
                while (wybrany_osobnik14 > szansa[0] + szansa[1] && wybrany_osobnik14 <= szansa[0] + szansa[1] + szansa[2])
                {
                    wybrany_osobnik14 = Random.Range(1, 101);
                }

                if (wybrany_osobnik14 <= szansa[0])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza2 = Mutacja(osobniki.plansza3);
                    }
                    else
                    {
                        osobniki.plansza2 = osobniki.plansza3;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza4 = Mutacja(osobniki.plansza1);
                    }
                    else
                    {
                        osobniki.plansza4 = osobniki.plansza1;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza3, osobniki.plansza1);
                    osobniki.plansza1 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza3 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "31\n";
                }
                if (wybrany_osobnik14 > szansa[0] && wybrany_osobnik14 <= szansa[0] + szansa[1])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza1 = Mutacja(osobniki.plansza3);
                    }
                    else
                    {
                        osobniki.plansza1 = osobniki.plansza3;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza4 = Mutacja(osobniki.plansza2);
                    }
                    else
                    {
                        osobniki.plansza4 = osobniki.plansza2;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza3, osobniki.plansza2);
                    osobniki.plansza2 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza3 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "32\n";
                }
                if (wybrany_osobnik14 > szansa[0] + szansa[1] + szansa[2])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza1 = Mutacja(osobniki.plansza3);
                    }
                    else
                    {
                        osobniki.plansza1 = osobniki.plansza3;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza2 = Mutacja(osobniki.plansza4);
                    }
                    else
                    {
                        osobniki.plansza2 = osobniki.plansza4;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza3, osobniki.plansza4);
                    osobniki.plansza4 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza3 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "34\n";
                }
            }

            if (wybrany_osobnik11 > szansa[0] + szansa[1] + szansa[2])
            {
                int wybrany_osobnik15 = Random.Range(1, szansa[0] + szansa[1] + szansa[2] + 1);

                if (wybrany_osobnik15 <= szansa[0])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza2 = Mutacja(osobniki.plansza4);
                    }
                    else
                    {
                        osobniki.plansza2 = osobniki.plansza4;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza3 = Mutacja(osobniki.plansza1);
                    }
                    else
                    {
                        osobniki.plansza3 = osobniki.plansza1;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza4, osobniki.plansza1);
                    osobniki.plansza1 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza4 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "41\n";
                }
                if (wybrany_osobnik15 > szansa[0] && wybrany_osobnik15 <= szansa[0] + szansa[1])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza1 = Mutacja(osobniki.plansza4);
                    }
                    else
                    {
                        osobniki.plansza1 = osobniki.plansza4;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza3 = Mutacja(osobniki.plansza2);
                    }
                    else
                    {
                        osobniki.plansza3 = osobniki.plansza2;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza4, osobniki.plansza2);
                    osobniki.plansza2 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza4 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "42\n";
                }
                if (wybrany_osobnik15 > szansa[0] + szansa[1] && wybrany_osobnik15 <= szansa[0] + szansa[1] + szansa[2])
                {
                    int mutacja1 = Random.Range(1, 21);
                    int mutacja2 = Random.Range(1, 21);
                    if (mutacja1 == 20)
                    {
                        osobniki.plansza1 = Mutacja(osobniki.plansza4);
                    }
                    else
                    {
                        osobniki.plansza1 = osobniki.plansza4;
                    }
                    if (mutacja2 == 20)
                    {
                        osobniki.plansza2 = Mutacja(osobniki.plansza3);
                    }
                    else
                    {
                        osobniki.plansza2 = osobniki.plansza3;
                    }
                    Plansze wynik_skrzyrzowania = Skrzyzowanie(osobniki.plansza4, osobniki.plansza3);
                    osobniki.plansza3 = wynik_skrzyrzowania.plansza1;
                    osobniki.plansza4 = wynik_skrzyrzowania.plansza2;
                    wiadomosc         = wiadomosc + "43\n";
                }
            }

            tabela_ocen[0] = Filtr1(osobniki.plansza1) + Filtr2(osobniki.plansza1, 1) + Filtr2(osobniki.plansza1, 2) + Filtr2(osobniki.plansza1, 3) + Filtr4(osobniki.plansza1);
            tabela_ocen[1] = Filtr1(osobniki.plansza2) + Filtr2(osobniki.plansza2, 1) + Filtr2(osobniki.plansza2, 2) + Filtr2(osobniki.plansza2, 3) + Filtr4(osobniki.plansza2);
            tabela_ocen[2] = Filtr1(osobniki.plansza3) + Filtr2(osobniki.plansza3, 1) + Filtr2(osobniki.plansza3, 2) + Filtr2(osobniki.plansza3, 3) + Filtr4(osobniki.plansza3);
            tabela_ocen[3] = Filtr1(osobniki.plansza4) + Filtr2(osobniki.plansza4, 1) + Filtr2(osobniki.plansza4, 2) + Filtr2(osobniki.plansza4, 3) + Filtr4(osobniki.plansza4);

            for (int i = 0; i < 4; i++)
            {
                if (tabela_ocen[i] < 1)
                {
                    tabela_ocen[i] = 1;
                }
            }
            ilosc_skrzyzowan++;
        }

        wiadomosc = wiadomosc + "\n" + Filtr1(osobniki.plansza1) + " " + Filtr2(osobniki.plansza1, 1) + " " + Filtr2(osobniki.plansza1, 2) + " " + Filtr2(osobniki.plansza1, 3) + " " + Filtr3(osobniki.plansza1) + " " + Filtr4(osobniki.plansza1) + " " + Filtr5(osobniki.plansza1) + "\n" +
                    Filtr1(osobniki.plansza2) + " " + Filtr2(osobniki.plansza2, 1) + " " + Filtr2(osobniki.plansza2, 2) + " " + Filtr2(osobniki.plansza2, 3) + " " + Filtr3(osobniki.plansza2) + " " + Filtr4(osobniki.plansza2) + " " + Filtr5(osobniki.plansza2) + "\n" +
                    Filtr1(osobniki.plansza3) + " " + Filtr2(osobniki.plansza3, 1) + " " + Filtr2(osobniki.plansza3, 2) + " " + Filtr2(osobniki.plansza3, 3) + " " + Filtr3(osobniki.plansza3) + " " + Filtr4(osobniki.plansza3) + " " + Filtr5(osobniki.plansza3) + "\n" +
                    Filtr1(osobniki.plansza4) + " " + Filtr2(osobniki.plansza4, 1) + " " + Filtr2(osobniki.plansza4, 2) + " " + Filtr2(osobniki.plansza4, 3) + " " + Filtr3(osobniki.plansza4) + " " + Filtr4(osobniki.plansza4) + " " + Filtr5(osobniki.plansza4) + "\n";

        Plansze.SerializeItem(fileName, formatter, osobniki); // Serialize an instance of the class.

        int max   = ocena1;
        int numer = 0;

        for (int i = 1; i < 4; i++)
        {
            if (max < tabela_ocen[i])
            {
                max   = tabela_ocen[i];
                numer = i;
            }
        }


        if (numer == 0)
        {
            osobnik = osobniki.plansza1;
        }

        if (numer == 1)
        {
            osobnik = osobniki.plansza2;
        }

        if (numer == 2)
        {
            osobnik = osobniki.plansza3;
        }

        if (numer == 3)
        {
            osobnik = osobniki.plansza4;
        }
        wiadomosc = wiadomosc + "Wybrany osobnik: " + numer;
        string[] wiadomoscie = { wiadomosc };
        System.IO.File.WriteAllLines("C:\\Users\\user\\Documents\\GitHub\\SI-Inteligentna_Smieciarka\\Śmieciarka\\wiadomosc.txt", wiadomoscie);
        return(osobnik);
    }