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

Algorithmes et structures de données Discussion :

Voyageur de commerce avec deux fonctions objectif


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut Voyageur de commerce avec deux fonctions objectif
    Bonjour,

    Je souhaite modéliser puis résoudre le problème suivant. Chaque jour, un livreur/facteur part de la ville A, visite un certain nombre de villes, puis revient au point de départ A en fin de journée.

    Le facteur reçoit un planning de 40 ou 50 villes à visiter. Il doit effectuer sa tournée en un nombre de jours minimal.

    1. Le chemin le plus court entre les 50 villes n'est certainement pas optimal (le temps de calcul sera aussi coûteux), vu que le facteur va visiter une partie de ces villes et doit obligatoirement rentrer à la fin de sa tournée journalière.

    2. Classer les villes par îlots (position géographique) et appliquer l'algorithme de résolution sur chaque îlot donnera-t-il la solution optimale ?

    Fonction objectif 1 : minimiser la distance du parcours
    Fonction objectif 2 : minimiser le nombre de jours de travail

    Si vous avez des pistes, je suis preneur !
    Code parrain certification Voltaire : NTMPH759

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    Ce problème n'est pas le voyageur de commerce

    Il faut définir un ordre de priorité. Quelle est la meilleure solution pour toi :

    - 10 jours, 500 km
    - 11 jours, 450 km

  3. #3
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Ce problème est en fait celui des tournées de véhicule (le voyageur de commerce est un cas particulier de ce problème).

    Wikipédia formalise ce problème, en présente les nombreuses variantes, propose des approches algorithmique et fournit des liens vers des bibliothèques libres.

  4. #4
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    Ce problème n'est pas le voyageur de commerce

    Il faut définir un ordre de priorité. Quelle est la meilleure solution pour toi :

    - 10 jours, 500 km
    - 11 jours, 450 km
    Pour moi, il s'agit d'une variante du voyageur de commerce. Je n'ai pas de priorités à définir : simplement faire des tournées en réduisant le nombre de jours (1 jour = 7 h).

    Citation Envoyé par DonQuiche Voir le message
    Ce problème est en fait celui des tournées de véhicule (le voyageur de commerce est un cas particulier de ce problème).

    Wikipédia formalise ce problème, en présente les nombreuses variantes, propose des approches algorithmique et fournit des liens vers des bibliothèques libres.
    Je ne trouve pas ce que je cherche sur cette page. Le problème des tournées de véhicules traitent le cas de plusieurs véhicules à disposition ; dans mon cas, je dispose qu'un seul véhicule. Je dois simplement trouver un ensemble de villes à visiter (+ le trajet le plus court) chaque jour tout en réduisant la durée de travail.
    Code parrain certification Voltaire : NTMPH759

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    Citation Envoyé par Wachter Voir le message
    Je n'ai pas de priorités à définir : simplement faire des tournées en réduisant le nombre de jours (1 jour = 7 h).
    Citation Envoyé par Wachter Voir le message
    Je dois simplement trouver un ensemble de villes à visiter (+ le trajet le plus court) chaque jour tout en réduisant la durée de travail.



    Tu te contredis ...

    Tu souhaite donc trouver l'ensemble des solutions qui minimisent le nombre de jours et parmi celles-ci les solutions qui minimisent la durée total de trajet.

  6. #6
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Je ne sais pas si je me contredis. En d'autres termes, le problème consiste à visiter toutes les villes en un temps minimum exprimé en jours.
    Code parrain certification Voltaire : NTMPH759

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    Très bien, il ne te reste plus qu'à modéliser sous forme de programme linéaire en nombre entier

    C'est là que tu bloques ?

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    Voilà comment je modéliserai le problème :

    Données :
    - Soit le graphe orienté et pondéré est l'ensemble des sommets représentant les villes, avec respectivement les villes de départ et d'arrivée, et l'ensemble des villes à visiter. représente l'ensemble des arcs tel que . On pose alors .
    - On note la distance entre deux villes .
    - On note la durée maximale d'une tournée. On suppose alors que .

    Variables de décisions :
    - La variable binaire pour vaut 1 si une tournée existe le jour , 0 sinon.
    - La variable binaire pour , , vaut 1 si l'arc est utilisé le jour .

    Programme linéaire en nombre entier :

    Fonction objectif : on minimise le nombre de jours consommés :

    On s'assure que toutes les villes sont visitées exactement une fois :

    Contrainte de connectivité :

    Contrainte sur l'utilisation des jours :

    Respect de la contrainte de durée pour chaque tournée :

    On s'assure que les variables sont bien entières :




    N'hésitez pas à me corriger si il y a des erreurs.

  9. #9
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par Wachter Voir le message
    Le problème des tournées de véhicules traitent le cas de plusieurs véhicules à disposition ; dans mon cas, je dispose qu'un seul véhicule. Je dois simplement trouver un ensemble de villes à visiter (+ le trajet le plus court) chaque jour tout en réduisant la durée de travail.
    Le problème ne précise pas si les trajets sont faits simultanément le même jour ou un jour après l'autre. Il te donne simplement N trajets pour parcourir l'ensemble des villes à parcourir.

  10. #10
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Citation Envoyé par Wachter Voir le message
    Pour moi, il s'agit d'une variante du voyageur de commerce. Je n'ai pas de priorités à définir : simplement faire des tournées en réduisant le nombre de jours (1 jour = 7 h).


    Je ne trouve pas ce que je cherche sur cette page. Le problème des tournées de véhicules traitent le cas de plusieurs véhicules à disposition ; dans mon cas, je dispose qu'un seul véhicule. Je dois simplement trouver un ensemble de villes à visiter (+ le trajet le plus court) chaque jour tout en réduisant la durée de travail.
    D'autres te l'ont dit, mais je répète : le problème est le même. Qu'il y ait 1 jour et plusieurs véhicules, ou 1 véhicule et plusieurs jours, ça ne change rien.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  11. #11
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    N'hésitez pas à me corriger si il y a des erreurs.
    A priori, il manque une élimination de sous-tours, sinon ta tournée pourrait être composée de sous-tours disjoints (deuxième figure de http://www.math.uwaterloo.ca/tsp/met...pt/subtour.htm). Pas à implémenter naïvement pour que ça marche en pratique niveau performance.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  12. #12
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    A priori, il manque une élimination de sous-tours, sinon ta tournée pourrait être composée de sous-tours disjoints (deuxième figure de http://www.math.uwaterloo.ca/tsp/met...pt/subtour.htm). Pas à implémenter naïvement pour que ça marche en pratique niveau performance.
    Exact, bien vu :


  13. #13
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Merci beaucoup pour vos contributions.

    Je reviendrai vers vous dès que j'aurai fini d'analyser les solutions proposées.
    Code parrain certification Voltaire : NTMPH759

  14. #14
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut Voyageur de commerce
    Bonjour,

    Tu peux t'inspirer de la discution sur ce sous-forums : " Voyageur de commerce avec horaires d'ouvertures"

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/03/2013, 15h15
  2. Algorithme génétique et probleme de voyageur de commerce avec graphe non complet
    Par marmarnassouf dans le forum Intelligence artificielle
    Réponses: 2
    Dernier message: 30/04/2009, 16h51
  3. Problème du voyageur du commerce avec plusieurs voyageurs
    Par Treuze dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/12/2007, 11h46
  4. Voyageur de commerce avec Lisp
    Par abdo dans le forum Lisp
    Réponses: 2
    Dernier message: 11/03/2007, 02h42
  5. Image avec deux fonctions OnIDblClick
    Par Romainll93 dans le forum Delphi
    Réponses: 3
    Dernier message: 25/02/2007, 14h17

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