| Input: |
| : Number of ants |
| : The maximum number of iterations |
| : Pheromone weight |
| : Heuristic information weight |
| : Grid map matrix containing obstacles |
| Output: |
| best_path: Coordinate information matrix on the optimal path |
| % Main loop for the iterations |
| for k = 1: K |
| % Loop for each ant |
| for m = 1: M |
| % Initialize Tabu list |
| TABUkm = ones(N) |
| % Initialize path list |
| DIACO = [] |
| while ∼ target_position(current_position) |
| leave_pheromone(current_position, equation_7_parameters) |
| % Add the current position to the path list and Tabu list |
| DIACO = add_to_path(DIACO, current_position) |
| TABUkm = update_tabu(TABUkm, current_position) |
| % Calculate transition probabilities according to equations (1)–(6) transition_probabilities = calculate_transition_probabilities(current_position, equations_1_to_6_parameters) |
| next_position = select_next_position(transition_probabilities) |
| % Update the current position |
| current_position = next_position |
| end |
| % Check if there are positions in the path that satisfies the diffusion threshold according to (18) |
| if any_position_satisfies_diffusion_threshold(DIACO, equation_18_parameters) |
| % Perform pheromone diffusion according to equations (9)–(17) |
| Pheromone_update = perform_pheromone_diffusion (DIACO, equa-tions_9_to_17_parameters) |
| % Local pheromone update |
| Pheromone = leave_pheromone + Pheromone_update |
| end |
| % Check if all ants have completed the path search |
| if all_ants_have_completed_path_search() |
| % Check if this is the last iteration |
| if k < K |
| % Perform global pheromone update according to (8) |
| perform_global_pheromone_update(equation_8_parameters) |
| else |
| % Return the best path and the best path curve |
| [best_path] = get_best_path_and_curve(DIACO) |
| return |
| end |
| end |
| end |
| end |
| end |