我想做一个知道拥塞的dikstra算法
我正在监视从中获取值http://localhost:8008/metric/ALL/flows/json
这是我的代码:
def checkCost(self):
# flag=1
while (1):
#print "ok haha"
url = 'http://localhost:8008/metric/ALL/flows/json'
r = requests.get(url)
vals = r.json()
valueNumber=0
for v in vals:
mname = v["metricValue"]
message = '%s \n' % (mname)
valueNumber=float(message)
# print message
我的拓扑:
我有每条路径的权重值:
s1 -> s2 = 2
s1 -> s3 = 2
s1 -> s4 = 1
s2 -> s3 = 2
s3 -> s4 = 2
s4 -> s5 = 1
def dijalg(self,G,source,wG=None,huge=1e30000):
dist={}
pred={}
Q = priorityDictionary()
Q[source] = 0
#print (G.edge)
if wG == None:
for u in G.edge:
dist[u]={}
for v in G.edge:
#print type(v)
#print G.has_edge
if G.has_edge(u,v):
if (u==1):
if (v==2):
dist[u][v] = 2
elif (v==3):
dist[u][v] = 2
elif (v==4):
dist[u][v] = 1
if (u==2):
if (v==1):
dist[u][v] = 2
elif (v==3):
dist[u][v] = 2
if (u==3):
if (v==1):
dist[u][v] = 2
elif (v==4):
dist[u][v] = 1
if (u==4):
if (v==1):
dist[u][v] = 1
elif (v==3):
dist[u][v] = 1
elif (v==5):
dist[u][v] = 1
if (u==5):
if (v==4):
dist[u][v] = 1
else:
dist[u][v]=huge
dist[u][u]=0
如果 valuenumber 的值大于 1000000kbit,则成本将为 +10,他们将搜索另一条路径。
例如
s4 -> s1
大于 1000000kbit
所以如果 s5 需要到 s1 的路径,它会想要做 s5->s4->s1。但是,如果我有一个valuenumber > 1000000kbit
加权成本值将上升 10 的条件,那么 s4 -> s1 中的成本实际上将为 11,而 s5 将搜索另一条路径。
我对如何对值数进行此测试感到困惑,有人可以帮忙吗?