Algoritmo ottimizzazione area 2D

giovedì 04 luglio 2013 - 11.55
Tag Elenco Tags  C#  |  .NET 2.0  |  Visual Studio 2005

AntCiar Profilo | Expert

Salve.

Sto cercando di realizzare un algoritmo per ottimizzare una area 2D.
Mi serve per ottimizzare il consumo di una lamina da dover applicare su dei pannelli. L'informazione certa e immodificabile è il numero dei pannelli e la loro dimensione. Quello che può variare è la quantità di laminato da usare. In fase di acquisto questo viene venduto a metri lineari ed ha una altezza standard di 133 cm. La fortuna è che più metri lineari possono essere acquistati senza tagliare la lastra quindi è come se avessi un unica area composta di misura (100xA) x 133 dove A è un numero intero indicante il numero di metri lineari da acquistare.

La procedura quindi prende in ingresso ad esempio una lista di oggetti che rappresentano i miei pannelli. Questi oggetti oltre ad avere un codice identificativo del pannello e le misure L x H (con L cosidero sempre la dimensione orizontale e con H la dimensione verticale), hanno anche una variabile di tipo Point che indica, al termine dell'ottimizzazione, la posizione del pannello sulla lamina. Nel caso in cui ad esempio l'ottimizzatore posiziona il pannello ruotandolo di 90° rispetto alle indicazioni di partenza, mi va a scambiare i valori di L e H.

Una volta ricevuti in ingresso gli N oggetti pannello, l'algoritmo prende in considerazione una lamina di partenza A=1 e quindi 100 x 133 e prova ad eseguire l'ottimizzazione degli spazi. Se per questa misura i pannelli non riescono ad entrare nella superfice, allora passa a considerare una lamina da 200 x 133 riprovando ad ottimizzare la posizione dei pannelli. Questa iterazione continua fino a che non si arriva al punto che la misura della lamina riesce a contenere tutti i pannelli restituendomi la misura della lamina stessa e valorizzando la variabile Point di ogni pannello.

In questo modo riesco poi a ricavare un disegno della lamina riprodotto sopra la forma dei pannelli in modo da poter procedere al taglio.

Qualcuno ha fatto già una cosa del genere oppure può darmi indicazioni su come procedere?

Grazie
Cristian Barca

willy_80 Profilo | Senior Member

se ho ben capito quello che devi fare è un nesting prova a cercare in rete forse trovi qualche cad free che faccia qualcosa tieni conto però che un nesting serio costa una cifra...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5