Exemplo n.º 1
0
 def arange_routes(self, route):
     """
     """
     #rint "Calculating Energy ...",
     E = 0
     i_ind = numx.take(route, self.r_cities)
     j_ind = numx.take(route, (self.r_cities + 1) % n_cities)
     for i in self.r_cities:
         E += distance_matrix[route[i]][route[(i + 1) % n_cities]]
     #print self.E
     if E < self.best_E:
         self.third_E = self.second_E
         self.third_route[:] = self.second_route[:]
         self.second_E = self.best_E
         self.second_route[:] = self.best_route[:]
         self.best_E = E
         self.best_route[:] = route[:]
     elif E < self.second_E:
         self.third_E = self.second_E
         self.third_route[:] = self.second_route[:]
         self.second_E = E
         self.second_route[:] = route[:]
     elif E < self.third_E:
         self.third_E = E
         route[:] = self.third_route[:]
     else:
         # Nothing to do
         pass
Exemplo n.º 2
0
 def arange_routes(self, route):
     """
     """
     #rint "Calculating Energy ...",
     E = 0
     i_ind = numx.take(route, self.r_cities)
     j_ind = numx.take(route, (self.r_cities + 1) % n_cities)
     for i in self.r_cities:
         E += distance_matrix[route[i]][route[(i + 1) % n_cities]]
     #print self.E
     if E < self.best_E:
         self.third_E = self.second_E
         self.third_route[:] = self.second_route[:]
         self.second_E = self.best_E
         self.second_route[:] = self.best_route[:]
         self.best_E = E
         self.best_route[:] = route[:]
     elif E < self.second_E:
         self.third_E = self.second_E
         self.third_route[:] = self.second_route[:]
         self.second_E = E
         self.second_route[:] = route[:]
     elif E < self.third_E:
         self.third_E = E;
         route[:] = self.third_route[:]
     else:
         # Nothing to do
         pass
Exemplo n.º 3
0
def prepare_distance_matrix():
    for i in range(n_cities):
        for j in range(n_cities):
            if i == j:
                dist = 0
            else:
                cities = numx.take(cities_vec, (i, j), 0)
                dist = city_distance(cities)
            distance_matrix[i][j] = dist
Exemplo n.º 4
0
def prepare_distance_matrix():
    for i in range(n_cities):
        for j in range(n_cities):
            if i == j:
                dist = 0
            else:
                cities = numx.take(cities_vec, (i,j), 0)
                dist = city_distance(cities)
            distance_matrix[i][j] = dist