Пример #1
0
        private void FrmMain_Load(object sender, EventArgs args)
        {
            gPane1 = zgGraph1.GraphPane;
            gPane2 = zgGraph2.GraphPane;
            gPane3 = zgGraph3.GraphPane;
            InitGraphPane(gPane1, "Log(n)^2  (n = Network Size)", "Total Bits Sent");
            InitGraphPane(gPane2, "Log(n)  (n = Network Size)", "Total Search Time (ms)");
            InitGraphPane(gPane3, "Log(n)  (n = Network Size)", "Avg. Space Per Node (bits)");

            //InitGraphPane(gPane1, "Network Size", "Total Bits Sent");
            //InitGraphPane(gPane2, "Network Size", "Total Search Time (ms)");
            //InitGraphPane(gPane3, "Network Size", "Avg. Space Per Node (bits)");

            curveMessages = gPane1.AddCurve("Total Bits Sent vs. Size of Network", null, Color.Blue, SymbolType.None);
            curveTime     = gPane2.AddCurve("Total Search Time vs. Size of Network", null, Color.Red, SymbolType.None);
            curveMemory   = gPane3.AddCurve("Total Memory vs. Size of Network", null, Color.Green, SymbolType.None);

            curveMessages.Line.Width       = 1.6F;
            curveMessages.Line.IsAntiAlias = true;
            curveTime.Line.Width           = 1.6F;
            curveTime.Line.IsAntiAlias     = true;
            curveMemory.Line.Width         = 1.6F;
            curveMemory.Line.IsAntiAlias   = true;

            for (int i = 6; i < 11; i++)
            {
                var bn = new ButterflyNetwork <Image>();                    // 842667722

                n = (int)Math.Pow(2, i);
                int    B = 3, C = 3, D = 3, T = 3;
                double a = 0.1, b = 6.5;

                //int n = (int)Math.Pow(2, i);
                //double e = 0.05;
                //double d = 0.9;
                //double a = 0.25;
                //double ap = 0.095;
                //double b = 1.001;
                //double g = 0.2;
                //int B = (int)Math.Round(1 / g * Math.Log(Math.E/e, Math.E));
                //int C = (int)Math.Round(10 / 3 * (2 * Math.Log(2 * Math.E, Math.E)) / (d * (1 - g) * Math.Pow(1 - (2 * a), 2)));
                //int D = (int)Math.Round(b / (ap * (a - ap)) * (ap * Math.Log(b * Math.E / ap, Math.E) + (a - ap) * Math.Log(b * Math.E / (a - ap), Math.E) + 2/C));
                //int T = (int)Math.Round(1 / (1 - d) * Math.Log(Math.E / e, Math.E));

                bn.InitializationFinished += new ButterflyNetwork <Image> .InitializationHandler(bn_InitializationFinished);

                bn.SearchStarted += new ButterflyNetwork <Image> .SearchFinishedHandler(bn_SearchStarted);

                bn.SearchFinished += new ButterflyNetwork <Image> .SearchFinishedHandler(bn_SearchFinished);

                bn.InitializeNetwork(n, B, C, D, T, a, b);

                var images    = new List <ImageDataItem>();
                var filePaths = Directory.GetFiles(@"c:\images256");
                foreach (var filePath in filePaths.Take(2))
                {
                    images.Add(new ImageDataItem(filePath));
                }
                bn.StoreDataItems(images);

                var query = new ImageDataItem()
                {
                    Title = Path.GetFileNameWithoutExtension(filePaths[0])
                };

                bn.Search(query, 8);
                bn.Run();

                curveMessages.AddPoint(n, bn.SentSize * 8 / n);
                zgGraph1.RestoreScale(gPane1);
            }
        }
Пример #2
0
        private void FrmMain_Load(object sender, EventArgs args)
        {
            gPane1 = zgGraph1.GraphPane;
            gPane2 = zgGraph2.GraphPane;
            gPane3 = zgGraph3.GraphPane;
            InitGraphPane(gPane1, "Log(n)^2  (n = Network Size)", "Total Bits Sent");
            InitGraphPane(gPane2, "Log(n)  (n = Network Size)", "Total Search Time (ms)");
            InitGraphPane(gPane3, "Log(n)  (n = Network Size)", "Avg. Space Per Node (bits)");

            //InitGraphPane(gPane1, "Network Size", "Total Bits Sent");
            //InitGraphPane(gPane2, "Network Size", "Total Search Time (ms)");
            //InitGraphPane(gPane3, "Network Size", "Avg. Space Per Node (bits)");

            curveMessages = gPane1.AddCurve("Total Bits Sent vs. Size of Network", null, Color.Blue, SymbolType.None);
            curveTime = gPane2.AddCurve("Total Search Time vs. Size of Network", null, Color.Red, SymbolType.None);
            curveMemory = gPane3.AddCurve("Total Memory vs. Size of Network", null, Color.Green, SymbolType.None);

            curveMessages.Line.Width = 1.6F;
            curveMessages.Line.IsAntiAlias = true;
            curveTime.Line.Width = 1.6F;
            curveTime.Line.IsAntiAlias = true;
            curveMemory.Line.Width = 1.6F;
            curveMemory.Line.IsAntiAlias = true;

            for (int i = 6; i < 11; i++)
            {
                var bn = new ButterflyNetwork<Image>();	    // 842667722

                n = (int)Math.Pow(2, i);
                int B = 3, C = 3, D = 3, T = 3;
                double a = 0.1, b = 6.5;

                //int n = (int)Math.Pow(2, i);
                //double e = 0.05;
                //double d = 0.9;
                //double a = 0.25;
                //double ap = 0.095;
                //double b = 1.001;
                //double g = 0.2;
                //int B = (int)Math.Round(1 / g * Math.Log(Math.E/e, Math.E));
                //int C = (int)Math.Round(10 / 3 * (2 * Math.Log(2 * Math.E, Math.E)) / (d * (1 - g) * Math.Pow(1 - (2 * a), 2)));
                //int D = (int)Math.Round(b / (ap * (a - ap)) * (ap * Math.Log(b * Math.E / ap, Math.E) + (a - ap) * Math.Log(b * Math.E / (a - ap), Math.E) + 2/C));
                //int T = (int)Math.Round(1 / (1 - d) * Math.Log(Math.E / e, Math.E));

                bn.InitializationFinished += new ButterflyNetwork<Image>.InitializationHandler(bn_InitializationFinished);
                bn.SearchStarted += new ButterflyNetwork<Image>.SearchFinishedHandler(bn_SearchStarted);
                bn.SearchFinished += new ButterflyNetwork<Image>.SearchFinishedHandler(bn_SearchFinished);

                bn.InitializeNetwork(n, B, C, D, T, a, b);

                var images = new List<ImageDataItem>();
                var filePaths = Directory.GetFiles(@"c:\images256");
                foreach (var filePath in filePaths.Take(2))
                {
                    images.Add(new ImageDataItem(filePath));
                }
                bn.StoreDataItems(images);

                var query = new ImageDataItem()
                {
                    Title = Path.GetFileNameWithoutExtension(filePaths[0])
                };

                bn.Search(query, 8);
                bn.Run();

                curveMessages.AddPoint(n, bn.SentSize * 8 / n);
                zgGraph1.RestoreScale(gPane1);
            }
        }