java – 产品和运输信息的数据结构/设计
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 产品和运输信息的数据结构/设计,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2342字,纯文字阅读大概需要4分钟。
内容图文
![java – 产品和运输信息的数据结构/设计](/upload/InfoBanner/zyjiaocheng/781/8fc6db8cc7664c84b06a9728436a6754.jpg)
我需要存储一些有关物品,仓库和运输成本的数据
例如,我的商店有一些商品,不同的仓库存货,但不一定是所有商品.然后,每个仓库可能会有不同的运输成本,具体取决于它们与目的地的距离.
举个例子
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
}
然而,计算满足订单的最佳仓库似乎很昂贵.现在,当订单进入时,我查找哈希表中的所有项目,以获取每个项目的所有仓库的列表.
然后我可以创建一套所有可能的装运解决方案,然后从中选择最小成本解决方案.这非常慢,因为我必须生成所有可能的运输组合.我有预感有更好的方法来做到这一点,但似乎无法想出任何东西,有什么我想念的吗?
解决方法:
我过去没有设计过这样的解决方案,但这是最可能的方式,我将按照下面的说明进行操作.
首先,我将建立一个基础案例,然后我将改进它而不是做 – 事先生成所有可能的运输组合,因为你已经注意到它会很慢.
我们在这里看到的是一个快速的解决方案,除了成本是最优的,在实际情况下,你将不得不考虑 – 客户满意度.
您的目标是生成一个基本上是Map< Warehouse,List< Item>>的货件.订单.
您需要另一张表来告诉您货件的成本 – 地图<成本,货件>.
基本情况
步骤1.准备所订购目的地距离的所有仓库清单,即按仓库增加距离的排序仓库
第2步.首先确定离您目的地最近的仓库
步骤#3.删除在步骤#2中检测到的可以从仓库中完成的所有项目
第4步.对剩余的项目重复步骤#2和步骤#3,忽略已经看过的仓库
第5步.如果没有任何项目停止.
经过以上五个步骤后,您将获得base_case货件.
要知道您的基本情况是否是一个足够好的解决方案,您应该已经有一个货运启发式方法来告诉您公司仓库布局的特定目的地的大致允许成本以及您所覆盖的区域,此时您应该决定是否需要改进基础案例.
如果需要改进,您可以通过将物品从较短距离的仓库移动到较长距离的仓库来创建另一个新货物,只要这样可以节省成本(当然只对于更远的仓库中的可用物品以及如果在更远的仓库中增加的物品数量比较短的一个).
在五个步骤中,如果客户满意度较高,您可能还会决定在上面的步骤#3中运送物品.通常认为通过快速交付部分物品比让他/她等待大件包裹更方便客户.
此外,我认为除了查找表之外,您不需要任何特定的数据结构.
正如我已经说过的那样,我没有实现任何真实的东西,这只是我的意见.
希望能帮助到你 !!
内容总结
以上是互联网集市为您收集整理的java – 产品和运输信息的数据结构/设计全部内容,希望文章能够帮你解决java – 产品和运输信息的数据结构/设计所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。