Research Article

A Fast Fully Parallel Ant Colony Optimization Algorithm Based on CUDA for Solving TSP

Algorithm 1

Kernel function <<<BN, 128>>>.
Begin:
  idx ← blockDim.x × blockIdx.x + threadIdx.x
  idy ← blockDim.y × blockIdx.y + threadIdx.y
  thread_id ← (gridDim.x  blockDim.x) × idy + idx
  Ini_City ← random (int) [1-N]
  for i:1 to N
   for j:1 to i
    //update visited cities
   end for
   for j:1 to N
    flag ← 0
    for k:0 to N-i//Find out unvisited cities
     if visited [k] = = k
      flag ← 1
     end if
    end for
    if flag = = 0
     unvisited [unvisited_index++] = j
    end if
   end for
   __syncthreads();
   for i:1 to unvisited_index
    //Calculating probability of selecting unvisited cities and cumulative probability
   End for
   //Roulette
  End for
  L ← 0
  deta_tao [N][N] ← 0
  R[N] ← 0
  for i:1 to N
   R [i-1] ← visited city [i-1]
  end for//Record the nodes on the shortest path
  //calculating length of the shortest path
  L ← distance [[R [N-1]-1] [R [0] -1]]
  for i:1 to N-1
   L ← L + distance [ R[i]-1]] [R[i + 1]-1]
  end for
  __syncthreads();
  //Pheromone update using compensation mechanism
End.