Bonjour,
Je vous écris pour savoir quels sont les algorithmes de plus court chemin les plus efficaces, désirant résoudre un problème de ce type. Mon objectif final est d'optimiser des emplois du temps, je vais essayer de l'illustrer au travers d'un exemple. Je pense que cela ressemble d'assez près au problème du voyageur du commerce, sauf qu'il y en a plusieurs d'une certaine manière.
On considère une entreprise de dépannage.
Position du problème :
-Chaque jour j il y a Nj dépanneurs disponibles qui partent d'une base.
-Chaque technicien dispose d'une feuille de route qui le fait intervenir dans quelques villes.
-Pour chaque ville i il peut intervenir k fois. Et pour chaque intervention k, on peut estimer la durée tk d'une intervention.
-La distance de la base à une ville quelconque Db est connue.
-La distance entre deux villes Di1i2 est connue.
-Toutes les adresses et villes pour intervention sont connues avant le départ de la base le matin (donc toutes les distances le sont).
Contraintes :
-La feuille de route ne peut-être établie que du jour pour le lendemain (optimisation au jour le jour).
-Il y a un nombre maximal m d'interventions par demi-journée.
-Il y a un nombre d'heures de travail hebdomadaire h à respecter le plus possible.
Objectifs :
-Minimiser la distance totale parcourue dans la journée, sachant que le midi, de nombreux dépanneurs viennent se réapprovisionner en matériel livré à la base.
-Minimiser la distance totale parcourue individuellement.
-Minimiser pour une période de temps donnée au maximum la distance entre deux voire trois dépanneurs, pour que ceux-ci puissent s'entraider ou s'échanger du matériel si nécessaire.
-Minimiser la distance à la base en cas de besoin de matériel supplémentaire. On pourra aussi ajouter d'autres points où récupérer du matériel.
-Maximiser le nombre d'interventions total par jour.
-Essayer de rendre l'emploi du temps individuel le plus régulier possible (par exemple sur 37h de travail hebdomadaires, tenter d'attribuer 7h25 par jour ouvré).
Alors je ne demande pas du tout de résolution complète vu que c'est ce que je cherche à m'amuser à faire. Mais j'ai quelques questions pour prendre une bonne direction :
L'algorithme de Floyd-Warshall (utilisé pour réduire la distance à la base et la distance entre dépanneurs) est-il le plus adapté à cette situation?
J'ai regardé par curiosité Dijkstra (que je connaissais déjà un peu), et Christofides, mais intuitivement, Floyd-Warshall me semble être le plus adapté. Vaudrait-il mieux le coupler avec un autre? En utiliser un autre? Utiliser une méthode naïve/exhaustive?
-----