2010-10-09 9 views
6

Possiedo un cliente che spedisce liquidi in scatole forfettarie USPS. Se non hai familiarità con le scatole forfettarie USPS, sono scatole di un certo volume spedito indipendentemente dal peso. Tutto ciò che si inserisce nella scatola, viene spedito a un prezzo basso. Il mio cliente utilizza due formati di scatole: le scatole a tariffa media media e le grandi scatole a tariffa fissa. Inoltre, il mio cliente spedisce i suoi fluidi nelle tre misure di flacone: 200 ml, 375 ml e 750 ml. Inoltre, a causa della forma delle bottiglie, solo un certo numero di bottiglie può essere contenuto in ogni scatola e, a causa della loro forma, la minimizzazione dei costi non può essere rilevata calcolando il volume di ciascuna scatola e i volumi della bottiglia. Quindi, ci sono diverse disposizioni delle bottiglie in ogni scatola che possono funzionare. Ad esempio, una scatola media può contenere 3 bottiglie da 200 ml e 2 bottiglie da 375 ml oppure può contenere 4 bottiglie da 200 ml e 1 bottiglia da 375 ml, e ci sono molte altre disposizioni possibili a seconda del numero di ciascuna bottiglia di dimensioni. La tabella seguente, che chiamerò le configurazioni nella tabella, elenca le possibili disposizioni di ciascun flacone in ciascun formato di scatola. Inoltre, la grande scatola costa $ 14,50 e la scatola media costa $ 10,70 per la spedizione (http://www.usps.com/prices/priority-mail-prices.htm).Algoritmo di minimizzazione dei costi per le caselle forfettarie USPS

SQL Table Configurations  
Box Type, 200ml, 375ml, 750ml, Cost 
Medium Flat Box, 5, 0, 0, 10.70 
Medium Flat Box, 4, 1, 0, 10.70 
Medium Flat Box, 3, 2, 0, 10.70 
Medium Flat Box, 0, 3, 0, 10.70 
Medium Flat Box, 4, 0, 0, 10.70 
Medium Flat Box, 3, 0, 0, 10.70 
Medium Flat Box, 2, 0, 0, 10.70 
Medium Flat Box, 1, 0, 0, 10.70 
Medium Flat Box, 0, 2, 0, 10.70 
Medium Flat Box, 0, 1, 0, 10.70 
Large Flat Box, 0, 0, 2, 14.50 
Large Flat Box, 0, 0, 1, 14.50 
Large Flat Box, 4, 3, 0, 14.50 
Large Flat Box, 0, 6, 0, 14.50 
Large Flat Box, 0, 5, 0, 14.50 
Large Flat Box, 0, 4, 0, 14.50 
Large Flat Box, 8, 0, 0, 14.50 
Large Flat Box, 7, 0, 0, 14.50 
Large Flat Box, 6, 0, 0, 14.50 

Ad esempio, la prima riga della tabella dice 5,0,0 e indica che la casella di mezzo può contenere 5 200 ml bottiglie ed altre bottiglie. Utilizzando la tabella delle disposizioni di cui sopra, trovare un algoritmo per calcolare l'accordo ottimale in relazione al costo di spedizione per la spedizione di un set di bottiglie da 200 ml, bottiglie da 375 ml e bottiglie da 750 ml. Il tuo algoritmo non dovrebbe calcolare solo il costo minimo, ma dovrebbe restituire l'arrangiamento ottimale delle bottiglie tra le diverse dimensioni. Sarei particolarmente interessato a vedere il tuo algoritmo espresso in SQL, ma le soluzioni in un linguaggio procedurale come Java, PHP o C saranno sicuramente utili anche.

+0

algoritmi di ricerca 'zaino imballaggio' –

+1

http://en.wikipedia.org/wiki/Knapsack_problem –

+0

Grazie mille per questo collegamento. Dopo aver letto un po 'di più, penso di avere un "problema di imballaggio della scatola" qui. Anche se wikipedia dice che i problemi di imballo di bin sono NP-hard, penso che il mio caso semplice dovrebbe essere solubile. – jerryvig

risposta

1
select min(Cost) 
from mytable 
where 200ml<=x 
and 375ml<=y 
and 750ml<=z 

se si desidera che le righe di nuovo per determinare le configurazioni si avrebbe bisogno di aggiungere una chiave primaria alla tabella per rendere più facile scrivere una sottoquery.

Problemi correlati