Re : Optimisation d'un taux de chute
Bonjour à tous
Malgré les posts précédents (avec lesquels je suis d'accord, mais bon, vu les capacités de calcul d'excel, rien n'empêche de faire une proposition faisant un peu avancer le schmilblick), je met mon fichier en pièce jointe.
Pour résoudre ce problème, je vois 3 possibilités :
1ère possibilité :
Trouver un modèle mathématique et une méthode d'optimisation adaptée (le solveur d'excel par exemple). N'ayant aucune idée sur le premier, je laisse à d'autres le plaisir de s'exprimer dans ce domaine
.
2nde possibilité :
Donner un tableau comportant toutes les combinaisons intéressantes possibles répondant à la commande demandée (AAAAAB...., AAAABA....), puis calculer pour chaque cas la surface de chutes. Rechercher ensuite la plus petite surface de chutes.
Comme je ne sais pas faire la première partie avec des formules, je laisse à d'autres... En VBA, à mon avis, c'est possible (Je l'ai fait en FORTRAN vers 1985 sur un ordi ridicule..., alors pourquoi pas en VBA. Il y a certainement un nombre max de pièces à ne pas dépasser, en fonction du nombre de lignes ou de colonnes, de la capacité mémoire...).
3ème possibilité :
Donner un tableau comportant des combinaisons possibles répondant à la commande demandée, ces combinaisons étant proposées par excel au hasard, puis calculer pour chaque cas la surface de chutes. Mettre en évidence la surface min de chutes. Garder cette combinaison (copier-collage spécial-valeurs), puis refaire un test. Si le nouveau min obtenu est inférieur au précédent, garder la nouvelle combinaison. Refaire un nouveau test, et ainsi de suite, autant de fois qu'on veut.
Bien sûr, avec cette dernière technique, on n'est absolument pas sûr et certain de trouver la combinaison particulière qui fera économiser une coupe, si le minimum est "étroit". Mais bon, qui ne tente rien n'a rien. On obtient des minimum locaux.
En pièce jointe, donc, un fichier adoptant cette troisième voie.
*Dans celui-ci, il faut dresser la liste des pièces à réaliser (A1:A47). On verra plus tard à automatiser cela, si besoin est. Pour le moment, j'ai différencié des pièces identiques, et ainsi, on n'a pas A, A, A, A, A mais A1, A2, A3, A4, A5. C'est peut être inutile, mais dans le doute..
*excel propose dans un tableau (N13:BH26) et en rouge des combinaisons tirées au hasard. Juste au dessus de ces lignes rouges se trouvent des lignes de calculs intermédiaires, donnant les largeurs cumulées des bandeaux à découper. Tant que cette largeur cumulée est inférieure à la largeur du rouleau (1770 dans l'exemple), c'est OK, sinon, il faut couper le rouleau dans le sens de la largeur, et commencer un nouveau cumul.
En début de ligne rouge se trouve le calcul de la surface de chutes. La valeur min est mise en évidence en orange. Il suffit de faire un copier-collage spécial-valeurs vers le tableau du haut, pour garder cette proposition en mémoire, et recommencer le test ensuite en écrivant n'importe quoi dans une cellule vide. Si le nouveau min mis en évidence est plus intéressant, on garde la nouvelle proposition...
Il m'a fallu une quinzaine d'essais pour obtenir le 4ème min (surface de chutes = 7140000 mm²) correspondant à cet xemple.
On peut bien sûr étendre le tableau N13:BH26 vers le bas pour avoir plus de propositions à chaque fois. Dans ce cas, il faudra aussi étendre la MFC mettant en évidence le min en orange vers le bas.
Bien sûr, il faut vérifier tout cela.
Bien sûr, c'est grandement améliorable.
Bien sûr, cela ne résoud pas tout. Par exemple, cela ne prend pas en compte le cas des coupes faites à différentes longueurs, et non pas toutes à la même longueur (1500 mm dans l'exemple). Autre cas non pris en compte, le cas où deux bandeaux tiennent dans une seule longueur (ex : A de largeur 200 et de longueur 900 et B de largeur 200 et de longueur 500 dans une pièce de 1500).
Perso, je pense qu'avec un peu de VBA, on peut faire beaucoup mieux...
@ plus