Algorithme de Classification pour une matrice binaire

Bonjour tous le monde, je suis nouveau dans ce forum

Prêt pour un challenge (je crois que c'est le premier,après plusieurs recherche dans ce forum, et plusieurs autres) !!

Alors je veux implémenter un algorithme sur une matrice binaire à l'aide d'une macro.

Voici les règles de cet algorithme :

*L’objectif est de réorganiser la matrice d’incidence de façon à créer des blocs (avec le maximum de 1) sur la diagonale

*Chaque bloc représente un groupe de machines et de produits d’une même cellule.

*À chaque colonne et à chaque ligne, on assigne une valeur 2 (à la puissance n en fonction des ligne ou cologne on commence par 2 à la puissance 0) (de droite à gauche pour les colonnes et de bas en haut pour les lignes).

*Chaque ligne et chaque colonne est lue comme un nombre binaire. Celui-ci est converti ensuite à une valeur décimale.

1.Ordonner les lignes dans l’ordre décroissant de leurs valeurs décimales. Dans le cas d’égalité, les ordonner dans l’ordre d’apparition dans la matrice d’incidence

2.L’ordre des lignes est-il le même que lors de l’itération précédente? Si oui, aller à 6. Sinon, aller à 3.

3.Ordonner les colonnes dans l’ordre décroissant de leurs valeurs décimales. Dans le cas d’égalité, les ordonner dans l’ordre d’apparition dans la matrice d’incidence

4.L’ordre des colonnes est-il le même que lors de l’itération précédente? Si oui, aller à 6. Sinon aller à 5

5.Répéter la procédure (en réordonnant à chaque fois les lignes et les colonnes), tant que l’ordre change à chaque itération

6.STOP

Bonne journée !!


je suis disponible pour tout info

Merci d'avance, et bonne journée !

63classeur1.xlsx (25.69 Ko)

Bonjour,

Je suis très dubitatif sur ton sujet utilisant le même fichier que celui que tu m'as proposé en MP (suite au fil de Pwetzou, pour passer du tableau présenté à un tableau équivalent au "tableau4" du sujet précité). Tu reviens ici avec le même fichier, mais une demande entièrement différente ?

Qu'en est-il donc ?

Ta question demanderait par ailleurs à être plus clairement explicitée, et illustrée, car (en ce qui me concerne) je ne vois pas ce que tu veux...

Cordialement.

MFerrand a écrit :

Bonjour,

Je suis très dubitatif sur ton sujet utilisant le même fichier que celui que tu m'as proposé en MP (suite au fil de Pwetzou, pour passer du tableau présenté à un tableau équivalent au "tableau4" du sujet précité). Tu reviens ici avec le même fichier, mais une demande entièrement différente ?

Qu'en est-il donc ?

Ta question demanderait par ailleurs à être plus clairement explicitée, et illustrée, car (en ce qui me concerne) je ne vois pas ce que tu veux...

Cordialement.

Merci pour la réponse MFerrand !

d'ailleurs ce que je vous ai demandé avant c'etait à la fin de calculer les différentes similarité entre les codes B (tableau 4 pour le cas de Pwetzou).(suite à mon fichier)

maintenant j'ai besoin aussi dans le même cas de redéfinir 3 groupe optimal pour les codes B ( à l'aide de cet algorithme, d'ailleurs c'est le rôle de cet algo)

Si il y a autre solutions pour mon deuxième cas, prières de me renseigner et mille fois merci !!!

je suis totalement désolé si je vous ai ennuyer !!

merci d'avance !!

Cdt


en fin de compte l'algorithme doit afficher un résultat comme dans l'image ci-joint.

finale

bonjour,

sur base de ce que j'ai compris

39zaudix.xlsm (39.23 Ko)

Là je décroche !

Tant mieux pour toi si h2so4 [salut !] a compris ce que tu veux... mais moi ça me laisse perplexe !

En attendant, j'ai traité ton fichier tel que demandé précédemment (en passant tes appellations A1 à A9 et B1 à B9 à : A01 à A09 et B01 à B09, de façon à maintenir une cohérence lors du tri...).

Je le dépose sur le sujet de Pwetzou (que je vais essayer de retrouver), car il me paraît plus en rapport avec qu'avec le présent sujet...

Cordialement.

h2so4 a écrit :

bonjour,

sur base de ce que j'ai compris

Bonjour,

Merci beaucoup pour votre aide h2so4

Voici des image numéroté définissant étape par étape !

s'il vous plaît, ça serai mieux qu'il soit avec des boutons (pour comparaison )

Bouton 1 : Calcul des valeurs décimal des lignes. (du bas au haut)

Bouton 2 : Ordre des ligne. (du haut au bas)

Bouton 3 : Calcul des valeurs décimal des Cologne. (du droite à gauche)

Bouton 4 : Ordre des Cologne. (du gauche à droite)

à chaque fois je refais manuellement à l'aide des boutons !

Merci d'avance !!

Cdt

4 finale 3 2 1

bonjour,

boutons ajoutés

calcul : recalcul des valeurs décimales (sur 3 cellules car nombre maximum par cellule,- avec précision suffisante - , = 2^31) par ligne et par colonne

tri lignes: tri des lignes en ordre décroissant sur les valeurs décimales des lignes

tri colonnes : tri des colonnes en ordre décroissant sur les valeurs décimales des colonnes

all-in-one : combinaison des étapes ci-dessus, jusqu'à avoir une même ligne ou une même colonne entre 2 itérations

35zaudix.xlsm (39.23 Ko)

Je crois qu'il me semble saisir le mécanisme (il me semble seulement ) mais pas encore la finalité de l'opération...

Si on fait varier la valeur attribuée à chaque ligne ou colonne de 2^0 à 2^n, on n'a pas de perte de précision jusqu'à 2^48, la somme de 2^0 à 2^48 est égale à 2^49-1 [562 949 953 421 311], et on reste donc dans la limite des 15 chiffres significatifs. Donc jusqu'à 49 colonnes ou lignes. Au-delà on dépasse les 15 chiffres, donc perte potentielle chaque fois que l'on dépasse pour une valeur ou une addition...

h2so4 a écrit :

bonjour,

boutons ajoutés

calcul : recalcul des valeurs décimales (sur 3 cellules car nombre maximum par cellule,- avec précision suffisante - , = 2^31) par ligne et par colonne

tri lignes: tri des lignes en ordre décroissant sur les valeurs décimales des lignes

tri colonnes : tri des colonnes en ordre décroissant sur les valeurs décimales des colonnes

all-in-one : combinaison des étapes ci-dessus, jusqu'à avoir une même ligne ou une même colonne entre 2 itérations

Merci pour la réponse h2so4 ,

s'il vous plaît je ne voit pas ou sont les boutons , pourriez vous m’éclaircir !!

Merci d'avance !

Cdt


MFerrand a écrit :

Je crois qu'il me semble saisir le mécanisme (il me semble seulement ) mais pas encore la finalité de l'opération...

Si on fait varier la valeur attribuée à chaque ligne ou colonne de 2^0 à 2^n, on n'a pas de perte de précision jusqu'à 2^48, la somme de 2^0 à 2^48 est égale à 2^49-1 [562 949 953 421 311], et on reste donc dans la limite des 15 chiffres significatifs. Donc jusqu'à 49 colonnes ou lignes. Au-delà on dépasse les 15 chiffres, donc perte potentielle chaque fois que l'on dépasse pour une valeur ou une addition...

Merci pour la réponse Mferrand !

donc c'est à dire je ne peux pas réaliser la macro sur une matrice de 50colonnes*60ligne ?

Merci d'avance !

RE,

S'il vous plaît est-ce-qu'il y a une autre méthode pour regrouper les B d'une façon optimal en fonction des similarité entre eux selon le fichier, en "3 groupe ou 4" !!!

Merci d'avance !

bonsoir,

voici la version avec les boutons.

les calculs et les tris proposés fonctionnent avec le nombre de colonnes et de lignes du fichier fourni. ils ne fonctionneront plus dès que le nombre est > 93.

26zaudix.xlsm (39.23 Ko)
h2so4 a écrit :

bonsoir,

voici la version avec les boutons.

les calculs et les tris proposés fonctionnent avec le nombre de colonnes et de lignes du fichier fourni. ils ne fonctionneront plus dès que le nombre est > 93.

Merci pour la réponse h2so4 !!

je ne vois pas ou sont les bouton le fichier me donne l'image ci dessous !

Merci d'avance !

Cdt

finale

bonsoir,

je ne comprends pas les boutons me semblent bien présent dans le fichier fourni.

18zaudix.xlsm (44.88 Ko)
h2so4 a écrit :

bonsoir,

je ne comprends pas les boutons me semblent bien présent dans le fichier fourni.

Merci pour votre réponse h2so4 !!

quand je j'utilise la macro ça me donne autre résultat que je veux !

j'ai joint le même fichier avec des petite explications ! (feuille 2 la première et après on passe à la feuille 1) "j'ai mis les calcules en bas pour la feuille 2 et à gauche pour la feuille 1.

et s'il vous plaît , je suis totalement désolé si je vous ai ennuyer !

je le veux avec ces bouton;

pour définir les changement sur tout calcul et triage !

le cas de la feuille 2

Calcul ligne : Calcul des valeurs décimal des lignes. (du bas au haut)

triage ligne : Ordre des ligne. (du haut au bas)

le cas de la feuille 1

Calcule Cologne : Calcul des valeurs décimal des Cologne. (du droite à gauche)

triage Cologne : Ordre des Cologne. (du gauche à droite)

S'il vous plait dans une seul feuille, les 2 c'est juste pour explication !

Merci d'avance !! et mille fois merci et pardon si je vous ai ennuyer !!

Cdt

15classeur1.xlsx (48.97 Ko)

Il m'est venu une idée !

Mais tu n'obtiendras des "ilôts" marqués que si une spécialisation des machines par groupes de produits existe...

Cordialement.

MFerrand a écrit :

Il m'est venu une idée !

Mais tu n'obtiendras des "ilôts" marqués que si une spécialisation des machines par groupes de produits existe...

Cordialement.

Bonjour,

Merci bcp MFerrand pour la réponse ,

S'il vous plait est-ce-que le bonton tri passe par les quatres etapes de l'algorithme ! ,

ça n'affiche pas des calcul mais ça m'a l'air que ça marche (j'ai pas pu faire les calcules manuellement )

je l'ai testé sur une petite matrice ça fonctionne très bien !!

et ce que vous pouvez ajouter 2 indicateurs :

1.pour afficher combien de fois il a fait le triage des ligne.

2..pour afficher combien de fois il a fait le triage des Cologne.

(juste pour comparaison )

et s'il vous plait comment je peut obtenir des îlots à la fin ! ( j'ai pas bien saisi comment je peux faire une spécialisation des machines par groupes de produits existe) ,

pour mois les machines c'est les B , et les produit A (je veux que je puisse obtenir des îlots de B) !

Merci d'avance ! et mille fois merci !!!

Cdt

Bonjour,

Ce que tu appelles un "îlot" est une intersection de liens ou relations entre machines et produits. Si ces relations sont marquées et exclusives d'autres, cela produira des "îlots" marqués. Sinon la dispersion sera plus importante... On peut comparer à un graphique en nuage de points... Il y a un certain degré de relation puisque la répartition le long de la diagonale est assez net et la dispersion n'apparaît que sur un côté...

Nb- Je pensais que c'était l'inverse pour produits et machines... , mais cela n'a pas d'incidence.

La méthode utilisée correspond à ton calcul, la seule différence étant qu'elle n'utilise pas de valeurs numériques pour classer, mais des valeurs texte. La valeur affectée à une ligne ou une colonne du tableau est une chaîne de "a" si 1 dans tableau ou "z" si 0. Si on gardait les 0 et 1 on aurait un nombre binaire dont la valeur décimale est celle que tu calcules. Il est transposé en texte (qui ne présente pas les mêmes limitations de stockage que les nombres), et a étant inférieur à z le classement devient ascendant au lieu de descendant.

A partir de là, les valeurs lignes sont insérées dans une colonne supplémentaire et on opère par tri directement sur la feuille sur cette colonne (qui est ensuite effacée). Puis valeurs colonnes insérées dans une ligne supplémentaire, tri et effacement de la ligne.

Je n'avais pas de moyen simple de tester à quel moment le classement obtenu ne bougerait plus... mais j'ai noté que pour ton grand tableau il était atteint (sauf erreur) au 2e tour (alors que pour des petits il semble définitif au 1er tour). L'opération est donc répétée 3 fois...

Si j'ai d'autres idées sur la façon d'obtenir des "îlots" plus nets, je reviens... Il me semble cependant que c'est une analyse qualitative qui occulterait certaines relations pouvant être considérées comme "exceptionnelles", qui permettrait à une règle générale de se dégager nettement...

Cordialement.

Merci Mferrand !

en tous cas ça marche trés bien !

Merci bcp ! Problème rêglé à 80% en tout cas !! c'est l'important

Encore mille fois merci !

Cdt

Rechercher des sujets similaires à "algorithme classification matrice binaire"