Пример #1
0
        /// <summary>
        /// total energy and delay for an expement: for a path.
        /// this is true only for one source node. don't send the data from many sources.
        /// </summary>
        /// <returns></returns>
        public static ExpermentResults GetEnergyDelayForAnExperment()
        {
            ExpermentResults re = new ExpermentResults();

            SegmaManager  sgManager = new SegmaManager();
            List <string> Paths     = new List <string>();
            Sensor        sink      = PublicParamerters.SinkNode;

            if (sink != null)
            {
                foreach (Datapacket pck in sink.PacketsList)
                {
                    re.Delay                       += pck.Delay;
                    re.EnergyConsumtion            += pck.UsedEnergy_Joule;
                    re.Hops                        += pck.Hops;
                    re.RoutingDistance             += pck.RoutingDistance;
                    re.AverageTransDistrancePerHop += pck.AverageTransDistrancePerHop;
                    re.RoutingDistanceEfficiency   += pck.RoutingDistanceEfficiency;
                    re.RoutingEfficiency           += pck.RoutingEfficiency;
                    re.TransDistanceEfficiency     += pck.TransDistanceEfficiency;
                    Paths.Add(pck.Path);
                }

                sgManager.Filter(Paths);
                SegmaCollection collectionx = sgManager.GetCollection;
                SegmaSource     sigmasourc  = collectionx.GetSourcesList[0];
                sigmasourc.NumberofPacketsGeneratedByMe = sink.PacketsList.Count;

                // add:
                re.RelaysCount     = sigmasourc.RelaysCount;
                re.NumberOfPackets = sink.PacketsList.Count;
                re.HopsPerRelay    = sigmasourc.Mean;
                re.PathsSpread     = sigmasourc.PathsSpread;
            }

            return(re);
        }
        private void btn_other_Menu(object sender, RoutedEventArgs e)
        {
            MenuItem item   = sender as MenuItem;
            string   Header = item.Header.ToString();

            switch (Header)
            {
            //
            case "_Show Dead Node":
            {
                if (myNetWork.Count > 0)
                {
                    if (PublicParamerters.DeadNodeList.Count > 0)
                    {
                        UiNetworkLifetimeReport xx = new UiNetworkLifetimeReport();
                        xx.Title = "LoadBalanceProject Lifetime report";
                        xx.dg_grid.ItemsSource = PublicParamerters.DeadNodeList;
                        xx.Show();
                    }
                    else
                    {
                        MessageBox.Show("No Dead node.");
                    }
                }
                else
                {
                    MessageBox.Show("No Network is selected.");
                }
            }
            break;

            case "_Show Resultes":
            {
                if (myNetWork.Count > 0)
                {
                    ExpReport xx = new ExpReport(this);
                    xx.Show();
                }
            }
            break;

            case "_Draw Tree":

                break;

            case "_Print Info":
                UIshowSensorsLocations uIlocations = new UIshowSensorsLocations(myNetWork);
                uIlocations.Show();
                break;

            case "_Entir Network Routing Log":
                UiRoutingDetailsLong routingLogs = new ui.UiRoutingDetailsLong(myNetWork);
                routingLogs.Show();
                break;

            case "_Log For Each Sensor":

                break;

            //_Relatives:
            case "_Node Forwarding Probability Distributions":
            {
                UiShowLists windsow = new UiShowLists();
                windsow.Title = "Forwarding Probability Distributions For Each Node";
                foreach (Sensor source in myNetWork)
                {
                    if (source.MyForwardersShortedList.Count > 0)
                    {
                        ListControl List = new conts.ListControl();
                        List.lbl_title.Content   = "Node:" + source.ID;
                        List.dg_date.ItemsSource = source.MyForwardersShortedList;
                        windsow.stack_items.Children.Add(List);
                    }
                }
                windsow.Show();
                break;
            }

            //
            case "_Expermental Results":
                UIExpermentResults xxxiu = new UIExpermentResults();
                xxxiu.Show();
                break;

            case "_Probability Matrix":
            {
                UiShowLists windsow = new UiShowLists();
                windsow.Title = "Matrix";
                AdjecentMatrix   mat    = new AdjecentMatrix();
                List <DataTable> Tables = mat.ConvertToTable(myNetWork);
                foreach (DataTable table in Tables)
                {
                    ListControl List = new conts.ListControl();
                    List.lbl_title.Content   = table.TableName;
                    List.dg_date.ItemsSource = table.DefaultView;
                    windsow.stack_items.Children.Add(List);
                }
                windsow.Show();
            }
            break;

            //
            case "_Packets Paths":
                UiRecievedPackertsBySink packsInsinkList = new UiRecievedPackertsBySink();
                packsInsinkList.Show();

                break;

            //
            case "_Random Numbers":

                List <KeyValuePair <int, double> > rands = new List <KeyValuePair <int, double> >();
                int index = 0;
                foreach (Sensor sen in myNetWork)
                {
                    foreach (SensorRoutingLog log in sen.Logs)
                    {
                        if (log.IsSend)
                        {
                            index++;
                            rands.Add(new KeyValuePair <int, double>(index, log.ForwardingRandomNumber));
                        }
                    }
                }

                UiRandomNumberGeneration wndsow = new ui.UiRandomNumberGeneration();
                wndsow.chart_x.DataContext = rands;
                wndsow.Show();

                break;

            case "_Nodes Load":
            {
                SegmaManager  sgManager = new SegmaManager();
                Sensor        sink      = PublicParamerters.SinkNode;
                List <string> Paths     = new List <string>();
                if (sink != null)
                {
                    foreach (Datapacket pck in sink.PacketsList)
                    {
                        Paths.Add(pck.Path);
                    }
                }

                sgManager.Filter(Paths);
                UiShowLists windsow = new UiShowLists();
                windsow.Title = "Nodes Load";
                SegmaCollection collectionx = sgManager.GetCollection;
                foreach (SegmaSource source in collectionx.GetSourcesList)
                {
                    source.NumberofPacketsGeneratedByMe = myNetWork[source.SourceID].NumberofPacketsGeneratedByMe;
                    ListControl List = new conts.ListControl();
                    List.lbl_title.Content   = "Source:" + source.SourceID + " Pks:" + source.NumberofPacketsGeneratedByMe + " Relays:" + source.RelaysCount + " Hops:" + source.HopsSum + " Mean:" + source.Mean + " Variance:" + source.Veriance + " E:" + source.PathsSpread;
                    List.dg_date.ItemsSource = source.GetRelayNodes;
                    windsow.stack_items.Children.Add(List);
                }
                windsow.Show();
                break;
            }

            //_Distintc Paths
            case "_Distintc Paths":
            {
                UiShowLists windsow = new UiShowLists();
                windsow.Title = "Distinct Paths for each Source";
                DisPathConter dip = new DisPathConter();
                List <ClassfyPathsPerSource> classfy = dip.ClassyfyDistinctPathsPerSources();
                foreach (ClassfyPathsPerSource source in classfy)
                {
                    ListControl List = new conts.ListControl();
                    List.lbl_title.Content   = "Source:" + source.SourceID;
                    List.dg_date.ItemsSource = source.DistinctPathsForThisSource;
                    windsow.stack_items.Children.Add(List);
                }
                windsow.Show();
                break;
            }
            }
        }