sql - USPS 统一费率盒需要成本最小化算法

标签 sql optimization

我有一个客户用 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)的解决方案肯定也很有用。

最佳答案

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

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

关于sql - USPS 统一费率盒需要成本最小化算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896712/

相关文章:

mysql - 通过将行旋转为动态列数在 MySQL 中创建摘要 View

mysql - 嵌套 select = null then else 的情况

c++ - 如何使用#pragma 在 G++ 中启用优化

java - 加速链表?

gcc - 预取示例?

mysql - 短路UNION? (如果第一个子句没有结果,只执行第二个子句)

c# - 使用参数调用存储过程时遇到问题

最佳选择 Action 来执行任务的算法

php - SQLite查询运行缓慢,需要优化帮助

sql - 使用内部联接在 View 上启用全文搜索