示例#1
0
文件: Program.cs 项目: zapu/Algenhax
        static void EstymPrint(int lp, Estym.ParametryGenetyczne p, double[] wyniki)
        {
            Console.Write(lp + ";" +
                          p.l_osobnikow + ";" + p.l_pokolen + ";" +
                          (p.skalowanie ? 1 : 0) + ";" + (p.elitaryzm ? 1 : 0) + ";" +
                          p.p_krzyzowania + ";" + p.p_mutacji + ";");

            foreach (int i in new int[] { 1, 6, 7, 8, 9 })
            {
                Console.Write(wyniki[i] + ";");
            }

            Console.Write(wyniki[0]);
            Console.WriteLine();
        }
示例#2
0
文件: Program.cs 项目: zapu/Algenhax
        static void EstymMain()
        {
            Estym estym = new Estym();
            estym.init();

            double optymalne = 0;
            double opt_wynik = Double.PositiveInfinity;

            Estym.ParametryGenetyczne p = new Estym.ParametryGenetyczne();

            int lp = 1;

            Console.WriteLine("lp;liczba osobników;liczba pokoleń;skalowanie;elitaryzm;p krzyżowania;p mutacji;a0;a5;a6;a7;a8;wynik");

            for (byte i = 0; i < 4; i++)
            {
                p.elitaryzm = (i & 0x01) == 1;
                p.skalowanie = ((i >> 1) & 0x01) == 1;
                p.l_osobnikow = 50;
                p.l_pokolen = 1000;
                p.p_mutacji = 0.05;
                p.p_krzyzowania = 0.2;

                optymalne = 0;
                opt_wynik = Double.PositiveInfinity;

                foreach (double d in enumerujDoubla2())
                {
                    p.p_mutacji = d;
                    estym.setParametryGenetyczne(p);
                    estym.wykonajObliczenia();
                    double[] wyniki = estym.sprawdz();
                    if (wyniki[0] < opt_wynik)
                    {
                        optymalne = d;
                        opt_wynik = wyniki[0];
                    }

                    EstymPrint(lp++, p, wyniki);
                    System.Threading.Thread.Sleep(50);
                }

                p.p_mutacji = optymalne;

                optymalne = 0;
                opt_wynik = Double.PositiveInfinity;

                foreach (double d in enumerujDoubla2())
                {
                    p.p_krzyzowania = d;
                    estym.setParametryGenetyczne(p);
                    estym.wykonajObliczenia();
                    double[] wyniki = estym.sprawdz();
                    if (wyniki[0] < opt_wynik)
                    {
                        optymalne = d;
                        opt_wynik = wyniki[0];
                    }

                    EstymPrint(lp++, p, wyniki);
                    System.Threading.Thread.Sleep(50);
                }

                p.p_krzyzowania = optymalne;

                foreach(int d in new int[]{5, 10, 20})
                {
                    p.l_osobnikow = d;
                    estym.setParametryGenetyczne(p);
                    estym.wykonajObliczenia();
                    double[] wyniki = estym.sprawdz();
                    EstymPrint(lp++, p, wyniki);
                    System.Threading.Thread.Sleep(50);
                }
            }
        }
示例#3
0
文件: Program.cs 项目: zapu/Algenhax
        static void EstymMain()
        {
            Estym estym = new Estym();

            estym.init();

            double optymalne = 0;
            double opt_wynik = Double.PositiveInfinity;

            Estym.ParametryGenetyczne p = new Estym.ParametryGenetyczne();

            int lp = 1;

            Console.WriteLine("lp;liczba osobników;liczba pokoleń;skalowanie;elitaryzm;p krzyżowania;p mutacji;a0;a5;a6;a7;a8;wynik");

            for (byte i = 0; i < 4; i++)
            {
                p.elitaryzm     = (i & 0x01) == 1;
                p.skalowanie    = ((i >> 1) & 0x01) == 1;
                p.l_osobnikow   = 50;
                p.l_pokolen     = 1000;
                p.p_mutacji     = 0.05;
                p.p_krzyzowania = 0.2;

                optymalne = 0;
                opt_wynik = Double.PositiveInfinity;

                foreach (double d in enumerujDoubla2())
                {
                    p.p_mutacji = d;
                    estym.setParametryGenetyczne(p);
                    estym.wykonajObliczenia();
                    double[] wyniki = estym.sprawdz();
                    if (wyniki[0] < opt_wynik)
                    {
                        optymalne = d;
                        opt_wynik = wyniki[0];
                    }

                    EstymPrint(lp++, p, wyniki);
                    System.Threading.Thread.Sleep(50);
                }

                p.p_mutacji = optymalne;

                optymalne = 0;
                opt_wynik = Double.PositiveInfinity;

                foreach (double d in enumerujDoubla2())
                {
                    p.p_krzyzowania = d;
                    estym.setParametryGenetyczne(p);
                    estym.wykonajObliczenia();
                    double[] wyniki = estym.sprawdz();
                    if (wyniki[0] < opt_wynik)
                    {
                        optymalne = d;
                        opt_wynik = wyniki[0];
                    }

                    EstymPrint(lp++, p, wyniki);
                    System.Threading.Thread.Sleep(50);
                }

                p.p_krzyzowania = optymalne;

                foreach (int d in new int[] { 5, 10, 20 })
                {
                    p.l_osobnikow = d;
                    estym.setParametryGenetyczne(p);
                    estym.wykonajObliczenia();
                    double[] wyniki = estym.sprawdz();
                    EstymPrint(lp++, p, wyniki);
                    System.Threading.Thread.Sleep(50);
                }
            }
        }