【问题标题】:random choice, specific distributions, variable applicability随机选择、特定分布、变量适用性
【发布时间】:2016-03-25 19:53:38
【问题描述】:

假设我有个人 1、2、3 和 4,然后我有衬衫款式 A、B、C、D,我想将衬衫款式分发给这些人,这样 25% 的人得到款式 A,25%得到B型,25%得到C型,25%得到D型,但有些人拒绝穿某些款式,这些人以Fs为代表。如何随机将所有人与他们愿意穿的款式进行匹配以获得大致分布?

   A B C D
 1 T F T T
 2 T F F F 
 3 T T T T
 4 T T T F

在这种情况下,这很容易,完全可以达到 25%,只需给每个人不同的风格。然而,我打算把这个问题超越这个简单的情况,我的解决方案必须是通用的。数量或风格、人数和分布都是可变的。有时,分布不可能 100% 准确地创建,预计近似/接近/尽力而为。选择过程应该是随机的,并尽量保持分布。

我对这里的语言非常不了解,我只是在寻找算法。虽然最好能够分发。

【问题讨论】:

    标签: algorithm distribution random-sample


    【解决方案1】:

    当您受到 Fs 的阻碍时找到解决方案是https://en.wikipedia.org/wiki/Assignment_problem。当有很多任务时选择任意任务的一种方法是设置随机成本,其中一种风格可以被人们接受,然后让它找到成本最低的任务。然而,这是否符合随机的任何自然定义并不明显。随机的一个(非常低效的)自然定义是从所有可能的分配中随机选择,直到你得到一个每个人都可以接受的分配。您从中获得的分布可能与您通过设置随机成本然后解决由此产生的分配问题获得的分布不同。

    【讨论】:

    • 现在看分配问题,它非常接近,但 F 是真正的完全拒绝。如果该示例是关于将出租车司机与客户匹配,不仅是因为到达客户的成本更高(b/c of​​ distance),而且在物理上不可能到达客户。是的,在我的规模化案例中,效率低下的问题会非常糟糕,呵呵。不需要真正的随机性。想法:可以将样式复制到正确的分布,然后将人员分配给样式,并可能进行几次传递和/或多次交换。
    • 只要成本之间存在足够大的差异,您就可以处理真正的完全拒绝与分配问题。如果 T 的成本为 0 且 F 的成本为 1,那么如果有可能,分配问题将找到一个总成本为 0 的解决方案,仅使用 Ts。如果它找到的最小成本解决方案不是成本 0,因此它使用了一些 Fs,这意味着没有可用的零成本解决方案仅使用 Ts。
    【解决方案2】:

    您使用的术语“随机匹配”应谨慎使用。我相信,正确的解释是从所有有效解决方案的集合中随机选择,所以基本上如果我们可以列举所有有效解决方案 - 我们可以轻松解决问题。

    您正在寻找一个足够接近的解决方案,因此我们需要更好地定义什么是有效解决方案。我建议定义一些阈值(比如最多 1% 的错误)。

    在您的示例中,有 4 个组(分配有衬衫样式 A/B/C/D 的组)。因此,有 2^4-1 种可能的人原型(喜欢/讨厌 A/B/C/D 中的每一个,假设任何人都喜欢至少一种衬衫款式)。每个原型人口都有给定的人口规模,每个原型可以分配到 4 个组中的一些(1 个或更多)。

    目标是将每个原型的人口分成 4 个组,例如,每个组的大小介于 L 和 H 之间。

    让我们正式化它。

    问题陈述:

    • 表示 A(0001),...,A(1111):15 个原型中每个原型的种群规模
    • 表示G1(0001):分配给G1的A(0001)的大小等

    给定

    • L,H:常量
    • A(0001),...,A(1111):15 个常量

    我们的目标是找到所有整数解

    G1(0001),G1(0011),G1(0101),G1(0111),G1(1001),G1(1011),G1(1101),G1(1111), G2(0010),G2(0011),G2(0110),G2(0111),G2(1010),G2(1011),G2(1110),G2(1111), G3(0100),G3(0101),G3(0110),G3(0111),G3(1100),G3(1101),G3(1110),G3(1111), G4(1000),G4(1001),G4(1010),G4(1011),G4(1100),G4(1101),G4(1110),G4(1111)

    受制于:

    • G1(0001) = A(0001)
    • G2(0010) = A(0010)
    • G2(0011) + G1(0011) = A(0011)
    • G3(0100) = A(0100)
    • G3(0101) + G1(0101) = A(0101)
    • G3(0110) + G2(0110) = A(0110)
    • G3(0111) + G2(0101) + G1(0101) = A(0111)
    • G4(1000) = A(1000)
    • G4(1001) + G1(1001) = A(1001)
    • G4(1010) + G2(1010) = A(1010)
    • G4(1011) + G2(1011) + G1(1011) = A(1011)
    • G4(1100) + G3(1100) = A(1100)
    • G4(1101) + G3(1101) + G1(1101) = A(1101)
    • G4(1110) + G3(1110) + G2(1110) = A(1110)
    • G4(1111) + G3(1111) + G2(1111) + G1(1111) = A(1111)
    • L
    • L
    • L
    • L

    现在我们可以使用整数规划求解器来完成这项工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多