----- Objective
L'objectif du programme etait d'implementer un algorithme permettant d’inciter au prix le plus bas les  transporteurs à prendre puis à déposer des ressources rares, et même à dévier de leur chemin de retour 
qui sont souvent faits à vide ou presque pour le faire. Cette solution est basée 
sur le calcul de plus courts chemins (Algorithme de Warshall) puis sur la résolution  
d'un problème de transport (par la Méthode de Stepping Stone).

----- Fonctionnement du programme
L'algorithme prend en entrée uniquement le graphe au format dgs modélisant le problème.

Une fois que le programme se lance donc, il invite l'utilisateur à selectionner le fichier
dgs. Et à partir de ce fichier (s'il est correcte), le programme déduira tous les paramètres
nécessaires à l'algorithme, et effectuera ensuite son traitement, en affichant le graphe
dans une fenêtre, puis en affichant dans la console le résultat de l'éxecution de
l'algorithme.

Important: Le premier et le dernier noeud défini (A et G dans l'exemple fourni) du fichier dgs 
devront correspondre respectivement au point de depart et d'arrivé des camions.
L'implémentation ne prenant en charge pour le moment qu'un seul point de départ
pour les camions et un seul point d'arrivé. 

----- Utilisation du programme :
* Via le fichier jar
java -jar TPE\ -\ gestion\ des\ ressources\ rares\ dans\ un\ Internet\ Physique.jar

* Via le code source 
** Sur Linux
$ javac -cp .:./lib/* *.java
$ java -cp .:./lib/* Main

** Sur Windows
$ javac -cp .;./lib/* *.java
$ java -cp .;./lib/* Main

----- Exemple d'éxecution :

Algo de gestion des ressources mobiles rares dans un Internet Physique

Étape 1: Calcul du plus court chemin entre tous les pairs de noeuds

pair     dist    path
A -> B    10     A -> B
A -> C     8     A -> C
A -> D    22     A -> B -> D
A -> E    20     A -> C -> E
A -> F    28     A -> B -> F
A -> G    26     A -> C -> G
B -> A    10     B -> A
B -> C    18     B -> A -> C
B -> D    12     B -> D
B -> E    17     B -> D -> E
B -> F    18     B -> F
B -> G    25     B -> D -> E -> G
C -> A     8     C -> A
C -> B    18     C -> A -> B
C -> D    17     C -> E -> D
C -> E    12     C -> E
C -> F    25     C -> E -> D -> F
C -> G    18     C -> G
D -> A    22     D -> B -> A
D -> B    12     D -> B
D -> C    17     D -> E -> C
D -> E     5     D -> E
D -> F     8     D -> F
D -> G    13     D -> E -> G
E -> A    20     E -> C -> A
E -> B    17     E -> D -> B
E -> C    12     E -> C
E -> D     5     E -> D
E -> F    13     E -> D -> F
E -> G     8     E -> G
F -> A    28     F -> B -> A
F -> B    18     F -> B
F -> C    25     F -> D -> E -> C
F -> D     8     F -> D
F -> E    13     F -> D -> E
F -> G    20     F -> G
G -> A    26     G -> C -> A
G -> B    25     G -> E -> D -> B
G -> C    18     G -> C
G -> D    13     G -> E -> D
G -> E     8     G -> E
G -> F    20     G -> F

Étape 2: Calcul du Coût du plus court chemin avec déviation entre
toutes les paires de sommets

	A	B	C	D	E	F	G
A	0	9	0	9	2	22	0	
B	20	9	20	9	9	22	9	
C	16	25	0	12	2	27	0	
D	44	33	31	9	9	24	9	
E	40	36	24	12	2	27	2	
F	56	45	45	23	23	22	22	
G	52	50	36	26	16	40	0	

Étape 3.1 : Extraction du problème de transport à partir du graphe

	E	F	G
A	2	22	0	
B	9	22	9	
C	2	27	0	
D	9	24	9	

Étape 3.2 : Stepping-Stone pour résoudre le problème de transport ainsi obtenu

	E	F	G
A	5	5	10	
B	0	20	0	
C	0	0	20	
D	0	5	0	

Total costs: 680.0

Étape 4 : trie des trajets par ordre croissant suivant le
 coût de la déviation de trajectoire

C -> G (Nb conteneurs = 20, Coût de déviation = 0, PCC = C -> G)
A -> G (Nb conteneurs = 10, Coût de déviation = 0, PCC = A -> C -> G)
A -> E (Nb conteneurs = 5, Coût de déviation = 2, PCC = A -> C -> E)
B -> F (Nb conteneurs = 20, Coût de déviation = 22, PCC = B -> F)
A -> F (Nb conteneurs = 5, Coût de déviation = 22, PCC = A -> B -> F)
D -> F (Nb conteneurs = 5, Coût de déviation = 24, PCC = D -> F)
