+ -
当前位置:首页 → 问答吧 → 求算法

求算法

时间:2011-11-30

来源:互联网

求算法:
1、一个订单有多个品种,一个品种对应一个存储区域。也就是说,一个订单的品种可能跨越多个存储区域,需要工作人员跑多个地方。
2、为了提高效率,一般将多个订单组合成一个大单,这样只要跑一次,就可以完成多个订单的配货任务
3、设有n个订单,每m单组成一个大单(n为1000左右,m为10左右),求算法,尽量将涉及相同区域订单组合到一个大单里,减少跨区域的量

作者: rightyeah   发布时间: 2011-11-30

这个只能做到近似最优
想做最优的貌似是NP的

作者: keeya0416   发布时间: 2011-11-30

是的 ,所以我只想要一个近似算法 ,“尽量”而已

作者: rightyeah   发布时间: 2011-11-30

如果只是合并而已,我觉得就是O(n)的问题

做一个区域单:

哈希表,每个区域一个Key,Value是品种明细列表。
遍历一遍订单,就得到了区域单


约束条件里的m没有任何意义。

区域单是否要合并,取决于跨区域代价。
可能问题在这里。

所以,你的题目应该再重新换方式描述一遍。

作者: superdullwolf   发布时间: 2011-11-30

不是区域单 ,设计的流程不是先提总,再播种的模式。而是把若干个订单组合成一个摘果任务,如果是1000个订单,可能会形成100个左右的摘果任务,这样可以减少摘果的工作量。每个摘果任务完成后,再按订单播种。由于每个大单只有10个左右的订单,所以播种箱位只需要10来个。不同的大单,可以并发操作。这样可以减少播种区域的工作量。
这个流程其实是当当网的发货模式。只是当当网可能没有考虑组合大单时的优化问题

作者: rightyeah   发布时间: 2011-11-30

把横跨区域最大的单做基础单
然后在剩下的订单里找几个与基础单匹配度最高的几个单与这个放一组

作者: keeya0416   发布时间: 2011-11-30

如果一个单的区域是这个基础单的区域的子集,按完全匹配算
不在这个基础区域内的其他区域越多匹配度就越低

作者: keeya0416   发布时间: 2011-11-30

热门下载

更多