Esempio n. 1
0
        // целочисленная кодировка
        private void Test_Individ()
        {
            /*int LeGen = Convert.ToInt32(LengthGene.Text);
             * float Mut = float.Parse(Mutation.Text);
             * float Inv = float.Parse(Inversion.Text);
             * int point = (int)Math.Floor(LeGen * float.Parse(VerPoint.Text));
             * int point2 = 0; // (int)Math.Floor(LeGen * (1 - float.Parse(VerPoint.Text)));
             * //Следить что бы р1 был меньше р2
             */

            Individ test_Ind1 = new Individ(Aa);
            Individ test_Ind2 = new Individ(Aa);

            MtextBox.Text = MtextBox.Text + "Особь 1" + Environment.NewLine + test_Ind1.Prin_Ind(Aa) + Environment.NewLine;
            MtextBox.Text = MtextBox.Text + "-------------" + Environment.NewLine;
            MtextBox.Text = MtextBox.Text + "Особь 2" + Environment.NewLine + test_Ind2.Prin_Ind(Aa) + Environment.NewLine;
            MtextBox.Text = MtextBox.Text + "-------------" + Environment.NewLine;

            MtextBox.Text = MtextBox.Text + "Особь 1" + Environment.NewLine + test_Ind1.Prin_Fen(Aa) + Environment.NewLine;
            MtextBox.Text = MtextBox.Text + "Особь 2" + Environment.NewLine + test_Ind2.Prin_Fen(Aa) + Environment.NewLine;
            MtextBox.Text = MtextBox.Text + "-------------" + Environment.NewLine;

            //проверка на поинт2 и его наличие если 0 то 1 точечное
            Individ[] C   = Individ.PointCrossOver(Aa, test_Ind1, test_Ind2);
            string    ind = "";

            for (int i = 0; i < C.Length; i++)
            {
                ind = ind + "Потомок " + (i + 1) + Environment.NewLine + C[i].Prin_Ind(Aa) + Environment.NewLine;
                ind = ind + "Потомок " + (i + 1) + Environment.NewLine + C[i].Prin_Fen(Aa) + Environment.NewLine;
            }
            MtextBox.Text = MtextBox.Text + ind + Environment.NewLine;
        }
Esempio n. 2
0
        public void Select(Parametrs a)
        {
            Individ[] Ind_popul = new Individ[a.Popultion];
            Individ   f, g;

            Individ[] C = { new Individ(a), new Individ(a) };
            //  Individ[] q = new Individ[a.Tutu];

            for (int i = 0; i < (int)Math.Floor(a.Popultion / 2.0); i++)
            {
                f = Turnir2(Rand_Turnir(a));
                g = Turnir2(Rand_Turnir(a));


                C = Individ.PointCrossOver(a, f, g);

                C[0].MutateAll(a);
                C[1].MutateAll(a);

                Ind_popul[2 * i]              = C[0];
                Ind_popul[2 * i + 1]          = C[1];
                Ind_popul[2 * i].Fank_out     = Fank_(Ind_popul[2 * i], a);
                Ind_popul[2 * i + 1].Fank_out = Fank_(Ind_popul[2 * i + 1], a);
            }

            Popul_all = Ind_popul;
            // Mut_all(Mut, Inv, 3);
        }