我需要存储一些与商品、仓库和运输成本相关的数据。
例如,我的商店有一些商品,不同的仓库储存它们,尽管并非所有商品都被储存在每个仓库中。然后,每个仓库可能具有不同的运输成本,这取决于它们与目的地的距离。
因此,举个例子:
warehouse1 : item1, item3, item 5
warehouse2 : item1, item2
warehouse3 : item1, item3, item 4
so if the order consists of (item 1, item 2, item 3)
it can be fulfilled by either warehouse1 + warehouse2, or warehouse3 + warehouse2.
in this case it should choose whichever is cheaper
在这种情况下,我希望最小化使用的仓库数量以履行订单,并尽量降低成本。订单可以包含多个不同类型的物品,但它们都将发往相同的目的地。
我考虑将所有产品存储为类似于以下内容的列表:
class Item{
double price;
List<Integer> warehouses; //id of all the warehouses that carry this item
}
然而,计算最优仓库以满足订单似乎很昂贵。现在,当一个订单到来时,我会在哈希表中查找所有物品,以获取每个物品的所有仓库列表。
然后,我可以创建一个包含所有可能装运方案的集合,然后从中选择最小成本方案。这非常慢,因为我必须生成所有可能的运输组合。我有一种直觉,认为有一种更好的方法来解决这个问题,但似乎想不出任何办法,是否有什么我忽略的东西?