Link Search Menu Expand Document

Le plus court chemin (Shortest Path)

Vous trouverez ci-dessous les instructions et détails pour utiliser le programme de recherche d’un plus court chemin. Le but du programme et de chercher un plus court chemin (shortest path) dans un graph pondéré partiellement connecté.

On présente ici une technique classique de recherche avec l’algorithme de Dijkstra ainsi qu’une recherche par A*. La recherche se fait en premier lieu en partant du départ jusqu’à l’arrivée, mais aussi en partant simultanément du départ et de l’arrivée pour se retrouver et ainsi accelerer l’execution du programme.

Installation

Pour installer l’application, commencez par copier le dépot du livre (AI-book sur github), soit en recupérant l’archive zip depuis github, soit à l’aide de l’outil git:

git clone https://github.com/iridia-ulb/AI-book

Puis, accedez au dossier:

cd Shortest_Path

Après avoir installé python et poetry, rendez vous dans ce dossier et installez les dépendances du projet:

poetry install

Utilisation

Vous pouvez ensuite lancer l’application, dans l’environnement virtuel nouvellement crée, en utilsant la commande:

poetry run python main.py

Plusieurs options sont disponibles lors du lancement de la commande. Il est par exemple possible de changer l’heuristique utilisée avec l’option --heuristic, qui peut prendre les valeurs Manhattan, Euclidian, Chebyshev, ou Dijkstra (si on veut utiliser cette algorithme à la place de A*). Il est aussi possible de choisir un fichier d’instance, qui permet de changer le graphe à parcourir, avec l’option --instance et d’y ajouter le nom du fichier d’instance à ouvrir. Pour finir il est possible de tester l’algorithme bidirectionnel.

Par exemple:

poetry run python main.py --heuristic Chebyshev --instance datasets/13_nodes.txt

permet de lancer l’instance 13_nodes.txt avec l’heuristique de Chebyshev.

En résumé:

usage: main.py [-h] [--heuristic {Manhattan,Euclidian,Chebyshev,Dijkstra}] [--instance INSTANCE] [-b]
               [--log {DEBUG,INFO,WARNING,ERROR,CRITICAL}]

Illustration of A* algorithm

optional arguments:
  -h, --help            show this help message and exit
  --heuristic {Manhattan,Euclidian,Chebyshev,Dijkstra}, --he {Manhattan,Euclidian,Chebyshev,Dijkstra}
                        Heuristic choice
  --instance INSTANCE   Path to instance
  -b, --bidirect        bidirectionnal
  --log {DEBUG,INFO,WARNING,ERROR,CRITICAL}
                        Set the logger level

NB: plusieurs instances sont disponibles dans le dossier datasets.

path screen