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

Excel Discussion :

trouver les meilleures combinaisons


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 8
    Points
    8
    Par défaut trouver les meilleures combinaisons
    Bonjour à tous,


    Je dois réaliser sous EXCEL un calcul matriciel important.
    [a1.T1 a2.T2 a3.T3 a4.T4 a5.T5] inférieur ou égal à une valeur donnée, avec T des temps et a des nombres entiers.

    Je souhaite trouver toutes les combinaisons de a qui vérifient la condition.
    Je voulais savoir si EXCEL était capable automatiquement de faire incrémenter les valeurs des a, de manière à faire toutes les combinaisons possibles.


    Merci à tous ceux qui prendront le temps de lire ce message et peut-être d'y répondre

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 134
    Points : 129
    Points
    129
    Par défaut
    Tu peux facilement imposer ton pas d'incrément, du genre :

    Pour i de 1 à 5
    Tant que a(i) x T(i) est pas égal à ce que je cherche je pose a(i) = a(i) + 1

    Sinon VBA ne gère pas le calcul matriciel, tu es obligé(e) de passer par des boucles...
    Au taf : Quad Core/8Go de RAM sous Win Seven 64 - Matlab 2009b 64bit.
    Perso : Core 2 Duo/8Go de RAM Mac OS X 10.6 - Matlab 2009b 64bit

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 8
    Points
    8
    Par défaut
    donc si j'ai le genre de matrice:

    6.n11.x11 / 8.n12.x12 / 10.n13.x13 / 14.n14.x14 / 6.n15.x15+8n16.x16 ...
    6n21.x21 / 8.n22.x22 / 10.n23.x23 / 14.n24.x24 / 6.n25.x25+8.n26.x26
    ....

    sup ou égal à la cadence journalière


    6, 8, 10, 14 représentent mes volumes de camions
    n le nombre de tours par camion
    x le nombre de camions

    par exemple, faut que je trouve les n et x fonctionnant pour uniquement des 6m3. Mais je peux également combiner des 6 et 8m3, des 6 et 10, ....

    Est-ce que c'est possible de programmer ça en VBA?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 134
    Points : 129
    Points
    129
    Par défaut
    Peux-tu être plus claire dans ton écriture de matrice et dans tes explications stp ? J'ai du mal à comprendre ton problème

    Sinon de manière générale, si tu cherches à résoudre un système d'équations, VBA n'est vraiment pas fait pour ce genre de problèmes... à moins de ne posséder qu'un nombre limité d'équations et que tes solutions soient limités à des ensembles "simples" (entiers naturels par exemple).
    Au taf : Quad Core/8Go de RAM sous Win Seven 64 - Matlab 2009b 64bit.
    Perso : Core 2 Duo/8Go de RAM Mac OS X 10.6 - Matlab 2009b 64bit

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 8
    Points
    8
    Par défaut
    Je vais vous exposer mon problème depuis le début, cela risque d'être un peu long mais peut-être quelqu'un trouvera une solution.


    Je travaille sur un projet où en fonction d'un lieu de chantier, de besoins en matériaux (type, quantités), je dois dire où aller en carrières/décharge/centrale béton, le type de camion (10t, 15t, 20t, 25t), le nombre de camions et quels sont les trajets les plus avantageux (simple fret?, double fret avec telle carrière ou telle autre, sachant également que le lieu d'une décharge peut correspondre au lieu de la carrière?, arriver à charge le matin?).

    On connaît le lieu de chantier, les différents besoins en matériaux (type, quantités). Moi de là, j'arrive à connaître pour tous les matériaux, les carrières, décharges possibles, les prix (via une base de données que je suis en train de créer) et les distances jusqu'au chantier.

    Maintenant ce que je n'arrive pas à imaginer c'est comment connaître le nombre de camions et leur types.


    Je sais que: nb rotations par jour= nb heures travaillées par jour/durée de la rotation.
    nb de camions=cadence journalière(imposée par le pelle, valeur connue)/(nb rotations x volume camion)
    La durée de la rotation=f(volume camion, trajet); en effet, le temps de chargment dépend du volume camion et la durée de la rotation dépend de si on fait du simple fret, double fret.


    Le problème, c'est que je dois gérer énormément de paramètres qui peuvent varier et qui sont tous dépendant les uns des autres.

    Je m'étais donc tournée vers un calcul matriciel du type:

    a1.T1+a2.T2+a3T3+a4.T4 inférieur ou égal à 8h
    avec a, les nombres de tours

    T1=la durée d'une rotation pour que j'arrive à charge sur le chantier le matin
    donc a1=0 ou 1 car j'arrive chargé ou pas.

    T2=la durée d'un tour pour du simple fret déblais
    T3=la durée d'un tour pour du simple fret remblais
    T4=la durée d'un tour pour du double fret déblais/remblais en prenant en compte que la décharge et la carrière peuvent être le même lieu ou pas.

    Ces durées varient en fonction des distances et du volume du camion.
    Par exemple T4=tchargement+tac+t1+t2+tca+t'; avec tac le temps de trajet, t1 le temps de déchargement décharge, t2 le temps de chargement carrière et t' le temps de déchargement chantier.

    Mais on peut aussi avoir T4=tcharg+tac+t1+tcb+t2+tba+t' car la décharge et la carrière sont aussi parfois des lieux différents.
    tcb la durée du trajet de la décharge à la carrière

    les seuls temps qui varient sont les durées de trajet et le temps de chargement chantier tchargement=volume camion/rendement pelle.
    Donc il faudrait que j'arrive à faire varier mes "a" (nb entier) et mes T en même temps.


    a1.M1+a2.M2+a3.M3+a4.M4 sup ou égal à ta cadence journalière
    avec M=nb camions x cubage du camion, sachant que sur une journée, on peut travailler avec différents types de camions.


    Je suis face à un mur parce qu'il y tellement de cas!!!!

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 134
    Points : 129
    Points
    129
    Par défaut
    Donc il faudrait que j'arrive à faire varier mes "a" (nb entier) et mes T en même temps.
    Tu peux faire des boucles imbriquées
    Sinon pour résoudre un système d'équation à N inconnues il te faut absolument N équations.
    Pour résoudre des systèmes avec beaucoup d'inconnues (et d'équations), il vaudrait mieux te tourner vers des logiciels de calcul matriciel, qui avec une simple ligne résoud ton système d'inconnues... Essaie Scilab (gratuit et qui communique avec excel).
    Au taf : Quad Core/8Go de RAM sous Win Seven 64 - Matlab 2009b 64bit.
    Perso : Core 2 Duo/8Go de RAM Mac OS X 10.6 - Matlab 2009b 64bit

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 8
    Points
    8
    Par défaut
    réflexion sur le sujet en pièce jointe.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2010
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    sous excel tu peu faire du calcul matriciel.
    Je n'est pas tous compris ton problème mais voici un exemple que tu met dans une cellule de tableau

    =(SOMME(('donnée'!$B$2:$B$65536=A1)*(Donnée'!$D$2:$D$65536=a2)

    cette formule fait la somme des lignes de l'onglet "donnée" qui à la valeur de A1 dans la colonne B et qui à la valeur de A2 dans la colonne D.

    Pour valider la formule en temps que matrice lors de la saisie il faut valider la case avec la combinaison de touche suivante: Ctrl + Shift + Entrée.

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    il manque certaines données
    1)le nombre de camion de chaque type dont tu dispose pour le déblaiement remblaiement.
    si le début de ton calcul part systématiquement camion chargé le matin a 7:30 sur le chantier et le temps de travail est de 8h, l'éventuel temps pour recharger le camion pour le landemain est il compris dans ces 8h ou il se passe "hors cloche" et il ne faut pas en tenir compte, ou bien si tes chantiers durent plusieur jours, le camion s'arrete dans l'état ou il est au bout de 8h et le cycle repart le landemain dans cet état ?
    Le but est il de connaitre la rotation sur une journée ou sur un chantier entier
    je enlever tant et apporter tant, ça me prendra 8 jours
    ou j'organise mes camion pour aujourd'hui, ce soir j'aurais enlevé tant at apporté tant
    3) le temps de chargement défini par tes pelle est connu, mais est il variable? est ce qu'une décharge a toujour le meme temps de chargement ou dois tu adapter ce parametre au jour le jour
    4) le but est il de faire ton chantier le plus vite possible et tu cherche une optimisation de tes rotation, ou le chantier te demande t'il tant de m3 et tu dois t'adapter
    cad, une donnée de départ je dois enlever tant et reposer tant
    ou aujourd'hui, je veut du remblais, demain je veux du déblais, un autre jour c'est les deux

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 8
    Points
    8
    Par défaut
    1) on imposera par exemple 30 camions maxi par jour sur le chantier.
    Je pars sur l'hypothèse que tous les camions rentrent à vide le soir.
    Moi, je souhaite connaître la rotation sur une journée.

    2) l'utilisateur aura la possiblité de choisir la pelle qu'il veut sur son chantier. A chaque pelle est associée un rendement théorique fixe auquel sera multiplié une efficience de pelle (tps réellement travaillé en une heure/60min) dépendant du type de chantier. En effet, si on a du terrassement en pleine masse, l'efficience sera de l'ordre de 0,8 alors que pour l'assainissement c'est plutôt 0,4.
    Pour ce qui est des temps de chargement/ Déchargement en carrières et du temps de déchargement chantier, ce sera un nombre fixe qui proviendra d'une moyenne.

    3) le but est d'avoir le prix total le plus faible possible.

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Points : 1 394
    Points
    1 394
    Par défaut
    il me semble que la solution à ton problème réside dans un calcul matriciel astucieux et l'implémentation du solveur sur la feuille de calcul.

    Ca demande beaucoup d'analyses je t'invite à te rensegner sur le solveur.

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    1) on imposera par exemple 30 camions maxi par jour sur le chantier.
    moi, je sais comment optimiser un transport avec plusieurs volumes differends
    par exemple pour les volumes 6.8.10.14 si tu veux faire 38m3 tu peux prendre 2*14 + 1*10, mais tu peux aussi utiliser
    1*6 + 1*8 + 1*10 +1*14 m3
    tout dépend des regles de priorité que tu compte utiliser
    mobiliser 3 camions un certain temps (avec forcement un temps de latence entre les retour et le chargement suivant) ou débarrasser le chargement le plus vite possible.perso, j'aurais tendance a utiliser le deuxieme systeme. d'ou l'importance de connaitre le nombre de camion de chaque type.si tu as deux 14m3, il vaudra mieux alors utiliser 2*14 + 10
    je ne pense pas que tu puisse faire ce type de calcul par équation ou formule, tu peux le faire par référence a une liste ou tu as déja fait les calculs.
    ensuite, je pense qu'il faut partir sur le calcul d''un cycle entier. le systeme de double fret semble s'imposer, mais y a t'il des volumes differend entre ce qu'il y a a déblayer et la qté de remblais a amener.
    supposons qu'il y ait plus de remblais que de déblais, amene t'on tout le remblais en double fret avant de finir d'évacuer ou bien quoi
    dernier question. il manque des temps dans ton programme, est ce que tu compte ces temps en dehors des huit heures?
    si tes camions ne sont pas conduit par des robots, les chauffeurs doivent bien faire une pause, ou peut etre qu'il ya un relais
    le trajet "base/ chantier" et son retour. si les camions rentrent a vide le soir, il faut bien qu'ils chargent le matin

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 8
    Points
    8
    Par défaut
    mon programme doit étudier toutes les combinaisons possibles; en mariant les nombres de tours, les nombres de camions, les types de camions, les trajets, le choix des décharges, des carrières. il doit étudier toutes les possiblités

    Ensuite il doit donner les optimums en coûts:
    PT= Q(déblais1)xPU + Q(déblais 2)xPU + Q(remblais1)xPU + nb camions x nb de jours travaillés x prix camion

    les PU dépendent du lieu de carrière, de décharge. En effet, parfois la carrière peut-être plus loin (donc plus de camions) mais les prix sont moins chers.

    Les volumes déblais/remblais peuvent être identiques comme ils peuvent être totalement différents. On pourra choisir plusieurs types de déblais et plusieurs types de remblais.

    Les 8H correspondent à 8h-12h00 13h00-17h00

    Je pose l'hypothèse que mes camions rentrent à vide le soir.; donc cela signifie que certains auront à charger le matin.


    Q inf ou égal à n1*x1*V1 + n2*x2*V2 + n3*x3*V3 + n4*x4*V4 inf à Q+6

    Q correspond au cubage par jour de matériaux à mettre en place ou retirer.
    n = nb de tours par camion
    x = nb de camions
    V = cubage possible de camions 6m3, 8m3, 10m3, 14m3; sachant qu'on peut les combiner entre eux aussi.

    1: à 8h le camion charge à la carrière -> n1=0 ou 1
    2: simple fret déblais
    3: simple fret remblais
    4: double fret.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 8
    Points
    8
    Par défaut
    Bonjour,


    Quelqu'un m'a fourni un fichier très intéressant (valeur_cible3) qui trouve des combinaisons telle que n1*T1 + n2*T2 + n3*T3 + n4*T4 + n5*T5 inf ou égal à une valeur cible.

    On peut choisir la valeur cible que l'on souhaite (temps), les T.
    Le programme cherche toutes les combinaisons (pour le coup, ce sont les "n" tels que ce soit égal à la valeur cible).


    Mais je me suis aperçue qu'il serait plus judicieux d'abord d'utiliser une condition sur les volumes.

    Je m'intéresse tout d'abord uniquement aux déblais et je veux vérifier:

    Q inf ou égal à: n21(D1)*x21(D1)*6 + n22(D1)*x22(D1)*8 + n23(D1)*x23(D1)*10 + n24(D1)*x24(D1)*14 + n41(D1)*x41(D1)*6 + n42(D1)*x42(D1)*8 + n43(D1)*x43(D1)*10 + n44(D1)*x44(D1)*14 inf à Q+6


    n = nb de tours par camion
    x = nb de camions
    Q = quantité à évacuer par jour = 100 m3
    D1 = déblais 1
    6, 8, 10, 14 sont les volumes de camions; ils sont fixes dans mon tableau

    n21(D1), x21(D1), n22(D1), x22(D1), n23(D1), x23(D1), n24(D1), x24(D1), n41(D1), x41(D1), n42(D1), x42(D1), n43(D1), x43(D1), n44(D1), x44(D1) sont des variables qui peuvent aller de 0 à 5.

    Je souhaite avoir toutes les combinaisons de ces nombres pour vérifier les conditions: 100 inf ou égal à: FORMULE inf à 106.


    Je joins le fichier avec le tableau des combinaisons. J'ai essayé de reprendre la macro de valeur_cible3 mais j'avoue que je sèche. Et je n'arrive pas à joindre la personne qui m'a fourni ce fichier.

    Merci à ceux qui pourront me permettre d'avancer.
    Fichiers attachés Fichiers attachés

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 8
    Points
    8
    Par défaut
    je cherche à écrire une macro qui ferait varier mes "n" et "x" de 0 à 5 tel que:


    100 ≤ n1*x1*6 + n2*x2*8 + n3*x3*10 + n4*x4*14 + n5*x5*6 + n6*x6*8 + n7*x7*10 + n8*x8*14 ≤ 106


    je souhaite que sur mon tableau EXCEL, figurent les lignes des combinaisons qui vérifient ces 2 conditions.

    les 6, 8, 10, 14 sont des valeurs fixes.

  16. #16
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Points : 1 394
    Points
    1 394
    Par défaut
    je ne comprends pas pourquoi tu n'utilises pas le solveur. C'est l'outil d'Excel destiné à ça. Un code VBA ne pourra faire que moins bien.

    Eventuellement tu pourras exploiter vba pour qu'il te liste toutes les réponses trouvées par le solveur.

Discussions similaires

  1. Trouver les meilleurs scores de chaque joueur
    Par nycolas dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/08/2009, 06h09
  2. Réponses: 5
    Dernier message: 08/08/2008, 11h34
  3. Où trouver les meilleurs thèmes ?
    Par elitost dans le forum Ubuntu
    Réponses: 3
    Dernier message: 25/09/2007, 14h06
  4. Réponses: 3
    Dernier message: 30/01/2007, 15h10
  5. trouver les combinaisons possibles d'un tableau ?
    Par titoumimi dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 20/09/2006, 20h29

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