我有一位客户在网上订购了3件商品。 然后我有每个项目的商店列表,按最便宜的交货率排序。 例如,我有5家商店。然后有5 ^ 3 = 125种商店组合。
所以
Item 1 - store 1, store 9, store 4, store 3, store 2
Item 2 - store 9, store 10, store 1, store 2, store 5
Item 3 - store 5, store 1, store 4, store 8, store 7
因此,对于第1,2和3项,商店1,9,5的交付率最低。 但你可以看到我可以从商店9和商店2发送第1项和第2项,我可以从商店1发送所有这三项。
发送包裹时,我们可能会使用具有特定尺寸的包装盒,也许从商店9发送商品1和商品2比从商店1发送商品1和从商店9发送商品2便宜。
这同样适用于商店1.也许将商店1中的所有3件物品放在一个盒子里比从商店1号,9号和5号分开发送更便宜。
现在我正在考虑检查包含2个或更多商品的所有商店的包装箱运送率,并尝试确定最低价格。
知道有时顾客可以订购10件以上的产品,组合数量将是5 ^ 10 +,这是巨大的。
我想知道是否有更快捷的方法可以找到最优惠的价格。
答案 0 :(得分:0)
我接近这个的方法是使用整数编程,定义两组变量。
第一组变量是二进制变量,用于指示项是否从特定商店发送。在您的示例中,将有15个这样的二进制变量,每个项目 - 商店配对一个。我们可以为项目i调用二进制变量并存储s x_is
。
另一组变量将是我们是否从商店s
发送任何商品的二进制指示符。在您的示例中,将有9个这样的二进制变量(您有商店1,2,3,4,5,7,8,9和10)。我们可以为商店y_s
调用二进制变量。
然后,您需要添加约束,以确保只有当我们从该商店(也称为x_is = 1
)发货时才从商店(也称为y_s = 1
)发送商品i。您可以通过为所有项目i和存储s添加约束x_is <= y_s
来实现此目的。
现在,您可以构建一个目标,分别指示从商店x提供商品i的成本(这些是x_is
变量上的系数)以及从商店s
运送包裹的成本(这些是y_s
变量上的系数)。您的目标是尽量减少这一目标。
您可以使用任意数量的不同编程语言来解决这些模型。 Excel Solver包中最简单的一个,尽管在所有主要编程语言中都有整数编程求解器。