发布于2020-01-14 22:13 阅读(1305) 评论(0) 点赞(30) 收藏(0)
头衔很抱歉;坦白说,我什至不知道我的问题是否与背包问题有关。正在阅读一些有关遗传算法的资料,并发现了这个“背包问题”。
我需要有人向正确的方向踢我:
我正在为工厂开发python Web应用程序。因此,在工厂中,他们有一个称为订单的东西。订单包含一个或多个产品。有一个不匹配的概念,实际上是一个负数,用于指示特定产品在订单中出现的数量(以数量计)要少多少。
考虑一个矩阵,其中列为产品,行为订单。假设所有订单(行)都包含所有产品(列)。同样,有8个订单,订单1至订单8和5产品,产品1至产品5。
假设,现在我对产品1的匹配为6。我需要在所有8个订单中随机地将数字6均分。因此,显然2个订单不会有不匹配的数量。然后,我对产品2的不匹配数为9。我将不匹配数尽可能平均地随机分配给8个订单。每个产品都会这样。现在开始,当我正在将所有订单中的不匹配情况随机分配时,我需要确保将每个订单的不匹配总数(对于该行而言)保持在最小水平。这意味着订单中的总不匹配数必须为最低数量。
|-----|-----|-----|-----|-----|
| P1 | P2 | P3 | P4 | P5 |
-------------------------------
O1 | 2 | 1 | 1 | 0 | 2 | 6
-------------------------------
O2 | 1 | 2 | 1 | 1 | 1 | 6
-------------------------------
O3 | 2 | 2 | 1 | 0 | 1 | 6
-------------------------------
O4 | 1 | 2 | 0 | 1 | 1 | 5
-------------------------------
6 7 3 2 5
你明白了吗?我需要用Python编写代码,而且我不知道从哪里开始。
因此,OP的问题有两个要求:随机和均匀。不过这有点矛盾,因此我想“真正随机”是不可能的。
这是我的尝试
以OP为例,我们有4个订单和5个产品。从第一个产品开始,我们将随机划分数字,因此每个产品至少将具有floor(6/4)= 1个不匹配项。然后,我们将剩余的2个不匹配项随机分配给2个产品。
|-----|
| P1 |
-------
O1 | 2 | 2
-------
O2 | 1 | 1
-------
O3 | 2 | 2
-------
O4 | 1 | 1
-------
6
接下来,我们照顾第二个产品。同样,我们首先随机分配数字,因此每个乘积至少将具有floor(7/4)= 1个不匹配项。现在,对于剩下的3个失配,为了使其尽可能均匀,我们首先将它们分配给O2和O4,因为上次它们的失配比其他的少1个。对于剩下的1个不匹配项,我们再次将其随机分配给一种产品。
|-----|-----|
| P1 | P2 |
-------------
O1 | 2 | 1 | 3
-------------
O2 | 1 | 2 | 3
-------------
O3 | 2 | 2 | 4
-------------
O4 | 1 | 2 | 3
-------------
6 7
对所有产品重复此过程。
使用这种方法,您可以保证它尽可能的均匀(最大的区别是1),而且您会得到一定程度的随机性
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/221440/7ed7f42cf59b5b7644bd/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!