我想制作一个充满混乱的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将搜索另一条路径。
我对如何对价值数量进行测试感到困惑,有人可以帮忙吗?