Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss16:radwege:dateistruktur:optimize

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

ss16:radwege:dateistruktur:optimize [2016/09/27 17:49]
fence angelegt
ss16:radwege:dateistruktur:optimize [2016/09/28 20:44] (aktuell)
fence
Zeile 19: Zeile 19:
  karte.defineVINodesRandom(5)  karte.defineVINodesRandom(5)
  Exp=loadExpenses()  Exp=loadExpenses()
 + arate=rateGraph(karte,​ False, karte.inodes,​ karte.vinodes)
 + print(arate)
 + print("​BEGINN DES OPTIMIERUNGSPROZESSES"​)
   
  optBackbone(karte,​ 0.5*money)  optBackbone(karte,​ 0.5*money)
  #0.5 das beste???  #0.5 das beste???
 +
 + for n in karte.vinodes:​
 + optsubnet(money*0.1,​ karte, n, 500)
 + print("​ENDE DES OPTIMIERUNGSPROZESSES"​)
 + arate=rateGraph(karte,​ False, karte.inodes,​ karte.vinodes)
 + print(arate)
 +
 +def optsubnet(money=0,​ karte=None, node=None, maxEntf=500):​
 + explist=loadExpenses()
 + if karte==None:​
 + print("​Loading Graph..."​)
 + karte = load("​Graph.save"​)
 + print("​Graph loaded"​)
 + inodeslist=splitGraph(karte,​ node, maxEntf)
 + inodes=chooserandom(inodeslist,​ 200)
 + oldmoney=-1
 + while money>0 and money!=oldmoney:​
 + oldmoney=money
 + print(money)
 + karte.clearEdges()
 + print(rateGraph(karte,​ False, inodes, [node]))
 + iedges=karte.mostNImportantNMEdges(2000)
 + bedges=findNBuildEdges(iedges,​ 600, explist)
 + for e in bedges:
 + money-=build(e[0],​ e[0].typ+1, explist)
 +
 +def chooserandom(liste,​ number):
 + returnlist=[]
 + numberofnodes=len(liste)
 + for i in range(number):​
 + returnlist.append(liste[random.randint(0,​numberofnodes-1)])
 + return returnlist
   
 def optBackbone(karte,​ money): def optBackbone(karte,​ money):
  explist=loadExpenses()  explist=loadExpenses()
- while money>0:+ oldmoney=-1 
 + while money>​0 ​and money!=oldmoney: 
 + oldmoney=money
  print(money)  print(money)
   
Zeile 44: Zeile 81:
  startnode=karte.nodes[0]  startnode=karte.nodes[0]
  print("​Building new Graph..."​)  print("​Building new Graph..."​)
- newMap= Graph()+ newMap=[]
  startnode.dist=0  startnode.dist=0
  nrvisited=1  nrvisited=1
Zeile 63: Zeile 100:
  t[1].ancestor=node  t[1].ancestor=node
  tovisit.put((t[1].dist,​ t[1]))  tovisit.put((t[1].dist,​ t[1]))
- newMap.addNodeSafe(t[1].namet[1].gnb, t[1].gel+ if not isin(t,newMap): 
- newnode=newMap.addNodeSafe(node.name, node.gnb, node.gel+ newMap.append(t
-  + if not isin(node,newMap): 
- for nedge in node.cEdges:​ + newnode=newMap.append(node)
- if not newMap.existEdge(nedge): +
- newMap.addEdge(newnodenewMap.findNode(nedge.getSecondNode(node).name), nedge.typ)+
  lastdist=node.dist  lastdist=node.dist
- printMap(newMap,​ "​splitted.osm"​)+  
 + #printMap(newMap,​ "​splitted.osm"​)
  karte.clearNodes()  karte.clearNodes()
 + print("​Subnet building process finished"​)
  return newMap  return newMap
- + 
 +def isin(item, li): 
 + for l in li: 
 + if l==item: 
 + return True 
 + return False 
 +
 def build(edge, typ, expenses): def build(edge, typ, expenses):
  oldtype=edge.typ  oldtype=edge.typ
Zeile 82: Zeile 125:
  if i[0]<​=oldtype:​  if i[0]<​=oldtype:​
  back=edge.entf*i[1]  back=edge.entf*i[1]
 +
 +
  for i in expenses:  for i in expenses:
  if i[0]>​=typ:​  if i[0]>​=typ:​
- return edge.entf*i[1]-back+ return edge.entf*i[1]-back+isend(edge,​ typ)*100*i[1]
   
 def findNBuildEdges(elist,​ n=1, expenses=None):​ def findNBuildEdges(elist,​ n=1, expenses=None):​
ss16/radwege/dateistruktur/optimize.1474991343.txt.gz · Zuletzt geändert: 2016/09/27 17:49 von fence