127 commentaires
Martin Müller

Pour le calepinage 1D, on a utilisé deux algorithmes:

  • un algorithme de programmation dynamique qui résoud le problème de la somme des sous-ensembles lorsque le nombre de pièces est < 80 (valeur un peu arbitraire). Ce problème est assez similaire au Bin Packing 1D dans la mesure où on cherche à maximiser une somme de longueurs de pièces dans une barre de longueur donnée. Afin de ne pas être trop glouton, l'algorithme décide avoir trouvé une solution lorsqu'au moins 95% de la barre est pleine.
  • lorsque le nombre de pièces est >= 80 et/ou après 5 secondes de temps de calcul, on passe à une heuristique First Fit Decreasing - FFD (trié par ordre descendant de longueur, puis assigné à la première barre possible). C'est avec cette variante qu'on trouvera la solution [3, 3], [2, 2, 2], [2] au problème mentionné dans ma première réponse.

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.

Martin Müller

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.
Martin Müller

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.

Martin Müller

Merci, c'est l'encouragement de tous qui porte le projet.

Martin Müller

C'était certainement un très bon tour à l'époque. Aujourd'hui, sauf si tu es amateur de veilles machines !?

Martin Müller
( Modifié )

Ne pas oublier le backup de SketchUp (à régler dans Préférences -> Général), ce fameux fichier .skb qui contient généralement une version antérieure du dessin!
Simplement modifier l'extension de .skb -> .skp.

Martin Müller

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.

Martin Müller
( Modifié )

Merci eljub !!

Martin Müller

In a future version, labels will be renamed to tags, because of the risk to confound them with adhesive labels!

Martin Müller

Je suis bien jaloux!

par mdfpedro il y a 4 ans
Martin Müller
( Modifié )
Je suis d'accord

Ajouté dans la version 1.9.5

Martin Müller
( Modifié )

Merci pour le rappel!

Martin Müller
( Modifié )

PhilippeCichon il ne faut pas être désolé. Ce cours et son livre devraient être mentionnés dans les FAQ de LADB!

Martin Müller

Merci!

Martin Müller
( Modifié )

Hi,

Strange behavior, could you please send the .skp file to opencutlist@lairdubois.fr ?

Thanks

Martin Müller

Pas de surépaisseur si tu ponces/râcles assez (épaisseur du tissu + epoxy), mais en général la couleur du bois sera plus clair après ponçage.

Réparation d'un skiff

Martin Müller
( Modifié )

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).

par Lucien le Forestier il y a 4 ans
Martin Müller
Je ne suis pas d'accord

genus = genre

par Boris Beaulant il y a 4 ans
Martin Müller
Je suis d'accord

Pas de thylles, c'est du chêne rouge!

par Capludi il y a 6 ans
Martin Müller
Je ne suis pas d'accord

Probablement pas du chêne rouge.