Selaa lähdekoodia

fix an issue in the global update

Sven Czarnian 3 vuotta sitten
vanhempi
commit
bb6cacd898
1 muutettua tiedostoa jossa 5 lisäystä ja 4 poistoa
  1. 5 4
      aman/sys/aco/Colony.py

+ 5 - 4
aman/sys/aco/Colony.py

@@ -110,10 +110,11 @@ class Colony:
                 if None == bestCandidate or candidate[0] < bestCandidate[0]:
                     bestCandidate = candidate
 
-                dTheta = 1.0 / ((candidate[0].total_seconds() / 60.0) or 1.0)
-                for i in range(1, len(candidate[1])):
-                    update = (1.0 - self.Configuration.Epsilon) * self.PheromoneMatrix[candidate[1][i - 1], candidate[1][i]] + dTheta
-                    self.PheromoneMatrix[candidate[1][i - 1], candidate[1][i]] = max(update, self.Configuration.ThetaZero)
+                if None != bestSequence:
+                    dTheta = 1.0 / ((bestSequence[0].total_seconds() / 60.0) or 1.0)
+                    for i in range(1, len(bestSequence[1])):
+                        update = (1.0 - self.Configuration.Epsilon) * self.PheromoneMatrix[bestSequence[1][i - 1], bestSequence[1][i]] +  self.Configuration.Epsilon * dTheta
+                        self.PheromoneMatrix[bestSequence[1][i - 1], bestSequence[1][i]] = max(update, self.Configuration.ThetaZero)
 
             # check if we find a new best candidate
             if None != bestCandidate: