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 :

algo problème d'optimisation (trajet)


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Par défaut algo problème d'optimisation (trajet)
    Bonjour,
    Je prépare (enfin j'essaye) un examen de programmation.
    Cependant je bloque sur un exercice non résolu, ayant peu d'expérience j'aimerai avoir votre avis afin de m'éclairer...Voici l'énoncé :

    "On vous demande d'écrire un programme qui dira quels autostoppeurs il faut prendre pour arriver au plus vite à une destination"

    on dispose des données suivantes :

    on utilise deux tableaux (réel) Pi[i] donnant le % de niveau (si négatif c une descente) pendant L[i] (en km)
    exe: si P[0]=2,00 et L[0]=120 =>on monte de 2 % pendant 120 km.

    Le long du parcours sont postés N autostoppeur aux km (positif et croissant) a[i] et leur destination d[i].
    exe: a[0]=24 d[0]=83 ==>autostoppeur au km 24 descend de la voiture au km 83.
    La vitesse se calcul comme suit : vp-((pv+t)*p[i]) ou
    vp =vitesse à plat (par exe 10)
    pv=poid à vide (par ex 4)
    t=nbr d'autostoppeur
    p[i]=correspond à la monté ou descente.

    Si la vitesse passe en dessous de vm (vitesse à pied exe 4) alors les autostoppeurs sortent de la voiture et la poussent pour assurer la vitesse de vm si il sont en nombre>=P[i].

    C'est un problème d'optimisation. Je ne sais pas comment le résoudre, faut-il le représenter par un graphe ? Et dans ce cas utilisé un algorithme de programmation dynamique (genre bellman kabala ou dijkstra) ou utiliser une technique de programmation gloutonne??? Si quelqu'un peut m'aider je le remercie d'avance.

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    La solution "bien bourrine" consiste à traiter toutes les solutions, à calculer le temps de trajet pour chacune et à prendre le meilleur.
    Trouver "toutes" les solutions, c'est envisager pour chaque auto-stoppeur rencontré (et en cas de place disponible) si on le prend ou pas.

    Cette approche se traduit par un arbre binaire de solutions. Une première optimisation (mais on peut faire mieux) consiste à ne pas refaire le calcul pour les sous-arbres déjà rencontrés, c'est à dire lorsque la voiture arrive au même choix (on prend ou non le nouvel autostoppeur avec les mêmes passagers à bord).

  3. #3
    Membre chevronné
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Par défaut
    Je ne comprends pas bien cette contrainte:

    Citation Envoyé par gugumon
    Si la vitesse passe en dessous de vm (vitesse à pied exe 4) alors les autostoppeurs sortent de la voiture et la poussent pour assurer la vitesse de vm si il sont en nombre>=P[i].
    Que font les occupants si la vitesse passe en dessous de vm mais que les autostoppeurs sont moins de P[i]?

  4. #4
    Membre chevronné
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Par défaut
    Un autre question: peut-on débarquer un auto-stoppeur avant qu'il ait atteint son arrivée?

  5. #5
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Par défaut
    si la vitesse passe en dessous de vm et que les occupants sont en nbr< p[i] alors la voiture s'arrête, on est bloqué. On ne peut pas débarquer un autostoppeur avant son d[i] (destination de l'autostoppeur en km).

    J'ai essayé de résoudre le problème en utilisant la méthode "branch and bound" avec un arbre binaire. Le problème est exponentiel. On peut envisager d'économiser du temps calcul en mesurant une borne (par exemple au départ le trajet sans prendre d'autostoppeur) et de comparer le résultat à chaque noeud (si on dépasse la borne inutile de continuer), si on trouve un résultat meilleur on remplace la borne. Au niveau mémoire, on risque (dans le pire des cas) de se retrouver avec 2 * 2 exposant n - 1 noeuds (n étant les étapes de notre trajet, par exemple à chaque a[i],d[i],p[i] par ordre croissant). Voilà si vous avez une meilleur idée...

  6. #6
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Citation Envoyé par gugumon
    Si la vitesse passe en dessous de vm (vitesse à pied exe 4)...
    Change de bagnole. Une voiture qui ne dépasse pas 4 km/h, à mon avis, tu t'es fait avoir.

    Citation Envoyé par gugumon
    vp-((pv+t)*p[i])
    La différence de vitesse est totalement proportionelle à la pente. Moi, je prendrais tous les auto-stoppeurs dont l'altitude de départ est supérieure à l'altitude d'arrivée, quelle que soient les dénivelées intermédiaires (conservation de la quantité de travail => on sera troujours gagnant dans ce cas). En première approximation (c'est vrai que l'histoire de faire pousser complique un peu).

    [EDIT]Je dis n'importe nawak. Ca fera économiser l'essence peut-être, mais le temps, c'est pas évident du tout. Bon, oubliez tout ce que je viens de dire...[/EDIT]

Discussions similaires

  1. Problème d'optimisation combinatoire. Enfin je crois
    Par Arpivu dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 30/07/2007, 11h01
  2. Modification d'algo problème de valeur null
    Par goblin dans le forum Langage
    Réponses: 5
    Dernier message: 09/03/2007, 18h41
  3. Réponses: 9
    Dernier message: 27/04/2006, 15h02
  4. Problème d'optimisation
    Par jozes dans le forum Langage
    Réponses: 8
    Dernier message: 15/02/2006, 15h41
  5. Recherche de pistes pour un problème d'optimisation
    Par TiKeuj dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 15/08/2005, 15h50

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