Пример #1
0
 static void ProjStruPrint(int lp, ProjStru.ParametryZadania p, double wynik)
 {
     Console.Write(lp + ";" +
                   p.l_osobnikow + ";" + p.l_pokolen + ";" +
                   (p.skalowanie ? 1 : 0) + ";" + (p.elitaryzm ? 1 : 0) + ";" +
                   p.p_krzyzowania + ";" + p.p_mutacji + ";" +
                   wynik);
     Console.WriteLine();
 }
Пример #2
0
        static void ProjStruMain()
        {
            ProjStru proj = new ProjStru();
            proj.init();

            Console.WriteLine("L.p.;Liczba osobników;Liczba pokoleń;Skalowanie;Elitaryzm;P krzyżowania; P mutacji;Najniższy koszt osobnika");

            int lp = 0;

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

            ProjStru.ParametryZadania p = new ProjStru.ParametryZadania();
            for (byte i = 0; i < 4; i++)
            {
                p.elitaryzm = (i & 0x01) == 1;
                p.skalowanie = ((i >> 1) & 0x01) == 1;
                p.l_osobnikow = 100;
                p.l_pokolen = 100;
                p.p_mutacji = 0.2;

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

                foreach (double d in enumerujDoubla())
                {
                    p.p_krzyzowania = d;
                    proj.setParametry(p);
                    proj.run();
                    double result = proj.readResult();
                    if (result < opt_wynik)
                    {
                        opt_wynik = result;
                        optymalne = d;
                    }
                    ProjStruPrint(lp++, p, result);
                    System.Threading.Thread.Sleep(50);
                }

                p.p_krzyzowania = optymalne;
                opt_wynik = Double.PositiveInfinity;

                foreach (double d in enumerujDoubla())
                {
                    p.p_mutacji = d / 2;
                    proj.setParametry(p);
                    proj.run();
                    double result = proj.readResult();
                    if (result < opt_wynik)
                    {
                        opt_wynik = result;
                        optymalne = d / 2;
                    }
                    ProjStruPrint(lp++, p, result);
                    System.Threading.Thread.Sleep(50);
                }

                p.p_mutacji = optymalne;
                opt_wynik = Double.PositiveInfinity;

                foreach (int d in new int[] { 25, 50, 100, 150, 200 })
                {
                    p.l_osobnikow = d;
                    proj.setParametry(p);
                    proj.run();
                    double result = proj.readResult();
                    if (result < opt_wynik)
                    {
                        opt_wynik = result;
                        optymalny_int = d;
                    }
                    ProjStruPrint(lp++, p, result);
                    System.Threading.Thread.Sleep(50);
                }

                p.l_osobnikow = optymalny_int;
                opt_wynik = Double.PositiveInfinity;

                foreach (int d in new int[] { 50, 100, 150, 200, 250 })
                {
                    p.l_pokolen = d;
                    proj.setParametry(p);
                    proj.run();
                    double result = proj.readResult();
                    if (result < opt_wynik)
                    {
                        opt_wynik = result;
                        optymalny_int = d;
                    }
                    ProjStruPrint(lp++, p, result);
                    System.Threading.Thread.Sleep(50);
                }
            }
        }
Пример #3
0
        static void ProjStruMain()
        {
            ProjStru proj = new ProjStru();

            proj.init();

            Console.WriteLine("L.p.;Liczba osobników;Liczba pokoleń;Skalowanie;Elitaryzm;P krzyżowania; P mutacji;Najniższy koszt osobnika");

            int lp = 0;

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

            ProjStru.ParametryZadania p = new ProjStru.ParametryZadania();
            for (byte i = 0; i < 4; i++)
            {
                p.elitaryzm   = (i & 0x01) == 1;
                p.skalowanie  = ((i >> 1) & 0x01) == 1;
                p.l_osobnikow = 100;
                p.l_pokolen   = 100;
                p.p_mutacji   = 0.2;

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

                foreach (double d in enumerujDoubla())
                {
                    p.p_krzyzowania = d;
                    proj.setParametry(p);
                    proj.run();
                    double result = proj.readResult();
                    if (result < opt_wynik)
                    {
                        opt_wynik = result;
                        optymalne = d;
                    }
                    ProjStruPrint(lp++, p, result);
                    System.Threading.Thread.Sleep(50);
                }

                p.p_krzyzowania = optymalne;
                opt_wynik       = Double.PositiveInfinity;

                foreach (double d in enumerujDoubla())
                {
                    p.p_mutacji = d / 2;
                    proj.setParametry(p);
                    proj.run();
                    double result = proj.readResult();
                    if (result < opt_wynik)
                    {
                        opt_wynik = result;
                        optymalne = d / 2;
                    }
                    ProjStruPrint(lp++, p, result);
                    System.Threading.Thread.Sleep(50);
                }

                p.p_mutacji = optymalne;
                opt_wynik   = Double.PositiveInfinity;

                foreach (int d in new int[] { 25, 50, 100, 150, 200 })
                {
                    p.l_osobnikow = d;
                    proj.setParametry(p);
                    proj.run();
                    double result = proj.readResult();
                    if (result < opt_wynik)
                    {
                        opt_wynik     = result;
                        optymalny_int = d;
                    }
                    ProjStruPrint(lp++, p, result);
                    System.Threading.Thread.Sleep(50);
                }

                p.l_osobnikow = optymalny_int;
                opt_wynik     = Double.PositiveInfinity;

                foreach (int d in new int[] { 50, 100, 150, 200, 250 })
                {
                    p.l_pokolen = d;
                    proj.setParametry(p);
                    proj.run();
                    double result = proj.readResult();
                    if (result < opt_wynik)
                    {
                        opt_wynik     = result;
                        optymalny_int = d;
                    }
                    ProjStruPrint(lp++, p, result);
                    System.Threading.Thread.Sleep(50);
                }
            }
        }