Ensemble des combinaisons de chiffre avec contrainte

kooaal

XLDnaute Nouveau
Bonsoir,

Je travaille sur l'influence du poids des critères sur le choix d'une solution.
pour cela j'aimerais établir l'ensemble des possibilités des poids possibles .
j'ai 5 critères dont les poids doivent être entre 0-1 et la somme des 5 doit être égale à 1.


au niveau du nombre totale de combinaison, ca ressemble à un truc comme ca:
100*(100-c1)*(100-c1-c2)*(100-c1-c2-c3)*(100-c1-c2-c3-c4)


ce qui est compliqué c'est la contrainte sur la somme, j'ai essayé en imbriquant plusieurs boucle for et cela n'a pas réussi.

est ce que quelqu'un aurait une idée sur comment faire ?
j'ai vu des posts sur la combinaison de lettre mais il n'y avait pas cette contrainte totale :/

merci d'avance
 

kooaal

XLDnaute Nouveau
Re : Ensemble des combinaisons de chiffre avec contrainte

MAJ.
J'ai trouvé une solution pour générer des solutions, cependant j'arrive pas gérer les doublons et savoir si ma liste est exhaustive.
 

Pièces jointes

  • eemple xld.xlsm
    57.5 KB · Affichages: 62

Paf

XLDnaute Barbatruc
Re : Ensemble des combinaisons de chiffre avec contrainte

Bonjour

au niveau du nombre totale de combinaison, ca ressemble à un truc comme ca:
100*(100-c1)*(100-c1-c2)*(100-c1-c2-c3)*(100-c1-c2-c3-c4)
cependant j'arrive pas gérer les doublons et savoir si ma liste est exhaustive.

la liste du classeur fourni faisant moins de 1000 combinaisons il serait étonnant qu'elle soit exhaustive puisque il doit y avoir quelques milliards de possibilités!
Quant aux doublons, le choix de partir sur des valeurs aléatoires nécessiterait une bonne "usine à gaz" pour les déterminer.

j'ai 5 critères dont les poids doivent être entre 0-1 et la somme des 5 doit être égale à 1
.

Pour le principe, une proposition de code qui n'attribue aux critères qu'une précision au dixième (centième souhaité si j'ai bien lu entre les lignes)

Code:
Sub kooaal()
x = 4
For p_c1 = 0 To 10
    For p_c2 = 0 To 10
        For p_c3 = 0 To 10
            For p_c4 = 0 To 10
                p_c5 = (10 - p_c1 - p_c2 - p_c3 - p_c4)
                If p_c5 >= 0 Then
                    ActiveSheet.Range("A" & x).Value = p_c1 / 10
                    ActiveSheet.Range("B" & x).Value = p_c2 / 10
                    ActiveSheet.Range("C" & x).Value = p_c3 / 10
                    ActiveSheet.Range("D" & x).Value = p_c4 / 10
                    ActiveSheet.Range("E" & x).Value = p_c5 / 10
                    Maformule = "=sum(A" & x & ":E" & x & ")"
                    Range("F" & x).Formula = Maformule
                    x = x + 1
                End If
            Next
        Next
    Next
Next

End Sub

A+
 

Discussions similaires

Réponses
5
Affichages
818
Réponses
7
Affichages
1 K

Statistiques des forums

Discussions
312 611
Messages
2 090 220
Membres
104 452
dernier inscrit
hamzamounir