Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GraphLibrary

Bibliothèque Java d'implémentation de graphes et application SafeLogistics pour l'optimisation de trajets de livraison.

Prérequis

  • Java 11 ou supérieur
  • Maven 3.6 ou supérieur

Structure du Projet

Le projet est organisé avec Maven :

src/
  main/
    java/
      Aretes/           # Implémentation des arêtes
      Entities/         # Entités métier (Depot, Restaurant, Client)
      Graphs/           # Implémentation des graphes
      Nodes/            # Implémentation des nœuds
      SafeLogistics/    # Application principale
    resources/          # Ressources (fichiers de données)
  test/
    java/               # Tests unitaires
pom.xml                 # Configuration Maven

Compilation

Compiler le projet :

mvn clean compile

Exécution

Exécuter l'application principale :

mvn exec:java

Description

SafeLogistics est une application d'optimisation de trajets de livraison utilisant la théorie des graphes et l'algorithme de Dijkstra pour calculer les chemins les plus courts.

Documentation

La documentation javadoc est disponible dans le dossier doc

xdg-open doc/javadoc/apidocs/index.html

📊 Exemple de Fonctionnement

Scénario du Programme

Le programme démontre une livraison complète :

  1. Création de l'entreprise : SafeLogistics initialise son système

  2. Définition des acteurs :

    • Dépôt : Amazon
    • Restaurants : Pizza del Arte, McDonald's, KFC, Burger King
    • Client : Janelle
  3. Construction du réseau :

    • Amazon → Pizza del Arte (8 km)
    • Amazon → McDonald's (5 km)
    • Pizza del Arte → KFC (2 km)
    • McDonald's → KFC (12 km)
    • KFC → Burger King (4 km)
    • KFC → Client Janelle (9 km)
    • Burger King → Client Janelle (4 km)
  4. Calcul des trajets optimaux :

    • Dépôt Amazon → Restaurant KFC (chemin le plus court)
    • Restaurant KFC → Client Janelle (chemin le plus court)

🧪 Test et Vérification

Nettoyer les Fichiers Compilés

mvn clean

Vérifier la Compilation

mvn clean compile
# Vérifier que le dossier target/ est créé et peuplé
ls -la target/

📚 API Principale

Classe SafeLogistics

// Constructeur
SafeLogistics()  // Initialise le graphe

// Méthode principale
planDelivery(Depot start, Restaurant pickup, Client dropoff)
// Calcule et affiche les deux trajets :
// 1. start → pickup (plus court chemin)
// 2. pickup → dropoff (plus court chemin)
// Affiche aussi la distance totale

🔧 Personnalisation

Pour modifier le scénario de livraison, éditez SafeLogistics.java :

Ajouter des Points de Livraison

// Créer une nouvelle entité
Restaurant NewRestaurant = new Restaurant("Nom du Restaurant");
Noeud NodeNewRestaurant = new Noeud(NewRestaurant);

// L'ajouter au graphe
Entreprise.g.ajouterNoeud(NodeNewRestaurant);

// Ajouter les connexions
Entreprise.g.ajouterArete(
    new AreteOrientePondere(NodeAmazon, NodeNewRestaurant, 10)
);

🐛 Dépannage

Erreur : "class not found"

# Assurez-vous d'être dans le bon répertoire
cd graphlibrary/

📖 Concepts Théoriques

Algorithme de Dijkstra

  • Objectif : Trouver le plus court chemin dans un graphe pondéré positif
  • Principes :
    • Utilise une file de priorité (PriorityQueue)
    • Visite les nœuds par ordre de distance croissante
    • Garantit la solution optimale pour les poids positifs

Graphe Orienté Pondéré

  • Orienté : Les arêtes ont une direction
  • Pondéré : Chaque arête a un poids (distance, coût, temps, etc.)
  • Cas d'usage : Réseaux routiers, calcul d'itinéraires, optimisation logistique

📝 Notes

  • Le programme utilise AtomicInteger pour gérer les distances mutables en passage par référence
  • Les nœuds encapsulent les entités métier (Depot, Restaurant, Client)
  • Le graphe utilisé dans SafeLogistics utilise une composition des types orienté et pondéré

👨‍💻 Auteur

Nathan Morin


📄 Licence

Projet académique - Libre d'utilisation à des fins éducatives.

About

Librairie permettant de gérer des graphes comprenant des objets de tous types

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages