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