public static void generateTestCzworki(Map.Data.MapData map)
        {
            int powtorzenia = 100;

            map.randomFill(10);

            long[] elapsedMs1 = new long[powtorzenia];

            for (int i = 0; i < powtorzenia; i++)
            {
                System.GC.Collect();
                ServiceAAuth.tab = null;

                if (ServiceAAuth.tab == null)
                {
                    var watch1 = System.Diagnostics.Stopwatch.StartNew();
                    ServiceAAuth.makeTab(map, false);
                    watch1.Stop();
                    elapsedMs1[i] = watch1.ElapsedMilliseconds;
                }
            }
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\generateTestCzworki.txt", true))
            {
                file.WriteLine("Generowanie czworki");
                foreach (var el in elapsedMs1)
                {
                    file.WriteLine(el);
                }
            }
        }
Esempio n. 2
0
        internal static void MacierzSasiedztwa(Map.Data.MapData map, bool debug)
        {
            System.GC.Collect();
            var watch = System.Diagnostics.Stopwatch.StartNew();

            if (macierzSasiedztwa == null)
            {
                macierzSasiedztwa = new int[NewTabLength][];
                for (int i = 0; i < NewTabLength; i++)
                {
                    macierzSasiedztwa[i] = new int[NewTabLength];
                    for (int j = 0; j < NewTabLength; j++)
                    {
                        macierzSasiedztwa[i][j] = INF;
                    }
                }
            }
            for (int i = start; i < end; i++)
            {
                for (int j = start; j < end; j++)
                {
                    int i_  = i - offset + num / 2;
                    int j_  = j - offset + num / 2;
                    int me  = posInTable(i_, j_);
                    int top = posInTable(i_ + 1, j_);
                    int bot = posInTable(i_ - 1, j_);
                    int r   = posInTable(i_, j_ + 1);
                    int l   = posInTable(i_, j_ - 1);
                    //Debug.Log("W Nowej " + "i " + i_ + " j" + j_ + " me" + me);
                    //Debug.Log("W GLOWNEJ " + "i " + i + " j" + j);

                    if (map.Table[i][j] != null && (map.Table[i][j].objectType == ObjectType.Rock || map.Table[i][j].objectType == ObjectType.Building))
                    {
                    }
                    else
                    {
                        //Debug.Log("me " + me + "i " + i_ + " j" + j_);
                        //top
                        if (i_ + 1 < num && i_ + 1 >= 0 && top >= 0)
                        {
                            if (map.Table[i + 1][j] != null && (map.Table[i + 1][j].objectType == ObjectType.Rock || map.Table[i + 1][j].objectType == ObjectType.Building))
                            {
                                //tab[me][top] = 0;
                            }
                            else
                            {
                                //Debug.Log("top polaczenie " + me + ' ' + top);
                                macierzSasiedztwa[me][top] = 1;
                            }
                        }
                        //bot
                        if (i_ - 1 >= 0 && bot >= 0)
                        {
                            if (map.Table[i - 1][j] != null && (map.Table[i - 1][j].objectType == ObjectType.Rock || map.Table[i - 1][j].objectType == ObjectType.Building))
                            {
                                //tab[me][bot] = 0;
                            }
                            else
                            {
                                //Debug.Log("bot polaczenie " + me + ' ' + top);
                                macierzSasiedztwa[me][bot] = 1;
                            }
                        }
                        //r
                        if (j_ + 1 < num && j_ + 1 > 0 && r >= 0)
                        {
                            if (map.Table[i][j + 1] != null && (map.Table[i][j + 1].objectType == ObjectType.Rock || map.Table[i][j + 1].objectType == ObjectType.Building))
                            {
                                //tab[me][r] = 0;
                            }
                            else
                            {
                                //Debug.Log("r polaczenie " + me + ' ' + r);
                                macierzSasiedztwa[me][r] = 1;
                            }
                        }
                        //l
                        if (j_ - 1 >= 0 && l >= 0)
                        {
                            if (map.Table[i][j - 1] != null && (map.Table[i][j - 1].objectType == ObjectType.Rock || map.Table[i][j - 1].objectType == ObjectType.Building))
                            {
                                //tab[me][l] = 0;
                            }
                            else
                            {
                                //Debug.Log("l polaczenie " + me + ' ' + l);
                                macierzSasiedztwa[me][l] = 1;
                            }
                        }
                    }
                }
            }
            if (debug)
            {
                watch.Stop();
                var elapsedMs = watch.ElapsedMilliseconds;
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\logs-times.txt", true))
                {
                    //Debug.Log("Tworzenie macierzy sasiedztwa czas[ms]: " + elapsedMs);
                    file.WriteLine("Tworzenie macierzy sasiedztwa czas[ms]: " + elapsedMs);
                }

                //Debug.Log("savetofile");
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\wygenerowana-macierz-sasiedztwa.txt"))
                {
                    for (int i = 0; i < NewTabLength; i++)
                    {
                        for (int j = 0; j < NewTabLength; j++)
                        {
                            file.Write(macierzSasiedztwa[i][j] + " ");
                        }
                        file.WriteLine("");
                    }
                }
            }
        }
Esempio n. 3
0
        internal static void ListaIncydencji(Map.Data.MapData map, bool debug)
        {
            var watch = System.Diagnostics.Stopwatch.StartNew();

            if (listaIncydencji == null)
            {
                listaIncydencji = new IList <int> [NewTabLength];
                for (int i = 0; i < NewTabLength; i++)
                {
                    listaIncydencji[i] = new List <int>();
                }
            }
            for (int i = start; i < end; i++)
            {
                for (int j = start; j < end; j++)
                {
                    int i_  = i - offset + num / 2;
                    int j_  = j - offset + num / 2;
                    int me  = posInTable(i_, j_);
                    int top = posInTable(i_ + 1, j_);
                    int bot = posInTable(i_ - 1, j_);
                    int r   = posInTable(i_, j_ + 1);
                    int l   = posInTable(i_, j_ - 1);
                    //Debug.Log("W Nowej " + "i " + i_ + " j" + j_ + " me" + me);
                    //Debug.Log("W GLOWNEJ " + "i " + i + " j" + j);

                    if (map.Table[i][j] != null && (map.Table[i][j].objectType == ObjectType.Rock || map.Table[i][j].objectType == ObjectType.Building))
                    {
                    }
                    else
                    {
                        //Debug.Log("me " + me + "i " + i_ + " j" + j_);
                        //top
                        if (i_ + 1 < num && i_ + 1 >= 0 && top >= 0)
                        {
                            if (map.Table[i + 1][j] != null && (map.Table[i + 1][j].objectType == ObjectType.Rock || map.Table[i + 1][j].objectType == ObjectType.Building))
                            {
                            }
                            else
                            {
                                //Debug.Log("top polaczenie " + me + ' ' + top);
                                listaIncydencji[me].Add(top);
                            }
                        }
                        //bot
                        if (i_ - 1 >= 0 && bot >= 0)
                        {
                            if (map.Table[i - 1][j] != null && (map.Table[i - 1][j].objectType == ObjectType.Rock || map.Table[i - 1][j].objectType == ObjectType.Building))
                            {
                            }
                            else
                            {
                                //Debug.Log("bot polaczenie " + me + ' ' + top);
                                listaIncydencji[me].Add(bot);
                            }
                        }
                        //r
                        if (j_ + 1 < num && j_ + 1 > 0 && r >= 0)
                        {
                            if (map.Table[i][j + 1] != null && (map.Table[i][j + 1].objectType == ObjectType.Rock || map.Table[i][j + 1].objectType == ObjectType.Building))
                            {
                            }
                            else
                            {
                                //Debug.Log("r polaczenie " + me + ' ' + r);
                                listaIncydencji[me].Add(r);
                            }
                        }
                        //l
                        if (j_ - 1 >= 0 && l >= 0)
                        {
                            if (map.Table[i][j - 1] != null && (map.Table[i][j - 1].objectType == ObjectType.Rock || map.Table[i][j - 1].objectType == ObjectType.Building))
                            {
                                //tab[me][l] = 0;
                            }
                            else
                            {
                                //Debug.Log("l polaczenie " + me + ' ' + l);
                                listaIncydencji[me].Add(l);
                            }
                        }
                    }
                }
            }

            if (debug)
            {
                watch.Stop();
                var elapsedMs = watch.ElapsedMilliseconds;
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\logs-times.txt", true))
                {
                    //Debug.Log("Tworzenie listy incydencji czas[ms]: " + elapsedMs);
                    file.WriteLine("Tworzenie listy incydencji czas[ms]: " + elapsedMs);
                }

                //Debug.Log("savetofile");
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\wygenerowana-lista-incydencji.txt"))
                {
                    for (int i = 0; i < NewTabLength; i++)
                    {
                        file.Write("w: " + i + " laczy sie z: ");
                        foreach (var elem in listaIncydencji[i])
                        {
                            file.Write(elem + ", ");
                        }
                        file.WriteLine("");
                    }
                }
            }
        }
Esempio n. 4
0
        internal static void ListaSasiedztwa(Map.Data.MapData map, bool debug)
        {
            var watch = System.Diagnostics.Stopwatch.StartNew();

            if (listaSasiedztwa == null)
            {
                listaSasiedztwa = new List <Edge>();
            }
            for (int i = start; i < end; i++)
            {
                for (int j = start; j < end; j++)
                {
                    int i_  = i - offset + num / 2;
                    int j_  = j - offset + num / 2;
                    int me  = posInTable(i_, j_);
                    int bot = posInTable(i_ - 1, j_);
                    int r   = posInTable(i_, j_ + 1);

                    if (map.Table[i][j] != null && (map.Table[i][j].objectType == ObjectType.Rock || map.Table[i][j].objectType == ObjectType.Building))
                    {
                    }
                    else
                    {
                        //bot
                        if (i_ - 1 >= 0 && bot >= 0)
                        {
                            if (map.Table[i - 1][j] != null && (map.Table[i - 1][j].objectType == ObjectType.Rock || map.Table[i - 1][j].objectType == ObjectType.Building))
                            {
                                //tab[me][bot] = 0;
                            }
                            else
                            {
                                //Debug.Log("bot polaczenie " + me + ' ' + top);
                                //tab[me][bot] = 1;
                                listaSasiedztwa.Add(new Edge(me, bot, 1));
                            }
                        }
                        //r
                        if (j_ + 1 < num && j_ + 1 > 0 && r >= 0)
                        {
                            if (map.Table[i][j + 1] != null && (map.Table[i][j + 1].objectType == ObjectType.Rock || map.Table[i][j + 1].objectType == ObjectType.Building))
                            {
                                //tab[me][r] = 0;
                            }
                            else
                            {
                                //Debug.Log("r polaczenie " + me + ' ' + r);
                                //tab[me][r] = 1;
                                listaSasiedztwa.Add(new Edge(me, r, 1));
                            }
                        }
                    }
                }
            }
            if (debug)
            {
                watch.Stop();
                var elapsedMs = watch.ElapsedMilliseconds;
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\logs-times.txt", true))
                {
                    //Debug.Log("Tworzenie listy sasiedzctwa czas[ms]: " + elapsedMs);
                    file.WriteLine("Tworzenie listy sasiedzctwa czas[ms]: " + elapsedMs);
                }

                //Debug.Log("savetofile");
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\wygenerowana-lista-sasiedztwa.txt"))
                {
                    foreach (Edge elem in listaSasiedztwa)
                    {
                        file.WriteLine(elem.toString());
                    }
                }
            }
        }
        public static void FindWayDistTestCzworki(Map.Data.MapData map)
        {
            int powtorzenia = 10;

            map.randomFill(10);

            for (int j = 1; j < 300; j = j + 50)
            {
                Vector2 from = new Vector2(0, 0);
                Vector2 to   = new Vector2(j, j);
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWayDistTestCzworki.txt", true))
                {
                    file.WriteLine("PKTY (0, 0) (" + j + ", " + j + ")  odleglosc: " + ServiceA.cost(from, to));
                }

                ServiceAAuth.tab = null;

                if (ServiceAAuth.tab == null)
                {
                    ServiceAAuth.makeTab(map, false);
                }

                long[] elapsedMs1 = new long[powtorzenia];
                long[] elapsedMs5 = new long[powtorzenia];

                System.GC.Collect();


                for (int i = 0; i < powtorzenia; i++)
                {
                    map.Table[(int)from.x + 800][(int)from.y + 800] = null;
                    map.Table[(int)to.x + 800][(int)to.y + 800]     = null;
                    var watch1 = System.Diagnostics.Stopwatch.StartNew();
                    ServiceAAuth.FindWay(from, to, map, false);

                    watch1.Stop();
                    elapsedMs1[i] = watch1.ElapsedMilliseconds;

                    var watch5 = System.Diagnostics.Stopwatch.StartNew();
                    ServiceA.FindWay(from, to, map, false);
                    watch5.Stop();
                    elapsedMs5[i] = watch5.ElapsedMilliseconds;
                }
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWayDistTestCzworki.txt", true))
                {
                    file.WriteLine("A* Auth ");
                    long sum = 0;
                    foreach (var el in elapsedMs1)
                    {
                        sum = sum + el;
                    }
                    file.WriteLine(sum / powtorzenia);
                    sum = 0;
                    file.WriteLine("A*");
                    foreach (var el in elapsedMs5)
                    {
                        sum = sum + el;
                    }
                    file.WriteLine(sum / powtorzenia);
                }
            }
        }
        public static void FindWayDistTest(Map.Data.MapData map)
        {
            int powtorzenia = 100;

            map.randomFill(10);

            for (int j = 1; j < 300; j = j + 50)
            {
                Vector2 from = new Vector2(0, 0);
                Vector2 to   = new Vector2(j, j);
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWayDistTest.txt", true))
                {
                    file.WriteLine("PKTY (0, 0) (" + j + ", " + j + ")  odleglosc: " + ServiceA.cost(from, to));
                }

                ServiceData.start        = 800 - 300 / 2;
                ServiceData.end          = 800 + 300 / 2;
                ServiceData.num          = (ServiceData.end - ServiceData.start);
                ServiceData.NewTabLength = ServiceData.num * ServiceData.num;
                Debug.Log("0");
                long[] elapsedMs1 = new long[powtorzenia];
                long[] elapsedMs2 = new long[powtorzenia];
                long[] elapsedMs3 = new long[powtorzenia];
                long[] elapsedMs4 = new long[powtorzenia];
                long[] elapsedMs5 = new long[powtorzenia];

                System.GC.Collect();
                ServiceData.listaSasiedztwa   = null;
                ServiceData.macierzSasiedztwa = null;
                ServiceData.listaIncydencji   = null;

                ServiceData.ListaIncydencji(map, false);
                //ServiceData.MacierzSasiedztwa(map, false);

                for (int i = 0; i < powtorzenia; i++)
                {
                    Debug.Log("1 " + ((int)from.x + 800) + " " + ((int)from.y + 800));
                    map.Table[(int)from.x + 800][(int)from.y + 800] = null;
                    Debug.Log("1 " + ((int)to.x + 800) + " " + ((int)to.y + 800));
                    map.Table[(int)to.x + 800][(int)to.y + 800] = null;
                    var watch1 = System.Diagnostics.Stopwatch.StartNew();
                    ServiceDjikstra.FindWay(from, to, map, true);
                    watch1.Stop();
                    elapsedMs1[i] = watch1.ElapsedMilliseconds;

                    var watch5 = System.Diagnostics.Stopwatch.StartNew();
                    ServiceA.FindWay(from, to, map);
                    watch5.Stop();
                    elapsedMs5[i] = watch5.ElapsedMilliseconds;
                    Debug.Log("3");
                }
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWayDistTest.txt", true))
                {
                    file.WriteLine("Djikstra lista ");
                    long sum = 0;
                    foreach (var el in elapsedMs1)
                    {
                        sum = sum + el;
                    }
                    file.WriteLine(sum / powtorzenia);
                    sum = 0;
                    file.WriteLine("A*");
                    foreach (var el in elapsedMs5)
                    {
                        sum = sum + el;
                    }
                    file.WriteLine(sum / powtorzenia);
                }
            }
        }
        public static void FindWaySizeTest(Map.Data.MapData map)
        {
            int powtorzenia = 100;

            map.randomFill(10);

            for (int j = 10; j < 200; j = j + 10)
            {
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWaySizeTest.txt", true))
                {
                    file.WriteLine("Rozmiar " + j);
                }
                ServiceData.start        = 800 - j / 2;
                ServiceData.end          = 800 + j / 2;
                ServiceData.num          = (ServiceData.end - ServiceData.start);
                ServiceData.NewTabLength = ServiceData.num * ServiceData.num;

                long[] elapsedMs1 = new long[powtorzenia];
                long[] elapsedMs2 = new long[powtorzenia];
                long[] elapsedMs3 = new long[powtorzenia];
                long[] elapsedMs4 = new long[powtorzenia];
                long[] elapsedMs5 = new long[powtorzenia];
                long[] elapsedMs6 = new long[powtorzenia];

                System.GC.Collect();
                ServiceData.listaSasiedztwa   = null;
                ServiceData.macierzSasiedztwa = null;
                ServiceData.listaIncydencji   = null;

                ServiceData.ListaSasiedztwa(map, false);
                ServiceData.MacierzSasiedztwa(map, false);
                ServiceData.ListaIncydencji(map, false);

                for (int i = 0; i < powtorzenia; i++)
                {
                    Vector2 from = new Vector2(2, 2);
                    Vector2 to   = new Vector2(50, 50);

                    map.Table[(int)from.x][(int)from.y] = null;
                    map.Table[(int)to.x][(int)to.y]     = null;

                    var watch1 = System.Diagnostics.Stopwatch.StartNew();
                    ServiceDjikstra.FindWay(from, to, map, true);
                    watch1.Stop();
                    elapsedMs1[i] = watch1.ElapsedMilliseconds;

                    var watch2 = System.Diagnostics.Stopwatch.StartNew();
                    ServiceDjikstra.FindWay(from, to, map, false);
                    watch2.Stop();
                    elapsedMs2[i] = watch2.ElapsedMilliseconds;

                    var watch3 = System.Diagnostics.Stopwatch.StartNew();
                    //ServiceFord.FindWay(from, to, map, true);
                    watch3.Stop();
                    elapsedMs3[i] = watch3.ElapsedMilliseconds;

                    var watch4 = System.Diagnostics.Stopwatch.StartNew();
                    //ServiceFord.FindWay(from, to, map, false);
                    watch4.Stop();
                    elapsedMs4[i] = watch4.ElapsedMilliseconds;

                    var watch5 = System.Diagnostics.Stopwatch.StartNew();
                    ServiceA.FindWay(from, to, map);
                    watch5.Stop();
                    elapsedMs5[i] = watch5.ElapsedMilliseconds;


                    var watch6 = System.Diagnostics.Stopwatch.StartNew();
                    ServiceA.FindWay(from, to, map);
                    watch6.Stop();
                    elapsedMs6[i] = watch6.ElapsedMilliseconds;
                }
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\FindWaySizeTest.txt", true))
                {
                    file.WriteLine("Djikstra lista ");
                    foreach (var el in elapsedMs1)
                    {
                        file.WriteLine(el);
                    }
                    file.WriteLine("Djikstra macierz ");
                    foreach (var el in elapsedMs2)
                    {
                        file.WriteLine(el);
                    }
                    file.WriteLine("Ford Lista");
                    foreach (var el in elapsedMs3)
                    {
                        file.WriteLine(el);
                    }
                    file.WriteLine("Ford macierz");
                    foreach (var el in elapsedMs4)
                    {
                        file.WriteLine(el);
                    }
                    file.WriteLine("A*");
                    foreach (var el in elapsedMs5)
                    {
                        file.WriteLine(el);
                    }
                    file.WriteLine("A* Modified");
                    foreach (var el in elapsedMs6)
                    {
                        file.WriteLine(el);
                    }
                }
            }
        }
        public static void generateTest(Map.Data.MapData map)
        {
            int powtorzenia = 100;

            map.randomFill(10);

            for (int j = 10; j < 1000; j = j + 10)
            {
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\generateTest.txt", true))
                {
                    file.WriteLine("Rozmiar " + j);
                }
                ServiceData.start        = 800 - j / 2;
                ServiceData.end          = 800 + j / 2;
                ServiceData.num          = (ServiceData.end - ServiceData.start);
                ServiceData.NewTabLength = ServiceData.num * ServiceData.num;

                long[] elapsedMs1 = new long[powtorzenia];
                long[] elapsedMs2 = new long[powtorzenia];
                long[] elapsedMs3 = new long[powtorzenia];

                for (int i = 0; i < powtorzenia; i++)
                {
                    System.GC.Collect();
                    ServiceData.listaSasiedztwa   = null;
                    ServiceData.macierzSasiedztwa = null;
                    ServiceData.listaIncydencji   = null;


                    if (ServiceData.listaSasiedztwa == null)
                    {
                        var watch1 = System.Diagnostics.Stopwatch.StartNew();
                        ServiceData.ListaSasiedztwa(map, false);
                        watch1.Stop();
                        elapsedMs1[i] = watch1.ElapsedMilliseconds;
                    }
                    if (ServiceData.macierzSasiedztwa == null)
                    {
                        var watch2 = System.Diagnostics.Stopwatch.StartNew();
                        ServiceData.MacierzSasiedztwa(map, false);
                        watch2.Stop();
                        elapsedMs2[i] = watch2.ElapsedMilliseconds;
                    }
                    if (ServiceData.listaIncydencji == null)
                    {
                        var watch3 = System.Diagnostics.Stopwatch.StartNew();
                        ServiceData.ListaIncydencji(map, false);
                        watch3.Stop();
                        elapsedMs3[i] = watch3.ElapsedMilliseconds;
                    }
                }
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"pomiar\pomiary\generateTest.txt", true))
                {
                    file.WriteLine("ListaSasiedztwa");
                    foreach (var el in elapsedMs1)
                    {
                        file.WriteLine(el);
                    }
                    file.WriteLine("macierzSasiedztwa");
                    foreach (var el in elapsedMs2)
                    {
                        file.WriteLine(el);
                    }
                    file.WriteLine("listaIncydencji");
                    foreach (var el in elapsedMs3)
                    {
                        file.WriteLine(el);
                    }
                }
            }
        }