This Graphic User Interface (GUI) is intended to solve the famous NP-problem known as Travelling Salesman Problem (TSP) using a common Artificial Intelligence method: a Genetic Algorithm (GA).
Execute ‘main.m’ for running the main GUI program. As shown in the thumbnail, the program allows the user to configure every single parameter of the GA.
First of all, it is necessary to set the cities to travel on the map. The GUI offers three different options: a circled position, a random position or a custom one. If ‘circled’ or ‘random’ are selected, it is necessary to set the number of cities. In contrast, if ‘custom’ is selected, a new figure will rise up for introducing each city position with the mouse.
Once the city map is created, it is time to set the optimal parameters for solving the problem. Those parameters are the population size, the maximum number of generations, the mutation and crossover likelihoods, if elitism is wanted or not and the type of likelihood variation (i.e., whether it is necessary to vary the likelihood with a linear tendency or it is better to maintain the values as constants).
Finally, pressing the ‘run’ button, the algorithm will start. In this case, fitness is the inverse of the distance, because the algorithm is trying to find the shortest route (i.e., chromosome) that connects all the cities (i.e., minimizing the traveled distance). The GUI presents 4 different graphs: distance matrix (bottom left), best local route in the current generation (upper left), best local route found until the moment (upper right) and fitness monitoring (bottom right). In addition, the AG can be stopped at any time.
Víctor Martínez-Cagigal (2020). Travelling Salesman Problem - A Genetic Algorithm Approach (https://www.mathworks.com/matlabcentral/fileexchange/54420-travelling-salesman-problem-a-genetic-algorithm-approach), MATLAB Central File Exchange. Retrieved .
How can I load a xy.mat data to the script? Nice job.
You just need to plot the map before plotting the current generation chromosome and make a "hold on" in that graph. In "main.m", search the "Genetic Algorithm loop". Then, in "Plotting the best chromosome for each generation", just place your map, for example, using "imagesc(handles.run_graph,'yourmappath.png');" and "hold(handles.run_graph,'on')".
Looks Great thanks!
I have one question, I would like to adapt it for finding the shortest route and therefore would need to place a picture, in this case a map, in the background.
How can I manage that?
Thanks in advance!
Comments added in 'pop_selection' and 'main' functions.