Brunet.Graph.Relay.CalculateTwoHopDelays C# (CSharp) Метод

CalculateTwoHopDelays() публичный Метод

public CalculateTwoHopDelays ( ) : void
Результат void
    public void CalculateTwoHopDelays()
    {
      int network_size = _addrs.Count;
      int total = (network_size - 1) * (network_size - 1);
      List<int> delays = new List<int>(total);
      List<int> direct_delays = new List<int>(total);
      List<int> overlay_delays = new List<int>(total);
      int ugh = 0;

      foreach(GraphNode src in _addr_to_node.Values) {
        foreach(GraphNode dst in _addr_to_node.Values) {
          if(src == dst) {
            continue;
          }

          if(src.ConnectionTable.IndexOf(ConnectionType.Structured, dst.Address) >= 0) {
            continue;
          }

          int direct_delay = CalculateDelay(src, dst);
          if(direct_delay == 0 || direct_delay > 500) {
            continue;
          }

          int delay = System.Math.Min(LowestDelay(src, dst), LowestDelay(dst, src));
          if(delay < direct_delay) {
            ugh++;
            continue;
          }
          delays.Add(delay);

          var result = SendPacket(src.Address, dst.Address);
          if(result.Count == 0) {
            throw new Exception("SendPacket failed!");
          }
          overlay_delays.Add(result[0].Delay);
          direct_delays.Add(direct_delay);
        }
      }

      Console.WriteLine(ugh + " " + direct_delays.Count);
      Console.WriteLine("TwoHops results:");
      double average = Average(direct_delays);
      Console.WriteLine("\tDirect Delay: Average: {0}, Stdev: {1}", average,
          StandardDeviation(direct_delays, average));
      average = Average(delays);
      Console.WriteLine("\tTwoHops Delay: Average: {0}, Stdev: {1}", average,
          StandardDeviation(delays, average));
      average = Average(overlay_delays);
      Console.WriteLine("\tOverlay Delay: Average: {0}, Stdev: {1}", average,
          StandardDeviation(overlay_delays, average));
    }

Usage Example

Пример #1
0
        public static void Main(string[] args)
        {
            Parameters p = new Parameters("Relay", "Relay - Brunet Network Modeler for Relay.");

            p.Parse(args);

            if (p.Help)
            {
                p.ShowHelp();
                return;
            }
            if (p.ErrorMessage != string.Empty)
            {
                Console.WriteLine(p.ErrorMessage);
                p.ShowHelp();
                return;
            }

            Console.WriteLine("Creating a graph with base size: {0}, near " +
                              "connections: {1}, shortcuts {2}", p.Size, p.Near, p.Shortcuts);

            Relay graph = new Relay(p.Size, p.Near, p.Shortcuts, p.Seed, p.LatencyMap);

            Console.WriteLine("Done populating graph...");
            graph.CalculateTwoHopDelays();

            if (p.Outfile != string.Empty)
            {
                Console.WriteLine("Saving dot file to: " + p.Outfile);
                graph.WriteGraphFile(p.Outfile);
            }
        }
All Usage Examples Of Brunet.Graph.Relay::CalculateTwoHopDelays