Here, an other piece of C# software I’m managing to solve : a 2D cutting optimizer. It’s a bit hard to explain, so a picture is worth a thousand words.
the source (tgz - 16kB)
Each red block (labelled number (width, height)
) is a piece of wood, glass the client want to obtain.
The aim is to minimize the cutting operations,
the pieces the aren’t used and to fit the master piece.
The idea is to use a genetic algorithm to find the best cutting way. An simple heuristic a possible but it’s quite to easy and cannot find the realy best solution. Oh, I’ve not writed the fitness function at the moment.
I use Cairo (-r:Mono.Cairo
) for drawing, it’s very powerful and easy (if you know how
OpenGL works).
Encore un peu de C# (avec Mono évidemment). Ça concerne un petit logiciel que j’essaie de réaliser. Il s’agit d’un logiciel permettant d’optimiser la coupe d’éléments rectangulaires et leur agencement pour par exemple : un vitrier, un menuisier, ... L’image ci-dessus présente l’état actuel des choses, il génère un diagramme de découpe de manière aléatoire (ce qui est déjà pas mal).
La suite est d’utiliser un algorithme génétique afin de trouver la meilleure solution. Je n’ai pas encore commencer cette étape.
Sinon, ce joli dessin est réalisé avec Cairo, un outil très efficace en matière de dessin 2D et assez simple (si on a déjà des connaissances d’OpenGL par exemple).