Research topics with Maxime Chassaing

DARP Instances Real Life

Auteurs:

photo max

Maxime Chassaing
maxime.chassaing [@] isima.fr

Laboratoire :

logo_limos
LIMOS, UMR CNRS 6158
Campus des Cézeaux
63177 Aubière Cedex
(France)
photo christophe

Christophe Duhamel

photo philippe

Philippe Lacomme

photo philippe

Christian Laforest

Abstract

Nous proposons ici de télécharger des instances ultra-réalistes du DARP basées sur les positions GPS des villes Françaises. Elles respectent la définition du DARP proposée par Cordeau et Laporte 2003 [1] à deux exceptions :
1- la charge d’un client peut être supérieure à 1 (elle est comprise entre 1 et 4);
2- le temps maximum de transport d’un client varie en fonction des clients et de la distance que celui-ci veut parcourir
Enfin, dans cette page vous trouverez toutes les explications nécessaires pour manipuler ces instances ainsi que quelques outils pour la manipulation et pour l’affichage des solutions.

Download the DARP instances
small instancesmedium instancesbig instancesnightmare instancesAll instances
Instance.zipInstance.zipInstance.zipInstance.zipinstance.zip
solutionsR.zipsolutionsR.zipsolutionsR.zipsolutionsR.zipsolutionsR.zip
solutionsC.zipsolutionsC.zipsolutionsC.zipsolutionsC.zipsolutionsC.zip
solutionsF.zipsolutionsF.zipsolutionsF.zipsolutionsF.zipsolutionsF.zip
GPS_coordinate.zipGPS_coordinate.zipGPS_coordinate.zipGPS_coordinate.zipGPS_coordinate.zip

Les instances

Les instances sont très proches des instances classiques du DARP proposées par Cordeau et Laporte 2003 ou encore par Ropke et al 2007. Les principales caractéristiques sont les suivantes :

  • Les sommets ne sont plus repérés par des positions X et Y mais directement par les distances qui les séparent
  • Les clients sont répartis sur une superficie importante variant selon les instances, dépendant de la superficie des départements. Cette superficie varie de 100km² à plus de 8500 km².
  • Au véhicule est associé une vitesse moyenne que l'on suppose constante et d'environ 80km/h soit 1.33km/min.
  • Les distances séparant les différents sommets ne sont plus Géométriques mais se sont les distances réels (en mètre) parcourut par un véhicule pour rejoindre 2 villes. Plus de détails sur le calcul de ces distances sont disponibles à cette adresse : lien.
  • L’inégalité triangulaire n’est donc plus respectée.
  • Des fenêtres de temps .sont fixées à la fois sur le sommet de ramassage et sur celui de destination. Ces fenêtres de temps sont de tailles variantes selon les clients. Le temps de transport maximum (the maximum riding time) de chaque client dépend du client et de la distance qu’il a à parcourir.
Tableau 1 : détails sur les différentes instances.
post code district name Real Life
Instances
N M
max
M
used
BFSres
F
res
R
res
C
GPS coordinates
client list
01000AinRL_d01.txt46772396.55DLDLDL
GPS_coordinates
02000AisneRL_d02.txt9013134025.16DLDLDL
GPS_coordinates
03000AllierRL_d03.txt621083185.61DLDLDL
GPS_coordinates
04000Alpes de Haute ProvenceRL_d04.txt9116155972.08DLDLDL
GPS_coordinates
05000Hautes AlpesRL_d05.txt58993393.09DLDLDL
GPS_coordinates
06000Alpes MaritimesRL_d06.txt6010103412.34DLDLDL
GPS_coordinates
07000ArdecheRL_d07.txt54883082.8DLDLDL
GPS_coordinates
08000ArdennesRL_d08.txt42771857.35DLDLDL
GPS_coordinates
09000AriegeRL_d09.txt8312113827.63DLDLDL
GPS_coordinates
10000AubeRL_d10.txt34441341.02DLDLDL
GPS_coordinates
11000AudeRL_d11.txt47762538.18DLDLDL
GPS_coordinates
12000AveyronRL_d12.txt56983614.27DLDLDL
GPS_coordinates
13000Bouches du RhoneRL_d13.txt59983183.19DLDLDL
GPS_coordinates
14000CalvadosRL_d14.txt8812133710.25DLDLDL
GPS_coordinates
15000CantalRL_d15.txt9414145230.88DLDLDL
GPS_coordinates
16000CharentesRL_d16.txt641092709.25DLDLDL
GPS_coordinates
17000Charentes MaritimesRL_d17.txt52872861.93DLDLDL
GPS_coordinates
18000CherRL_d18.txt12820166341.11DLDLDL
GPS_coordinates
19000CorrrèzeRL_d19.txt11215145561.84DLDLDL
GPS_coordinates
20000Corse du SudRL_d20.txt56993567.32DLDLDL
GPS_coordinates
21000Cote d'OrRL_d21.txt63993218.85DLDLDL
GPS_coordinates
22000Cote d'ArmorRL_d22.txt11918166153.15DLDLDL
GPS_coordinates
23000CreuseRL_d23.txt10113144816.45DLDLDL
GPS_coordinates
24000DordogneRL_d24.txt8113114643.65DLDLDL
GPS_coordinates
25000DoubsRL_d25.txt7111103693.55DLDLDL
GPS_coordinates
26000DromeRL_d26.txt63972880.21DLDLDL
GPS_coordinates
27000EureRL_d27.txt11014114664.12DLDLDL
GPS_coordinates
28000Eure et LoirRL_d28.txt701083137.18DLDLDL
GPS_coordinates
29000FinistereRL_d29.txt8213124705.89DLDLDL
GPS_coordinates
30000GardRL_d30.txt56882678.58DLDLDL
GPS_coordinates
31000Haute GaronneRL_d31.txt65983112.39DLDLDL
GPS_coordinates
32000GersRL_d32.txt12217165824.23DLDLDL
GPS_coordinates
33000GirondeRL_d33.txt9415124880.13DLDLDL
GPS_coordinates
34000HeraultRL_d34.txt6811103066.26DLDLDL
GPS_coordinates
35000Ille et VilaineRL_d35.txt8413124142.25DLDLDL
GPS_coordinates
36000IndreRL_d36.txt42662139.52DLDLDL
GPS_coordinates
37000Indre et LoireRL_d37.txt8010104164.12DLDLDL
GPS_coordinates
38000IsereRL_d38.txt10216145439.44DLDLDL
GPS_coordinates
39000JuraRL_d39.txt38662030.44DLDLDL
GPS_coordinates
40000LandesRL_d40.txt661093815.96DLDLDL
GPS_coordinates
41000Loir et CherRL_d41.txt67993198.74DLDLDL
GPS_coordinates
42000LoireRL_d42.txt8913114351.21DLDLDL
GPS_coordinates
43000Haute LoireRL_d43.txt43662002.15DLDLDL
GPS_coordinates
44000Loire AtlantiqueRL_d44.txt8611114240.85DLDLDL
GPS_coordinates
45000LoiretRL_d45.txt8512114057.07DLDLDL
GPS_coordinates
46000LotRL_d46.txt12520165637.37DLDLDL
GPS_coordinates
47000Lot et GaronneRL_d47.txt55772636.07DLDLDL
GPS_coordinates
48000LozereRL_d48.txt55883083.19DLDLDL
GPS_coordinates
49000Maine et LoireRL_d49.txt12318165450.74DLDLDL
GPS_coordinates
50000MancheRL_d50.txt9312124650.02DLDLDL
GPS_coordinates
51000MarneRL_d51.txt641093035.71DLDLDL
GPS_coordinates
52000Haute MarneRL_d52.txt29441607.74DLDLDL
GPS_coordinates
53000MayenneRL_d53.txt57762484.6DLDLDL
GPS_coordinates
54000Meurthe et MozelleRL_d54.txt8615123826.1DLDLDL
GPS_coordinates
55000MeuseRL_d55.txt28541516.7DLDLDL
GPS_coordinates
56000MorbihanRL_d56.txt7613124287.3DLDLDL
GPS_coordinates
57000MoselleRL_d57.txt8112103758.09DLDLDL
GPS_coordinates
58000NievreRL_d58.txt11016145127.06DLDLDL
GPS_coordinates
59000NordRL_d59.txt9613135383.8DLDLDL
GPS_coordinates
60000OiseRL_d60.txt68982816.27DLDLDL
GPS_coordinates
61000OrneRL_d61.txt55882855.09DLDLDL
GPS_coordinates
62000Pas de CalaisRL_d62.txt11217144458.1DLDLDL
GPS_coordinates
63000Puy de DomeRL_d63.txt8712113719.97DLDLDL
GPS_coordinates
64000Pyrennees AtlantiquesRL_d64.txt8012114971.05DLDLDL
GPS_coordinates
65000Hautes PyrenneesRL_d65.txt11115134431.84DLDLDL
GPS_coordinates
66000Pyrennees OrientalesRL_d66.txt7511113350.45DLDLDL
GPS_coordinates
67000Bas RhinRL_d67.txt8611103615.08DLDLDL
GPS_coordinates
68000Haut RhinRL_d68.txt621082606.51DLDLDL
GPS_coordinates
69000RhoneRL_d69.txt761092691.37DLDLDL
GPS_coordinates
70000Haute SaoneRL_d70.txt39662006.05DLDLDL
GPS_coordinates
71000Saone et LoireRL_d71.txt9314134820.43DLDLDL
GPS_coordinates
72000SartheRL_d72.txt9313123978.86DLDLDL
GPS_coordinates
73000SavoieRL_d73.txt6810104278.51DLDLDL
GPS_coordinates
74000Haute SavoieRL_d74.txt621093335.58DLDLDL
GPS_coordinates
75000ParisRL_d75.txt1022150.91DLDLDL
GPS_coordinates
76000Seine MaritimeRL_d76.txt761193467.29DLDLDL
GPS_coordinates
77000Seine et MarneRL_d77.txt9513124099.4DLDLDL
GPS_coordinates
78000YvelinesRL_d78.txt9513122924.3DLDLDL
GPS_coordinates
79000Deux SevresRL_d79.txt7311113206.91DLDLDL
GPS_coordinates
80000SommeRL_d80.txt8511114057.1DLDLDL
GPS_coordinates
81000TarnRL_d81.txt53772456.13DLDLDL
GPS_coordinates
82000Tarn et GaronneRL_d82.txt39661842.84DLDLDL
GPS_coordinates
83000VarRL_d83.txt62993275.42DLDLDL
GPS_coordinates
84000VaucluseRL_d84.txt52862368.34DLDLDL
GPS_coordinates
85000VendeeRL_d85.txt7312113785.93DLDLDL
GPS_coordinates
86000VienneRL_d86.txt7611113624.95DLDLDL
GPS_coordinates
87000Haute VienneRL_d87.txt54872714.31DLDLDL
GPS_coordinates
88000VosgesRL_d88.txt631093476.11DLDLDL
GPS_coordinates
89000YonneRL_d89.txt6710103583.62DLDLDL
GPS_coordinates
90000Territoire de BelfortRL_d90.txt51661133.45DLDLDL
GPS_coordinates
91000EssonneRL_d91.txt9813112846.48DLDLDL
GPS_coordinates
92000Haut de SeineRL_d92.txt1722347.01DLDLDL
GPS_coordinates
93000Seine Saint DenisRL_d93.txt1932418.76DLDLDL
GPS_coordinates
94000Val de MarneRL_d94.txt2322352.25DLDLDL
GPS_coordinates
95000Val d'OiseRL_d95.txt911092453.72DLDLDL
GPS_coordinates
20000Haute CorseRL_d96.txt5311103593.6DLDLDL
GPS_coordinates



Construction des instances

Dans le but d'obtenir des instances le plus proche possible de la réalité, la construction de ces instances repose sur plusieurs lois biaisées :

  • Concernant les tailles des trajets demandés par les clients
    trip_size
  • La position des fenêtres de temps
    TW
  • La taille des fenêtres de temps
    TW_size
  • Les contraintes de temps de transports maximums imposés aux clients
    service_max

Lecture des instances

Une instance se découpe en 3 parties :

1 - Les données du problème

Cette partie concerne les données du problème et regroupe dans l’ordre :

  • m : le nombre de véhicule ;
  • 2*n : 2* le nombre de clients, ce qui représente le nombre de sommets dans le graphe (sans compter le dépôt) ;
  • TRT : le temps maximum de trajet pour un véhicule (i.e. 8h de travail maximum pour un chauffeur soit 480 minutes) ;
  • C: la capacité maximale d’un véhicule ;
  • V: la vitesse en km/minute du véhicule.
Exemple : Partie 1
**************************************DATA
12 92 480 8 1.33

2 - La matrice des distances

Cette matrice carré est de taille (N+1)*(N+1).
La première ligne représente la distance en partant du sommet choisi pour être le dépôt vers les n autres sommets.
La valeur en position i,j correspond à la distance en mètre séparant le ième sommet et le jème.
Les valeurs sur la diagonale sont égales à 0.

ATTENTION : le même nœud peut être utilisé plusieurs fois, donc des distances de valeurs zéros peuvent apparaître.

Exemple : Partie 2
**************************************DISTANCE
0 64916 139561 1213 182080 ...
64916 0 115682 64384 157086 ...
139561 115682 0 140773 25871 ...
1213 64384 140773 0 183328 ...
182080 157086 25871 183328 0 ...
...
...
...

Matrice des distances réels en mètre parcourut par un véhicule entre deux sommets, avec en ligne le sommet d’origine et en colonne la destination.
Cette matrice est symétrique.

3 - Les données sur les clients

Dans cette 3ème partie sont regroupées les informations sur les clients.
Qui se compose dans l’ordre :

  • i : le numéro du véhicule ;
  • s[i] : le temps de chargement au sommet i.
  • c[i] : Le nombre de client à prendre(+) ou déposer(-) au sommet i ;
  • e[i] l[i] : les dates minimales et maximales pour traiter le sommet i (fenêtres de temps) ;
  • L[i] : la durée maximale pour effectuer le transport associées au client i.

La première ligne concerne le point 0, qui est le dépôt. Il a pour fenêtre de temps [0;1440] ce qui correspond à une journée de 24h (=1440min).
Les sommets numérotés de 1 à n suivantes sont les sommets de ramassages associés aux n clients.
Et les sommets numérotés de n+1 à 2*n suivants sont les sommets de destinations associés aux n clients.

Exemple : Partie 3
**************************************TimeWindows
0 0 0 0 1440 480
1 3 3 480 720 124
2 1 1 480 720 61
3 1 1 480 720 71
...
...
...
47 3 -3 605 785 124
48 1 -1 556 736 61
49 1 -1 533 773 71
...





Lecture des solutions

Dans ces pages vous trouverez 3 différentes formes de solutions.


1- Solutions réduites : forme simple

La première ligne donne le nombre de véhicules utilisés. La seconde, le nombre x de sommets dans le 1er véhicule, la suivante liste les x sommets dans l’ordre de traitement par le véhicule.

**************************************
2
16
0 10 3 20 1 13 2 11 4 14 6 12 16 7 17 21
8
0 5 8 15 18 9 19 21

2- Solutions traditionnelles :

Ces solutions sont construites sous la même forme que les solutions disponibles sur internet Pour les précédentes instances de la littérature. Ainsi les personnes ayant l’habitude de cette forme ou ayant déjà développé des fonctions utilisant ce formats peuvent continuer à les utiliser.

3- Solutions complètes

Ces solutions sont construites de manière à être réutilisable par la machine tout en restant au maximum compréhensible par l’homme. elles se présentent sous la forme de successions de "tableaux" ou chaque tableau correspondants à une tournée. Les premières lignes du tableau sont des informations générales sur la tournée puis chaque ligne correspond au passage du véhicule sur un sommet enfin les colonnes représentent les différentes variables utiles à la vérification des données :

  • S(i) : le sommet
  • C : la charge du véhicule au passage sur le sommet ;
  • TW0 : la borne inf. de la fenêtre de temps de ce sommet ;
  • TW1 : la borne sup. de la fenêtre de temps de ce sommet ;
  • VTW : différence entre la borne sup et le début du traitement du client ;
  • Min : différence entre la borne sup. et le début du traitement du client ;
  • A : date d'arrivée du véhicule sur le sommet ;
  • W : temps attendu par le véhicule avant de commencer le service ;
  • B : date de début du service ;
  • D : date de départ du véhicule ;
  • L : durée de transport du client ;
  • F : temps d'attente supplémentaire à ce sommet sans compromettre la solution.



Outils de visualisation

Pour visualiser les résultats sur une carte, à chaque instance est associée un fichier qui indique les coordonnées GPS correspondants à chaque sommet. Vous trouverez aussi un petit programme en C++ implémenté sous Visual studio 2010 qui utilise l'API google v3.
Pour l'utiliser vous devez fournir plusieurs éléments :

"1 - For generate the html file enter you google API key here:" Pour utiliser ce programme vous aller donc avoir besoin d’une clef Google API (qui est gratuite pour un usage privé). Si vous ne l’avez pas déjà vous pouvez la récupérer à cette adresse : https://developers.google.com/maps/documentation/javascript/tutorial?hl=FR#api_key

"2 - Enter file of coordinate AND solution file :
Puis de deux fichiers, 1 avec les coordonnées GPS des clients et une solution réduite correspondants à la même instance

le code source (fait sous Visual Studio 2010): TELECHARGER


ATTENTION : le même nœud peut être utilisé plusieurs fois, donc certains points se superposent parfois.

visuel visuel


LEGENDE :
La ville en bleu point_depot est le dépôt;
les villes en verts point_pickup sont les sommets d’origine des clients ;
les villes en rouges point_delivery sont les sommets de destination des clients.

Licence

All the C#, C++ and Java programs are under the GNU General Public License
Warning : Please note these programs are provided for free without any guarantees.


Annexe : position GPS des villes de France

Dans l’archive suivantes vous trouverez les coordonnées GPS pour une grande partie des communes de France, certaines n’ayant pas été utilisées pour la création des instances. GPS_cities
Attention ces données ne sont pas fiables à 100%, certaines coordonnées ne correspondent pas aux villes associées (la cause est due aux accents et aux homonymes qui ont perturbé la recherche effectuée sur API Google MAP).

Valid HTML 4.01 Transitional CSS Valide !