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

VBA Access Discussion :

[Algorythme] Tester toutes les combinaisons possibles


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut [Algorythme] Tester toutes les combinaisons possibles
    Bonjour,

    Je travail sur une BDD sous access 2003, et je suis face a un probleme,

    j'ai une table, qui contiend une liste de segments de transports, je doits associer ces segments les un avec les autres de maniere a ce que la solution finale soit le moin couteuse possible. malheureusement ces segments n'ont pas de cout fixes, et le prix d'une combinaison de segment depend de sa propre composition (KM temps de route, nb de segment...)

    Je pense donc procèder de la maniere suivante:

    évaluer toutes les combinaisons possible de segments (enchainement en fonction des heures de debut et de fin)

    évaluer le prix de chaque combinaison

    retenir que les combinaisons les plus intéressantes, en excluant les combinaisons qui se recoupent (celles qui contiennent le meme segment)

    mon probleme est que je n'arrive pas a formuler le code qui génère toutes les combinaisons possible.

    Quelqu'un a une idée ?

    cordialement

    Franck

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    pour avoir toutes les combinaisons possibles, il suffit de faire le produit cartésien de ta table avec elle-même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select table1.segment, table2.segment from tatable as table1, tatable as table2
    Par contre, cela limite la combinaison à une combinaison de 2 segments. Pour avoir plus, il faut à nouveau réaliser un produit cartésien du résultat de la première requête avec tatable.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    bonjour,

    merci de la reponse,

    Le probleme, c'est que cela calcul environ 192 millards de possibilité rien que pour les combinaisons de 5 segments.

    je vais donc affiner ma recherche car le temps de traitement de la requete risque d'etre tres long....

    je m'explique donc.

    chaque segments a un N° qui est chronologique.

    donc si on prend un exemple simpleavec les segment 1 2 3 4 et pour une combinaison de 3 segments je souhaite obtenir le resultat suivant:
    - 1
    - 2
    - 3
    - 4
    - 1 2
    - 1 3
    - 1 4
    - 2 3
    - 2 4
    - 3 4
    - 1 2 3
    - 1 2 4
    - 1 3 4
    - 2 3 4

    il y a t'il un moyen de générer une table ou un recorset contenant ces combinaisons ??

    merci

    Franck

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 91
    Points : 46
    Points
    46
    Par défaut
    A première vue je dis qu’il te faut deux boucles for combine l’une dans l’autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i segment, j segment, l segment
    For i segment
    	l = i
    	For j segment
    	l = combine j et l
    	retourne l
    	Next j
    Next i
    plus claire

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    salut,

    la j'ai rien compris du tout....

    peut tu essayer de faire plus clair ?

    merci

    Franck

  6. #6
    Membre à l'essai
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 15
    Points
    15
    Par défaut
    bonjour,
    A la lecture de ce probleme, la solution est une fonction recursive.
    Ce type de programmation permet d'explorer toutes les possibilités.
    Charge à toi de définir la faisabilité des possibilités.

    En esperant t'avoir aidé.
    Ray.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 549
    Points : 556
    Points
    556
    Par défaut
    Fais une recherche sur des méthode d'optimisation logistique mathématique
    Je crois que çà répondrais à ta recherche

    Je me souviens avoir fais des trucs dans le genre en cours de math à la fac. Ca résolvait justement ce genre de problématique

    Ensuite, il sera sans doute pas trop dur de mettre en oeuvre la solution
    Bon Courage

  8. #8
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 868
    Points : 4 739
    Points
    4 739
    Par défaut
    Bonjour,
    Ton problème, pour être résolu proprement, relève de la théorie des graphes en recherche opérationnelle : par exemple avec l'algorithme de Dijkstra ou bien celui de de Ford-Bellman

    http://fr.wikipedia.org/wiki/Algorithme_de_Dijkstra

    je dois reconnaitre que c'est pas simple à mettre directement en pratique.

    "Always look at the bright side of life." Monty Python.

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

Discussions similaires

  1. Tester la somme de toutes les combinaisons possibles
    Par unix27 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/11/2014, 15h39
  2. Algo pour toutes les combinaisons possibles
    Par rantanplan08 dans le forum Général Java
    Réponses: 6
    Dernier message: 03/01/2008, 10h45
  3. Réponses: 5
    Dernier message: 18/06/2007, 21h52
  4. Réponses: 16
    Dernier message: 20/10/2006, 17h31
  5. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 01h11

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