private void tconrol_charts_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if ((tconrol_charts.SelectedItem as TabItem).Name == "tab_Path_Efficiency")
            {
                List <List <KeyValuePair <int, double> > > Vals = PathEfficiencyChart.BuildPathEfficiencyAndDelayChart();
                if (Vals.Count == 2)
                {
                    col_Path_Efficiency.DataContext = Vals[0];
                    col_Delay.DataContext           = Vals[1];
                }
                col_EnergyConsumptionForEachNode.DataContext = EnergyConsumptionForEachNode.BuildEnergyConsumptionForEachNodeChart(myNetWork);
            }
            else if ((tconrol_charts.SelectedItem as TabItem).Name == "tab_packets_chart")
            {
                List <List <KeyValuePair <int, double> > > Vals = PathEnergyChart.BuildChartPackets();
                if (Vals.Count == 2)
                {
                    col_packs_hops.DataContext = Vals[0];
                    //   col_packs_energy.DataContext= Vals[1];
                }
            }
            //

            else if ((tconrol_charts.SelectedItem as TabItem).Name == "tab_hops_distrubitions")
            {
                List <List <KeyValuePair <int, double> > > xxx = Distrubtions.FindDistubtions();

                List <KeyValuePair <int, double> > hops   = xxx[0];
                List <KeyValuePair <int, double> > energy = xxx[1];

                List <KeyValuePair <int, double> > delay = xxx[2];

                cols_hops_ditrubtions.DataContext    = hops;
                cols_energy_distribution.DataContext = energy;

                cols_delay_distribution.DataContext = delay;
            }
        }
Exemple #2
0
        /// <summary>
        /// change the Hij
        /// </summary>
        public List <Experment> DoExperment()
        {
            List <Experment> re     = new List <ui.Experment>();
            Sensor           source = _mianWinsow.myNetWork[Convert.ToInt16(comb_source_node.Text)];
            Sensor           sink   = _mianWinsow.myNetWork[Convert.ToInt16(comb_sink_node.Text)];

            int expermentsNumber = Convert.ToInt16(com_numberof_exp.Text);

            for (int i = 0; i < expermentsNumber; i++)
            {
                // random:
                if (check_random.IsChecked == true)
                {
                    double PowerHijSteps     = Convert.ToDouble(com_prependicular.Text) + (i * Convert.ToDouble(com_prependicular_steps.Text));
                    double PowerNijSteps     = Convert.ToDouble(com_transmision_distance.Text) + (i * Convert.ToDouble(com_transmision_distance_steps.Text));
                    double PowerRjSteps      = Convert.ToDouble(com_energy.Text) + (i * Convert.ToDouble(com_energy_steps.Text));
                    double PowerThetaijSteps = Convert.ToDouble(com_direction.Text) + (i * Convert.ToDouble(com_direction_steps.Text));

                    Settings.Default.KeepLogs             = false;// don't keep logs for nodes, to save momery.
                    Settings.Default.PrepDistanceDistCnt  = PowerHijSteps;
                    Settings.Default.TransDistanceDistCnt = PowerNijSteps;
                    Settings.Default.EnergyDistCnt        = PowerRjSteps;
                    Settings.Default.DirectionDistCnt     = PowerThetaijSteps;


                    // start: send data:
                    Sensor        sourceNode = _mianWinsow.myNetWork[Convert.ToInt16(comb_source_node.Text)];
                    List <double> Controls   = RandomControls.Generate4Controls();
                    sourceNode.GeneratePacketAndSent(Convert.ToInt16(comb_number_of_packets.Text));
                }
                else
                {
                    double PowerHijSteps     = Convert.ToDouble(com_prependicular.Text) + (i * Convert.ToDouble(com_prependicular_steps.Text));
                    double PowerNijSteps     = Convert.ToDouble(com_transmision_distance.Text) + (i * Convert.ToDouble(com_transmision_distance_steps.Text));
                    double PowerRjSteps      = Convert.ToDouble(com_energy.Text) + (i * Convert.ToDouble(com_energy_steps.Text));
                    double PowerThetaijSteps = Convert.ToDouble(com_direction.Text) + (i * Convert.ToDouble(com_direction_steps.Text));

                    Settings.Default.KeepLogs             = false;// don't keep logs for nodes, to save momery.
                    Settings.Default.PrepDistanceDistCnt  = PowerHijSteps;
                    Settings.Default.TransDistanceDistCnt = PowerNijSteps;
                    Settings.Default.EnergyDistCnt        = PowerRjSteps;
                    Settings.Default.DirectionDistCnt     = PowerThetaijSteps;


                    // start: send data:
                    Sensor sourceNode = _mianWinsow.myNetWork[Convert.ToInt16(comb_source_node.Text)];
                    sourceNode.GeneratePacketAndSent(Convert.ToInt16(comb_number_of_packets.Text));
                }


                // get the distrubtions:
                List <KeyValuePair <int, double> > dis = Distrubtions.FindDistrubtionsForHops();
                ExpermentResults result = Distrubtions.GetEnergyDelayForAnExperment();

                Experment xp = new Experment();
                xp.IsRandomControl      = (bool)check_random.IsChecked;
                xp.NumberofExperments   = Convert.ToDouble(com_numberof_exp.Text);
                xp.NumberofPackets      = Convert.ToDouble(comb_number_of_packets.Text);
                xp.PrepDistanceDistCnt  = Settings.Default.PrepDistanceDistCnt;
                xp.TransDistanceDistCnt = Settings.Default.TransDistanceDistCnt;
                xp.EnergyDistCnt        = Settings.Default.EnergyDistCnt;
                xp.DirectionDistCnt     = Settings.Default.DirectionDistCnt;
                xp.SinkID   = Convert.ToInt16(comb_sink_node.Text);
                xp.SourceID = Convert.ToInt16(comb_source_node.Text);
                xp.HopsDistributions.AddRange(dis);
                xp.ExpId = i + 1;

                // delay and hops
                xp.EnergyConsumed  = new KeyValuePair <int, double>(xp.ExpId, (result.EnergyConsumtion / xp.NumberofPackets));
                xp.Delay           = new KeyValuePair <int, double>(xp.ExpId, (result.Delay / xp.NumberofPackets));
                xp.Hops            = new KeyValuePair <int, double>(xp.ExpId, result.Hops / xp.NumberofPackets);
                xp.RoutingDistance = new KeyValuePair <int, double>(xp.ExpId, result.RoutingDistance / xp.NumberofPackets);

                //: energy effecien
                xp.AverageTransDistrancePerHop = new KeyValuePair <int, double>(xp.ExpId, result.AverageTransDistrancePerHop / xp.NumberofPackets);
                xp.TransDistanceEfficiency     = new KeyValuePair <int, double>(xp.ExpId, result.TransDistanceEfficiency / xp.NumberofPackets);
                xp.RoutingEfficiency           = new KeyValuePair <int, double>(xp.ExpId, result.RoutingEfficiency / xp.NumberofPackets);
                xp.RoutingDistanceEffiecncy    = new KeyValuePair <int, double>(xp.ExpId, result.RoutingDistanceEfficiency / xp.NumberofPackets);

                // blancing: averags. don't divide by pkg number.
                xp.PathsSpread  = new KeyValuePair <int, double>(xp.ExpId, result.PathsSpread);
                xp.HopsPerRelay = new KeyValuePair <int, double>(xp.ExpId, result.HopsPerRelay);
                xp.RelaysCount  = new KeyValuePair <int, double>(xp.ExpId, result.RelaysCount);

                re.Add(xp);

                // clear.
                sink.PacketsList.Clear();
                source.NumberofPacketsGeneratedByMe = 0;

                // rechange sensors: reintialized the batteries of the nodes.
                ReChargeTheNodes();
            }

            return(re);
        }