-
Notifications
You must be signed in to change notification settings - Fork 1
/
Substrate.py
92 lines (64 loc) · 3.72 KB
/
Substrate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from graph_tool.all import *
import matplotlib.pyplot as ppt
import random
import TotalNetwork as tn
def setSbsNetworkProperties(substrateNetwork):
# Creating Properties for the Substrate Network
# ---------------------------------------------
graphProp = substrateNetwork.new_vertex_property("string")
substrateNetwork.vp.graphName = graphProp
# Giving the Substrate Vertices a Resource Capacity Property
resourceCapacityProp = substrateNetwork.new_vertex_property("int")
substrateNetwork.vertex_properties.resourceCapacity = resourceCapacityProp
# Giving the Substrate Vertices a Resource Property
resourceProp = substrateNetwork.new_vertex_property("int")
substrateNetwork.vertex_properties.resources = resourceProp
# Giving the Substrate Vertices a Bandwidth Property
capacityProp = substrateNetwork.new_edge_property("int")
substrateNetwork.edge_properties.bandwidth = capacityProp
# Giving the Substrate Vertices a Resource Capacity Property
binaryMappingVar = substrateNetwork.new_vertex_property("int")
substrateNetwork.vertex_properties.binaryMappingVar = binaryMappingVar
totalResource = substrateNetwork.new_vertex_property("int")
substrateNetwork.vertex_properties.totalResourcesAcc = totalResource
vertexDegree = substrateNetwork.new_vertex_property("int")
substrateNetwork.vertex_properties.degree = vertexDegree
def setSbsTowerProperties(substrateNetwork, resCapList, band = tn.sbsBandValue, sbsNodes = []):
loopIter = 0
if len(sbsNodes) != 0:
for node in sbsNodes:
substrateNetwork.vp.graphName[node] = "Substrate"
substrateNetwork.vp.resourceCapacity[node] = tn.resCtPerSbs + tn.randUpBoundSbs
substrateNetwork.vp.resources[node] = -1
substrateNetwork.vp.binaryMappingVar[node] = -1
substrateNetwork.vp.degree[node] = len(substrateNetwork.get_all_neighbors(node))
loopIter += 1
# Setting up the totalResources per vertex
for node in sbsNodes:
resAcc = substrateNetwork.vp.resourceCapacity[node]
for neighborNode in node.all_neighbors():
resAcc += substrateNetwork.vp.resourceCapacity[neighborNode]
substrateNetwork.vp.totalResourcesAcc[node] = resAcc
# Setting up Edge Properties
newEdges = find_edge(substrateNetwork, substrateNetwork.ep.bandwidth, 0)
for edges in newEdges:
if substrateNetwork.vp.binaryMappingVar[edges.target()] == -1 and substrateNetwork.vp.binaryMappingVar[edges.source()] == -1:
substrateNetwork.edge_properties.bandwidth[edges] = band
else:
# Setting up Vertex Properties
for sbsTower in substrateNetwork.vertices():
substrateNetwork.vp.graphName[sbsTower] = "Substrate"
substrateNetwork.vp.resourceCapacity[sbsTower] = resCapList[loopIter]
substrateNetwork.vp.resources[sbsTower] = -1
substrateNetwork.vp.binaryMappingVar[sbsTower] = -1
substrateNetwork.vp.degree[sbsTower] = len(substrateNetwork.get_all_neighbors(sbsTower))
loopIter += 1
# Setting up the totalResources per vertex
for sbsTower in substrateNetwork.vertices():
resAcc = substrateNetwork.vp.resourceCapacity[sbsTower]
for sbsTowerNeighbor in sbsTower.all_neighbors():
resAcc += substrateNetwork.vp.resourceCapacity[sbsTowerNeighbor]
substrateNetwork.vp.totalResourcesAcc[sbsTower] = resAcc
# Setting up Edge Properties
for sbsEdges in substrateNetwork.edges():
substrateNetwork.edge_properties.bandwidth[sbsEdges] = band