Le plus court chemin | L’IA en pratique avec python.
L'IA en pratique avec python.

#
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`.