Bonjour à tous,
Je vous expose mon problème : je cherche à programmer la génération de plans d'expériences (matrices) dans un cas bien particulier.
Je vais me baser sur un exemple concret pour vous présenter ma problématique :
Je dispose de 3 variables (par exemple : X, Y et Z) pouvant prendre respectivement : 3, 4 et 5 modalités.
Une combinaison des modalités de ces 3 variables est appelée produit, par exemple ( X=1 , Y=4 , Z=1 ), ou encore : ( X=2 , Y=2 , Z=4 ).
Une planche est un ensemble de k produits. Prenons par exemple : k=3. On aura alors par exemple comme planche :
On a ensuite N individus (prenons par exemple N=10) et à chaque individu est associé un nombre g de planches (par exemple g=4).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 X Y Z 2 2 5 1 3 2 2 2 4
Ainsi, on aura au final comme matrice/plan d'expériences quelque chose de la forme :
Voilà, j'espère que jusqu'ici je suis assez claire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Individu Planche Produit | X Y Z 1 1 1 | 2 4 1 1 1 2 | 3 2 4 1 1 3 | 1 2 5 1 2 1 | 2 1 3 1 2 2 | 1 4 1 1 2 3 | 1 2 1 1 3 1 | 3 3 2 ... ... ... 10 3 3 | 1 2 3 10 4 1 | 3 1 5 10 4 2 | 2 4 1 10 4 3 | 1 1 5
Maintenant, il y a également des conditions à appliquer.
Tout d'abord, aucune planche ne peut être composée de 2 mêmes produits. Ensuite, aucune planche sur l'ensemble des individus ne peut exister en double.
Enfin, il faut que chaque individu voit un même nombre de fois (approximativement bien sûr) toutes les paires possibles de modalités de deux variables.
Et c'est ce dernier point qui me pose le plus de problèmes à programmer. Pour l'instant j'ai commencé par générer tous les produits possibles (stockés dans une matrice P0), et je pioche des produits un par un dans cette matrice P0 en "comptant" les apparitions des couples de modalités pour faire en sorte de maintenir l'équilibre. Sauf qu'il arrive que je tombe sur un cas impossible (!) où quel que soit le produit qu'on ajoutera, cela "cassera" l'équilibre. Dans un tel cas j'avais pensé à "recommencer" toute la sélection de produits pour l'individu concerné, mais alors mon algorithme met énormément de temps (sachant qu'il peut y avoir 1000 individus).
Donc voilà, si quelqu'un à des pistes intéressantes sur le sujet ou des astuces de programmation pour ce genre de problème, cela m'intéresse grandement
De plus, si vous souhaitez que je donne plus d'explications, n'hésitez pas à me le faire savoir.
Merci d'avance
Cordialement,
A.D.
Partager