2010-10-09 12 views
6

USPS sabit oranlı kutularda sıvı taşıyan bir müşterim var. USPS sabit oranlı kutulara aşina değilseniz, ağırlıktan bağımsız olarak belirli bir hacme sahip kutulardır. Kutuya uyan herhangi bir şey, bir düşük fiyat için gönderilir. İstemcim iki kutu boyutu kullanıyor: orta düz oranlı kutular ve büyük sabit oranlı kutular. Ayrıca, müvekkilim sıvılarını üç şişe boyutunda gönderir: 200ml, 375ml ve 750ml. Üstelik, şişelerin şekli nedeniyle, her kutuya sadece belirli sayıda şişe sığabilir ve bunların şekilleri nedeniyle, her bir kutu ve şişe hacimlerinin hacmini kullanarak hesaplama yoluyla maliyet minimizasyonu hesaplanamaz. Böylece, her kutuda şişelerin çalışabileceği farklı düzenlemeler vardır. Örneğin, bir orta kutu 3 200 ml ve 2 375 ml'lik şişeleri tutabilir veya 4 adet 200 ml'lik şişeleri ve 1 adet 375 ml'lik şişeyi tutabilir ve her bir şişe şişesinin sayısına bağlı olarak başka birçok olası düzenleme vardır. konfigürasyonları tablosunu arayacağım aşağıdaki tablo, her şişenin her bir boyutundaki olası düzenlemelerini listeler. Ayrıca, büyük kutuda 14,50 dolar, ortadaki kutuda ise 10,70 dolar mal oluyor (http://www.usps.com/prices/priority-mail-prices.htm).USPS Düz Hız Kutuları için Maliyet Azaltma Algoritması Gerekiyor

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 

Örneğin, tablodaki ilk satır 5,0,0 söyler ve orta kutusu 5, 200 mi şişeler ve diğer şişe sahip olduğunu gösterir. Yukarıdaki düzenlemelerin tablosunu kullanarak, x 200ml şişeler, y 375 ml şişeler ve z 750 ml şişeler içeren bir dizi nakliye için nakliye maliyetine göre optimal düzenlemenin hesaplanması için bir algoritma bulun. Algoritmanınız sadece minimum maliyeti hesaplamakla kalmaz, aynı zamanda farklı boyut kutularındaki şişelerin en uygun şekilde ayarlanmasını sağlamalıdır. Algoritmanızın SQL ile ifade edildiğini özellikle görmek isterdim, ancak Java, PHP veya C gibi bir prosedür dilinde çözümler kesinlikle yararlı olacaktır.

+0

'knapsack packing' algoritmalarının aranması –

+1

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

+0

Bu bağlantı için çok teşekkürler. Biraz daha okuduktan sonra, sanırım burada bir "Bin Paketleme Sorunu" var. Her ne kadar wikipedia, ambalajlama problemlerinin NP-hard olduğunu söylese de, basit durumumun çözülebilir olması gerektiğini düşünüyorum. – jerryvig

cevap

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

Eğer daha kolay bir alt sorgu yazmaya yapmak için masaya birincil anahtar eklemek gerekir yapılandırmaları belirlemek geri satırları istiyorum.