private void initialize(NetworkTopology networkTopology) { if (networkTopology.Nodes.Count == 0) { throw new Exception("Initilaize() Fail: There are 0 nodes in the network."); } numberOfTTracer = Convert.ToInt32(Math.Round(percentageOfTunnelingTracer * networkTopology.Nodes.Count / 100, 0, MidpointRounding.AwayFromZero)); numberOfMTracer = Convert.ToInt32(Math.Round(percentageOfMarkingTracer * networkTopology.Nodes.Count / 100, 0, MidpointRounding.AwayFromZero)); numberOfFTracer = Convert.ToInt32(Math.Round(percentageOfFilteringTracer * networkTopology.Nodes.Count / 100, 0, MidpointRounding.AwayFromZero)); // Clear the deployment method. foreach (NetworkTopology.Node node in networkTopology.Nodes) { node.Tracer = NetworkTopology.TracerType.None; } jobID = DateTime.Now.Subtract(new DateTime(1970, 1, 1)).Ticks; isNeedWriteing2SQLite = true; isNeedReset = true; allRoundScopeList.Clear(); deployNodes.Clear(); sqlite_utility.insertNetworkTopology(networkTopology); }
public void insertNetworkTopology(NetworkTopology topo) { string cmd = "INSERT INTO NetworkTopology(file_name, node_counts, edge_counts, diameter) VALUES(@file_name, @node_counts, @edge_counts, @diameter)"; List <SQLiteParameter> parms = new List <SQLiteParameter>(); parms.Add(new SQLiteParameter("@file_name", topo.FileName)); parms.Add(new SQLiteParameter("@node_counts", topo.Nodes.Count)); parms.Add(new SQLiteParameter("@edge_counts", topo.Edges.Count)); parms.Add(new SQLiteParameter("@diameter", topo.Diameter)); RunCommnad(cmd, parms); }
public void Deploy(NetworkTopology networkTopology) { initialize(networkTopology); doDeploy(networkTopology); if (isNeedWriteing2SQLite) { write2SQLite(networkTopology); } if (isNeedReset) { networkTopology.Reset(); } }
/// <summary> /// Operator overloading(-, minus) that define the complement set between the two network topologies. /// </summary> /// <param name="left_n">The minuend of the network topology.</param> /// <param name="right_n">The subtrahend of the network topology.</param> /// <returns>The complement set between the two network topologies.</returns> public static NetworkTopology operator -(NetworkTopology left_n, NetworkTopology right_n) { NetworkTopology result = new NetworkTopology(left_n.m_src_nodes); result.m_diameter = left_n.Diameter; result.Nodes = left_n.Nodes.Except(right_n.Nodes).ToList(); result.Edges = left_n.Edges.Except(right_n.Edges).ToList(); foreach (var n in right_n.Nodes) { result.Edges.RemoveAll(e => e.Node1 == n.ID || e.Node2 == n.ID); } result.AdjacentMatrix = left_n.AdjacentMatrix; return(result); }
public double ClusteringCoefficient(NetworkTopology Scope, int NodeID) { List <int> neighbor = GetNeighborNodeIDs(NodeID); List <Edge> neighbor_edge_connect_set = new List <Edge>(); neighbor_edge_connect_set.AddRange(Edges.Where(e => Scope.Nodes[0].ID == e.Node1 && neighbor.Contains(e.Node2) || Scope.Nodes[0].ID == e.Node2 && neighbor.Contains(e.Node1) )); double max_edges = (neighbor.Count * (neighbor.Count - 1)) / 2; double neighbor_edge_count = neighbor_edge_connect_set.Count; if (max_edges > 0) { return(neighbor_edge_count / max_edges); } else { return(0); } }
public PrecomputingForm() { InitializeComponent(); BackgroundWorker worker = new BackgroundWorker(); worker.WorkerSupportsCancellation = true; worker.WorkerReportsProgress = true; m_now_index = 0; worker.DoWork += (s, e) => { ListViewItem item = e.Argument as ListViewItem; if (item == null) { e.Cancel = true; worker.CancelAsync(); } else { worker.ReportProgress(m_now_index); NetworkTopology topo = new NetworkTopology(10, 10); topo.ReadBriteFile(item.SubItems[0].Text); } }; worker.RunWorkerCompleted += (s, e) => { if (!e.Cancelled) { getItem().SubItems[1].Text = "Completed."; m_now_index++; progress_bar.Value = (int)((float)m_now_index / (float)lv_status.Items.Count * 100); worker.RunWorkerAsync(getItem()); } else { btn_computing.Enabled = true; tb_select_file.Enabled = true; } }; worker.ProgressChanged += (s, e) => { getItem().SubItems[1].Text = "Computing..."; }; tb_select_file.Click += (s, e) => { openFileDialog1.Multiselect = true; openFileDialog1.InitialDirectory = Environment.CurrentDirectory; openFileDialog1.Filter = "Birte File|*.brite"; openFileDialog1.Title = "Select Brite Files"; openFileDialog1.FileName = ""; if (openFileDialog1.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { lv_status.BeginUpdate(); tb_select_file.Text = ""; lv_status.Items.Clear(); foreach (string file in openFileDialog1.FileNames) { tb_select_file.Text += file + ";"; ListViewItem lvi = new ListViewItem(new string[] { file, "Queued..." }); lv_status.Items.Add(lvi); } lv_status.EndUpdate(); } }; btn_computing.Click += (s, e) => { m_now_index = 0; worker.RunWorkerAsync(getItem()); btn_computing.Enabled = false; tb_select_file.Enabled = false; }; }
protected abstract void write2SQLite(NetworkTopology networkTopology);
protected abstract void doDeploy(NetworkTopology networkTopology);