gpt4 book ai didi

java - 产品和运输信息的数据结构/设计

转载 作者:搜寻专家 更新时间:2023-11-01 03:17:51 25 4
gpt4 key购买 nike

我需要存储一些关于元素、仓库和运费的数据

例如我的商店有一些元素,不同的仓库存放它们,尽管不一定是所有元素。然后每个仓库可能有不同的运输成本,具体取决于它们离目的地的距离。

举个例子

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
}

然而,计算最佳仓库来完成订单似乎很昂贵。现在,当订单进来时,我从哈希表中查找所有项目,以获取每个项目的所有仓库列表。

然后我可以创建一组所有可能的装运解决方案,然后从中选择最低成本解决方案。这非常慢,因为我必须生成所有可能的运输组合。我有一种预感,有更好的方法可以做到这一点,但似乎无法想出任何办法,是不是我遗漏了什么?

最佳答案

我过去没有设计过这样的解决方案,但这是最有可能的方式,我将按照下面的概述进行。

首先,我将构建一个基本案例,然后我将对其进行改进,而不是提前生成所有可能的运输组合,因为您已经注意到它会很慢。

除了成本最优之外,我们在这里寻找的也是一种快速解决方案,在实际情况下,您还必须考虑 - 客户满意度

您的目标是生成一个 Shipment这基本上是一个 Map<Warehouse,List<Item>>为了一个订单。

您需要另一个表格来告诉您装运费用 - Map<Cost,Shipment> .

基本案例

第 1 步。准备目的地距离内所有仓库的列表,即按仓库距离递增的顺序对仓库进行排序

第 2 步。首先确定距离您的目的地最近的仓库

第 3 步。划掉第 2 步中检测到的所有可以从仓库中完成的项目

第 4 步。对剩余元素重复第 2 步和第 3 步,忽略已查看的仓库

第 5 步。如果没有项目剩余,则停止。

经过以上五个步骤后,您将收到 base_case 货件。

要了解您的基本案例是否是一个足够好的解决方案,您应该已经有了装运试探法来告诉您针对公司仓库布局的特定目的地的大概允许成本以及需要运输的区域你覆盖即在这一点上你应该决定是否需要改进基本案例。

如果需要改进,您可以通过将元素从较短距离的仓库移动到较远距离的仓库来创建另一个新货件,前提是可以节省成本(当然仅适用于更远仓库中的可用元素,并且如果分组元素的数量增加到更远的地方仓库比短的)。

在五个步骤中,如果考虑到客户满意度,您还可以决定在上面的第 3 步 中运送元素。通常认为,快速运送部分元素比让他/她等待大包裹。

此外,我认为除了查找表之外,您不需要任何特定的数据结构。

正如我已经说过的,我没有真正实现过任何东西,这只是我的意见。

希望对您有所帮助!!

关于java - 产品和运输信息的数据结构/设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42060824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com