Pour le calepinage 2D, on a utilisé plusieurs heuristiques pour résoudre un problème un peu plus restrictif que le calepinage 2D, car les coupes doivent être de type guillotine (de part en part d'une pièce, car pas de coupe à 90° au milieu d'un panneau possible avec une scie circulaire). Par rapport au programme disponible sur par ex. github, on a rajouté la possibilité d'utiliser des chutes et aussi de regrouper des pièces identiques en donnant la préférence à des coupes horizontales ou verticales (empiler les pièces). Il y a bien sûr aussi la notion de grain.
En choisissant un ordre de tri au départ, l'algorithme essaie de placer les pièces en commençant en haut à gauche et essayant une coupe horizontal d'abord, puis une verticale ou le contraire, ... en calculant 30 à 40 solutions possibles.
Une solution "optimale" est alors choisie parmi les solutions remplissant les critères suivants:
- minimum de pièces non placées,
- minimum de panneaux utilisés,
- chute la plus longue,
- chute la plus large,
- et finalement, le plus petit nombre de chutes (indicateur pour une meilleure coupe).
La solution est "souvent" très bonne, parfois moins bonne.
Pour la version 2.0 d'OCL, l'algorithme va changer un peu, on aura plus besoin de choisir l'ordre des pièces. Il y aura deux options d'optimization moyen et avancé, ainsi que le choix d'empiler les pièces, c'est tout! On calculera plusieurs ordre de pièces pour un total de 48 à 1152 solutions. La sélection de la meilleure solution ce fait sur la base de deux critères:
- une mesure de compacité (ou taux de remplissage), on cherche à éviter les trous dans le calepinage et à faire en sorte que les chutes se trouvent le plus à droite et le plus bas possible (si l'origine est en haut à gauche).
- le nombre de chutes minimale (moins c'est mieux, même si la surface est plus grande - on préfère en général une chute de 1m^2 plutôt que 9 chutes de 0.1m^2.
En imprimant les étiquettes depuis le calepinage (supposons commun aux deux projets pour l'example), ça nous posera le problème de devoir ajouter une fonction qui décide à quel projet une pièce appartient afin d'utiliser le bon format d'étiquette.
En utilisant des tags par projet, on pourra l'imprimer sur l'étiquette sans devoir distinguer entre deux formats.
Il ne faut pas oublier que OCL est un plugin dans SketchUp et pas le contraire. La vue du stock des panneaux est globale, plusieurs modèles SketchUp se partagent le même stock.
Merci eljub !!
PhilippeCichon il ne faut pas être désolé. Ce cours et son livre devraient être mentionnés dans les FAQ de LADB!
PatrickG Dans le récapitulatif, les pièces sont groupées par matière et dimension avec la surface et le volume du chaque groupe (trois décimales en m^2 et m^3).
Pour le calepinage 1D, on a utilisé deux algorithmes:
La performance des algorithmes dépend du nombre de pièces et du nombre de pièces différentes et bien sûr aucune garantie de trouver la solution optimale. On sait que si OPT(L) est le nombre optimal de barres FFD trouvera une solution utilsant au maximum 11/9*OPT(L) + 6/9 de barre. Vous me direz que si OPT(L) = 1, alors la solution trouvée par FFD sera peut être 2, ce que représente le double (ou 100%). Ben oui! mais c'est pas moi qui les ai fait ces problèmes, c'est le bon Dieu!
Pour le calepinage, nous n'avons pas implémenté de préférence du style "regrouper toutes les pièces de même longueur sur une même barre" pour ne pas pénaliser la recherche d'une bonne solution.