Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.62 KB | None | 0 0
  1.     // entscheidet sich für eine Kante mit Hilfe der gegebenen Formel für P
  2.     // jedoch nie eine Kante oder Knoten doppelt
  3.     public Edge makeDecision(List<Edge> edges) {
  4.         Map<Edge, Double> listZaehler = new HashMap<Edge, Double>();
  5.         Map<Edge, Double> listFormel = new HashMap<Edge, Double>();
  6.         double summe = 0;
  7.        
  8.         Random r = new Random();
  9.         int rand = r.nextInt(101);
  10.        
  11.         // tau * eta von r
  12.         for(Edge edge : edges){
  13.             Double tmp = 0.0;
  14.             tmp = ((double) edge.getWeight() / (double) edge.getPheromon());
  15.             listZaehler.put(edge, tmp);
  16.         }
  17.        
  18.         // Summe (tau * eta) von u
  19.         for(Map.Entry<Edge, Double> elem : listZaehler.entrySet()){
  20.             summe += elem.getValue();
  21.         }
  22.            
  23.         // Den kleinsten aus (( tau * eta (von r)) / ( tau * eta (von u)))
  24.         for(Map.Entry<Edge, Double> elem : listZaehler.entrySet()){
  25.             listFormel.put(elem.getKey(), (double) ((elem.getValue()) / (summe)) );
  26.         }      
  27.        
  28.         double low = 0;
  29.         double high;
  30.         for(Map.Entry<Edge, Double> elem : listFormel.entrySet()){
  31.             high = elem.getValue()*100;
  32.             if (rand >= low && rand < (high + low))
  33.             {
  34.                 // Benutze Kante speichern
  35.                 visitedEdge.add(elem.getKey());
  36.                 // Benutze Vertex speichern
  37.                 // Damit der nächste Vertex verwendent wird, die if-else Schleife
  38.                 if(visitedVertex.contains(elem.getKey().getSource())){
  39.                     visitedVertex.add(elem.getKey().getTarget());
  40.                 } else {
  41.                     visitedVertex.add(elem.getKey().getSource());
  42.                 }
  43.                 // Gibt die Kante wieder
  44.                
  45.                 return elem.getKey();
  46.             }
  47.             else
  48.             {
  49.                 low += high;
  50.             }
  51.         }
  52.        
  53.         // Wenn keine Edge übergeben wurde wird Null zurück gegeben
  54.         return null;
  55.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement