Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

trouver les meilleures combinaisons

  • Initiateur de la discussion Initiateur de la discussion Emmanuelle95
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

Emmanuelle95

Guest
Bonjour à tous,

Je vais devoir faire du calcul matriciel sous EXCEL, du type:
a1T1 a2T2 a3T3 a4T4 a5T5 inférieur ou égal à une valeur.

avec T des temps, et les a des nombres entiers

Je souhaite trouver toutes les combinaisons des a qui vérifient la condition.
Donc je voudrais les faire incrémenter tous automatiquement jusqu'à une valeur limite disons 50.

Je voulais savoir si cela était possible?


Merci à tous ceux qui prendront le temps de lire ce message et peut-être d'y répondre.
 
Re : trouver les meilleures combinaisons

bonjour

je ne peux malheureusement t'aider sur ce sujet !
mais ce message fera remonter ton fil et si notre ami ROGER2327 passe par ici,
il pourra peut être t'aider !

bonne chance !
 
Re : trouver les meilleures combinaisons

Bonjour Emmanuelle95, salut Roland,

Avec l'énoncé du problème je ne vois pas trop pourquoi il faut un calcul matriciel.

En effet si les temps T1 T2 T3... sont en cellules A1 A2 A3..., entrer en B1 la formule :

=ENT(V/A1)

à tirer vers le bas, V étant la valeur à atteindre.

Pour chaque ligne, les a sont tous les nombres entiers inférieurs ou égaux au nombre en colonne B. A priori ils ne constituent pas une matrice...

A+
 
Re : trouver les meilleures combinaisons

Merci à tous les deux d'avoir pris le temps de répondre.

Job, je t'avoue que je comprends pas comment la formule =ENT(V/A1) va pouvoir me donner toutes les combinaisons possibles de "a" qui vérifient la condition d'infériorité.


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 le nombre de camions dépend du nombre de tours par camion, qui dépend lui-même du temps d'un tour de rotation (qui dépend du volume du camion car temps-chargement=volumecamion/rendementpelle), qui dépend de la distance et du trajet choisi (simple fret, double fret,...).
Le type de camion dépend du nombre de tours par camion et du cubage par jour à déblayer, remblayer.


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=le temps de rotation pour que j'arrive à charge sur le chantier le matin
donc a1=0 ou 1 car j'arrive chargé ou pas.

T2=le temps d'un tour pour du simple fret déblais
T3=le temps d'un tour pour du simple fret remblais
T4=le temps 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 temps varient en fonction des distances,et du volume du camion.


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!!!!
 
Re : trouver les meilleures combinaisons

Bonjour, salut job,

Et si tu mettais un exemple concret en pièce jointe, avec les résultats que tu souhaites obtenir, ne crois-tu pas que ce serait plus facile à comprendre et à te trouver une solution ?
 
Re : trouver les meilleures combinaisons

Re, salut hoerwind,

Job, je t'avoue que je comprends pas comment la formule =ENT(V/A1) va pouvoir me donner toutes les combinaisons possibles de "a" qui vérifient la condition d'infériorité.

Je n'ai jamais prétendu ça, c'était juste pour démontrer qu'il ne s'agit pas de calcul matriciel.

Voici un fichier avec 5 valeurs pour les heures et la valeur cible 5000:00, bien sûr vous pouvez les modifier, mais il faut toujours 5 valeurs.

La macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub CommandButton1_Click()
Dim tp#, cible#, t1#, t2#, t3#, t4#, t5#
Dim m1 As Byte, m2 As Byte, m3 As Byte, m4 As Byte, m5 As Byte
Dim i&, j&, k&, p&, q&, m#, maxi#, tablo() As Byte, n&, mes$
tp = Timer
cible = [B1]
t1 = [A4]: t2 = [A5]: t3 = [A6]: t4 = [A7]: t5 = [A8]
m1 = Application.Min(50, Int(CDec(cible / t1)))
m2 = Application.Min(50, Int(CDec(cible / t2)))
m3 = Application.Min(50, Int(CDec(cible / t3)))
m4 = Application.Min(50, Int(CDec(cible / t4)))
m5 = Application.Min(50, Int(CDec(cible / t5)))
'---Détermination du maximum possible---
For i = 1 To m1
  For j = 1 To m2
    For k = 1 To m3
      For p = 1 To m4
        For q = 1 To m5
          m = i * t1 + j * t2 + k * t3 + p * t4 + q * t5
          If m <= cible Then maxi = IIf(m > maxi, m, maxi)
          If maxi = cible Then GoTo 1
        Next
      Next
    Next
  Next
Next
'---Détermination des combinaisons optima---
1 For i = 1 To m1
  For j = 1 To m2
    For k = 1 To m3
      For p = 1 To m4
        For q = 1 To m5
          m = i * t1 + j * t2 + k * t3 + p * t4 + q * t5
          If m = maxi Then
            ReDim Preserve tablo(5, n)
            tablo(0, n) = i: tablo(1, n) = j: tablo(2, n) = k: tablo(3, n) = p: tablo(4, n) = q
            n = n + 1
          End If
        Next
      Next
    Next
  Next
Next
'---Stockage ou affichage---
[C5:H65536].ClearContents
mes = Chr(10) & "Durée du calcul : " & Int(Timer - tp) & " s" & Chr(10) & Chr(10) & _
  "Maximum atteint : " & Int(CDec(24 * maxi)) & ":" & Format(1440 * maxi - 60 * Int(CDec(24 * maxi)), "00") & Chr(10) & Chr(10) & _
    "Nombre de combinaisons : " & n & Chr(10)
If n > 65000 Then
  ThisWorkbook.Names.Add "Combinaisons", Application.Transpose(tablo)
  MsgBox mes & Chr(10) & "Valeurs stockées dans le nom 'Combinaisons'..." & Chr(10)
Else
  If n Then
    [C5:G5].Resize(n) = Application.Transpose(tablo)
    [H5].Resize(n).FormulaR1C1 = "=RC3*R4C1+RC4*R5C1+RC5*R6C1+RC6*R7C1+RC7*R8C1" 'vérification
    End If
  MsgBox mes
End If
End Sub

Sur mon ordi (2,2 Ghz - 1,00 Go de RAM), la macro s'exécute en 21 secondes.

A+
 

Pièces jointes

Re : trouver les meilleures combinaisons

merci job75 pour les 2 fichiers.

Par contre, j'ai quelques petites question. Je suis débutante en VBA et je ne comprends à quoi sert le #, le &.

Je ne comprends pas non plus à quoi correspondent "mes" et "Chr(10)".

Quel est est le format que tu as voulu utilisé pour la valeur cible et les temps?
Pour moi, la valeur cible correspond à 8h soit 480min et quand j'essaye de changer ça ne fonctionne pas. Dans vérification, ça reste sur 5000h.


If m <= cible Then
If m > maxi Then maxi = m
If maxi = cible Then GoTo 1

je n'arrive pas à comprendre comment fonctionne ces trois lignes.
Je ne comprends pas à quoi correspond maxi si ce n'est pas ta valeur cible.


Merci encore pour ton aide.
 
Re : trouver les meilleures combinaisons

Bonjour Emmanuelle95,


Dans le fichier (3) joint, j'ai mis comme valeur cible 08:00 (8 heures).

De plus je fais maintenant commencer chaque boucle à 0...

A+
 

Pièces jointes

Re : trouver les meilleures combinaisons

merci Job pour ce nouveau fichier.

Après de nouvelles réflexions, 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. Job, j'ai essayé de reprendre ta macro de valeur_cible3 mais je t'avoue que je sèche un peu.

Merci encore pour tous ceux qui prennent le temps de m'aider.
 
Re : trouver les meilleures combinaisons

Bonjour Emmanuelle95,

Pas vraiment compris grand'chose à ce que vous voulez maintenant.

De toute façon c'est bien éloigné du problème initial et de la macro que j'ai fournie (qui recherche des combinaisons sur 5 nombres entiers).

Pourquoi vouloir à tout prix rechercher des combinaisons ?

Il s'agit en fait de LOGISTIQUE, avec une recherche d'optimisation si j'ai bien compris.

Je vous conseille donc de parcourir les livres spécialisés sur cette discipline.

A+

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
Réponses
10
Affichages
2 K
darkfuryo
D
T
Réponses
0
Affichages
314
T
D
Réponses
5
Affichages
1 K
Dimebag
D
T
Réponses
6
Affichages
2 K
M
Réponses
7
Affichages
2 K
monkeymia
M
M
Réponses
7
Affichages
8 K
P
T
Réponses
5
Affichages
3 K
Thibaultt
T
J
Réponses
3
Affichages
1 K
J
K
Réponses
0
Affichages
3 K
K
P
Réponses
3
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…