Swappa : Uni / Ricerca Operativa - PNL - Palle inscatolate - 12.01.09
Creative Commons License

Torna alla pagina di Ricerca Operativa


 :: Ricerca Operativa - PNL - Palle inscatolate - 12.01.09 ::

Testo del problema

Un’azienda produttrice di addobbi natalizi produce palle colorate per gli alberi di Natale.
L’ufficio vendite ha studiato un kit di palle colorate di vari colori e dimensioni da vendere in un’unica scatola. Si tratta di progettare in modo ottimale la scatola, in modo che possa contenere tutto il kit e che occupi il minor volume possibile. Per motivi di facilità di trasporto, la scatola deve essere a forma di parallelepipedo.
Formulare il problema, classificarlo e risolverlo con i dati del file PALLE.TXT.

Dati

Il kit è così composto:

  Tipo        Colore    Raggio    Numero
Ciliegina     Rosso       2          3
Classica      Rosso       4          2
Candida       Bianco      3          3
Palla di neve Bianco      4          4
Stellina      Azzurro     2          3
Luminosa      Trasparente 3          2

Il raggio è espresso in centimetri.

Formulazione del problema

Dati

Variabili

Funzione obiettivo

Bisogna minimizzare il volume della scatola:
min x1 * x2 * x3 [cm^3]

Vincoli

Abbiamo bisogno poi di due vincoli che impongano che ogni pallina sia interamente contenuta nella scatola, quindi che la sua distanza dalle pareti sia maggiore uguale al raggio:

Linghizzazione del problema

! esercizio - Palle inscatolate; 
model: 

sets: 
pallina /1..14/: rag; 
dimensione /1..3/: x; 
coordinata (pallina,dimensione): y; 
endsets 

data: 
enddata 

! funzione obiettivo; 
min = x(1) * x(2) * x(3); 

! vincoli di non-sovrapposizione tra palline; 
@for(pallina(i): 
     @for(pallina(k) | k #GT# i: 
          @sum(dimensione(j): (y(i,j) - y(k,j))^2) >= (rag(i) + rag(k))^2  
     ) 
); 

! vincoli di contenimento nella scatola; 
@for (pallina(i): @for(dimensione(j): y(i,j) >= rag(i)) ); 
@for (pallina(i): @for(dimensione(j): y(i,j) <= x(j) - rag(i))); 

end

Torna alla pagina di Ricerca Operativa

(Printable View of http://www.swappa.it/wiki/Uni/RO-PNL-12gen2009)