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); } } }
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(); }