Salut, salut,
Je dois réaliser un solver du problème de packing 2d.
Pour ceux qui connaissent pas, j'expose une des formes du problème (celle que je dois résoudre).
On dispose d'une boite container de longueur L et largeur l et de n objets rectangulaires de longueur L1...Ln et de largeur l1...ln. On cherche la meilleure combinaison d'objets tel que le remplissage du container soit optimal (on veut maximiser la surface utilisée). On peut placer les objets dans le container de manière orthogonal (parallèle au coté du container, donc pas d'objets en travers).
L'idée qu'on nous a proposé c'est de partager le container en bande, et de remplir de manière optimal chaque bande. Effectivement, si les bandes sont remplies de la meilleure des facons, on répondra au problème (maximisation de la surface utilisée).
Bon, partant de ce principe là, j'ai trouvé comment remplir de façon optimal chaque bande via l'algorithme de sac à dos. Mais je me heurte à un autre problème. C'est le choix des largeurs de bandes. Pour le moment, je teste toutes les largeurs de bande en les plaçant dans un arbre et dès qu'un remplissage partiel est moins optimal que la solution trouvée j'arrête ce remplissage et je teste un autre remplissage. Mais tester toutes largeurs de bandes sur n objets c'est bien trop long.
Donc y'a-t-il moyen de trouver une heuristique pour choisir directement les largeurs de bandes les plus efficaces (pas forcément les plus optimales, mais qui se rapprochent de la meilleure solution) ?
Merci !
Partager