IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Optimisation itinéraires routiers avec étapes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Par défaut Optimisation itinéraires routiers avec étapes
    Bonjour et meilleurs voeux pour cette année 2012 à tous,

    J'aurais besoin de votre aide pour le problème suivant:
    - J'ai besoin de calculer des itinéraires routiers avec environ 15 à 20 étapes par itinéraires
    - j'ai automatisé le calcul de la distance entre chaque étape à partir de Google Maps avec des morceaux de programmes que j'ai trouvés sur différents forums (voir fichier ci-joint)

    Je recherche, donc, à optimiser l'itinéraire en réduisant au maximum les km parcourus. La contrainte est un départ et une arrivée imposée.
    J'ai fait des recherches sur différents forums et j'ai compris que mon problème s'apparentait à des permutations et que le nombre de permutations se calcule de la manière suivante : 15 étapes ---> nbre de permutations ou de possibilités de trajets = 1X2X3X4....X15 soit 15! ou factorielle 15.
    A partir de là on comprend bien que plus on a d'étapes plus le nbre de possibilités de trajets augmente d'une manière phénoménale.
    J'ai même trouvé des codes qui permettaient de traiter mon problème, mais malheureusement au dessus de 11 étapes le nbre de possibilités fait que la macro plante. D'après ce que j'ai compris la macro plante parce que toutes les possibilités d'itinéraires sont stockés dans une matrice VBA et que la capacité de stockage d'une matrice dans VBA est atteinte.

    N'étant pas très matheux j'ai besoin de votre aide, car je ne comprends pas que l'on ait besoin de stocker toutes les possibilités dans une matrice.
    En effet, mon raisonnement est qu'il faut définir un algorithme dans VBA :
    - pour calculer pas à pas chaque possibilité
    - calculer le nombre de km total
    - comparer le nbre de km avec le résultat retenu précédemment
    - retenir le résultat avec le moins de km
    - et ainsi de suite jusqu'à la dernière possibilité
    Bien évidemment le temps de traitement risque d'être long mais finalement faible par rapport au gain de l'optimisation.
    Pourriez vous m'aider sur ce sujet ?

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Sinon regarde ce fil

    J'avais fait une implémentation de l'algorithme de Dijkstra qui est bien plus rapide que de tester toutes les permutations. Ça m'avait pris un peu de temps alors autant que ça serve.

    Le seul problème que tu vas avoir, c'est qu'en fait, il ne faut utiliser que les distances entre villes qui se touchent, sinon, vu que tu as rentrer toutes les distances, ça va toujours te renvoyer le chemin direct sans te dire par où passer.

    Je m'explique :
    Imaginons pour simplifier que l'on travaille sur 4 villes Paris, Toulouse, Lyon, Montpellier et que l'on veut faire Paris-Montpellier. Il faudra rentrer Paris-Toulouse, Toulouse-Montpellier, Paris-Lyon et Lyon-Montpellier. Car le Paris-Montpellier (comme le Lyon-Toulouse) n'est pas un trajet "connexe". Si tu rentres une distance donnée par Google Map, c'est déjà optimisé en fait, et tu ne sais pas comme il l'a optimisé.
    J'espère que j'ai été assez clair.
    Il faut donc virer tous les distances qui ne correspondent pas à un trajet direct.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Par défaut
    Bon dans un premier temps c'est un peu hard pour moi mais je regarde cela à tête reposée et je te recontacte lorsque je me suis fait une idée précise

    Merci pour ce fichier.
    J'ai fait des tests et il semble que cela ne corresponde pas exactement à ce que je cherche mais peut-être que je m'y prend mal...
    La "liste des noeuds" qui correspond à mes étapes devraient être tous présents dans la liste "Résultats Chemin" or par exemple lorsque je mets C1 en départ et C9 en arrivée il manque les étapes C2, C4, C5 et C6.
    Je dois absolument me rendre en C2, C4, C5 et C6 mais je ne sais pas dans quel ordre aller à ces étapes. C'est le résultat que je cherche à obtenir.
    Merci pour votre aide

    Autre précision :
    Par rapport à mon point départ, j'ai des étapes au Nord au Sud à l'Est et à l'Ouest les distances similaires par rapport à mon point de départ ne sont donc pas forcément proches

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 960
    Par défaut
    Salut

    Si tu fonctionnes avec internet, plutôt que d'utiliser GoogleMap, utilise plutôt Mappy.fr, tu fais une petite prise de contrôle d'internet explorer, tu renseigne autant d'étapes que nécessaire et il te calcul le meilleur chemin

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Par défaut
    Je peux me tromper mais compte tenu du nbre de combinaisons possibles si 15 étapes par exemple = 15X14X13X12...X2X1 le temps de traitement va être énorme et bien plus important qu'en faisant le somme des combinaisons sur excel.
    Mais peut-être existe-il déjà une possibilité que je ne connais pas ?

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 960
    Par défaut
    Salut

    Mappy te permet de calculer l'itinéraire le plus adapté, exactement ce que tu cherches il me semble.

    http://fr.mappy.com/#d%5B%5D=Lyon,+6...=r&p=itinerary

    Inverse Brest et Toulouse par exemple, tu verras, il les remet en place

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimiser un calcul avec parcours de recordset
    Par hugo69 dans le forum Access
    Réponses: 28
    Dernier message: 12/06/2006, 10h37
  2. Problème sur un réseau routier avec l'algo de Ford-Fulkerson
    Par Yakurena dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 20/02/2006, 09h35
  3. [CF][C#] Comment optimiser mes requêtes avec SqlCE ?
    Par david71 dans le forum Windows Mobile
    Réponses: 10
    Dernier message: 20/01/2006, 14h48
  4. Optimisation de tournées avec contraintes
    Par DelphiManiac dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 25/10/2005, 11h35
  5. Optimisation de requête avec Tkprof
    Par stingrayjo dans le forum Oracle
    Réponses: 3
    Dernier message: 04/07/2005, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo