【问题标题】:Need Cost Minimization Algorithm for USPS Flat Rate BoxesUSPS 统一邮资箱需要成本最小化算法
【发布时间】:2010-10-09 09:14:09
【问题描述】:

我有一位客户使用 USPS 统一费率箱运送液体。如果您不熟悉 USPS 统一费率箱子,它们是一定体积的箱子,无论重量如何都可以发货。任何装在盒子里的东西,都以低价发货。我的客户使用两种尺寸的盒子:中型统一费率盒子和大型统一费率盒子。此外,我的客户以三种瓶型运送他们的液体:200 毫升、375 毫升和 750 毫升。此外,由于瓶子的形状,每个盒子只能装一定数量的瓶子,并且由于它们的形状,无法通过使用每个盒子的体积和瓶子体积来计算成本最小化。因此,每个盒子中的瓶子都有不同的排列方式,可以工作。例如,一个中号盒子可以容纳 3 200 毫升和 2 375 毫升的瓶子,或者它可以容纳 4 200 毫升的瓶子和 1 375 毫升的瓶子,根据每个尺寸瓶子的数量,还有许多其他可能的安排。下表(我将其称为配置 表)列出了每种尺寸的盒子中每个瓶子的可能排列方式。此外,大盒子的运费为 14.50 美元,中号盒子的运费为 10.70 美元 (http://www.usps.com/prices/priority-mail-prices.htm)。

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

例如,表中的第一行显示 5,0,0,表示中号盒子可以容纳 5 200 毫升的瓶子,不能容纳其他瓶子。使用上面的排列表,找到一个算法来计算关于运输一组 x 200 毫升瓶子、y 375 毫升瓶子和 z 750 毫升瓶子的运输成本的最佳安排。您的算法不仅应该计算最小成本,还应该返回不同尺寸盒子之间瓶子的最佳排列。我特别想看看你用 SQL 表达的算法,但是用 Java、PHP 或 C 等过程语言编写的解决方案肯定也很有用。

【问题讨论】:

  • 查找“背包包装”算法
  • 我相信我有一个可行的解决方案。虽然我的解决方案可能无法提供盒子内瓶子的绝对最佳排列,但我的直觉告诉我它必须非常接近。我已经在 SNIPPLR - 3.ly/QS3U 上发布了代码 - 我打算在这里发布它并附上解释。
  • 您能以对他人有所帮助的方式回答您自己的问题吗?如果你这样做,你可以选择你的作为正确答案。这可能看起来很奇怪,但它是处理此类情况的首选方式。
  • @jerryvig - 很高兴你有一个解决方案:-)。同意@Will:请在此处发布您的答案并将其标记为已回答。这将有助于其他人寻找类似的答案。谢谢! :)

标签: sql optimization


【解决方案1】:
select min(Cost) 
from mytable
where 200ml<=x
and 375ml<=y
and 750ml<=z

如果您希望这些行返回以确定您需要向表中添加一个主键以便更轻松地编写子查询的配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多