|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Emmanuelle PAULIN Inscription : mars 2010 Messages : 40 ![]() |
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 |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
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... |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Emmanuelle PAULIN Inscription : mars 2010 Messages : 40 ![]() |
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? |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
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). |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Emmanuelle PAULIN Inscription : mars 2010 Messages : 40 ![]() |
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!!!! |
|
|
00
|
|
|
#6 | |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
Citation:
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). |
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Emmanuelle PAULIN Inscription : mars 2010 Messages : 40 ![]() |
réflexion sur le sujet en pièce jointe.
|
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : mars 2010 Messages : 23 ![]() |
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. |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : novembre 2006 Messages : 1 441 ![]() |
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 |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Emmanuelle PAULIN Inscription : mars 2010 Messages : 40 ![]() |
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. |
|
|
00
|
|
|
#11 |
|
Membre éprouvé
![]() Benjamin Genèze Inscription : avril 2008 Messages : 339 ![]() |
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. |
|
|
00
|
|
|
#12 | |
|
Membre Expert
![]() Inscription : novembre 2006 Messages : 1 441 ![]() |
Citation:
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 |
|
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Emmanuelle PAULIN Inscription : mars 2010 Messages : 40 ![]() |
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. |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Emmanuelle PAULIN Inscription : mars 2010 Messages : 40 ![]() |
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. |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Emmanuelle PAULIN Inscription : mars 2010 Messages : 40 ![]() |
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. |
|
|
00
|
|
|
#16 |
|
Membre éprouvé
![]() Benjamin Genèze Inscription : avril 2008 Messages : 339 ![]() |
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. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com