程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Python中的背包(什么?)

发布于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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)