如何设计算法来分配重叠集的成员,以便根据特定条件对其进行排序

时间:2019-04-01 19:06:13

标签: algorithm sorting variable-assignment

我需要写一个算法(伪代码很好)来完成以下问题。

我们有一家超市杂货店的清单,例如3,000家。我们对每家商店的客流量排名得分从1到3,000。商店由索引号标识。

我们有多个商店清单(所有商店都是上述3,000家总清单的成员),用于我们希望开展的各种营销活动;每个商店只能展示一个广告系列。任务是将营销活动分配给商店,以便:

  • 每个广告系列都从其需求列表中获得尽可能多的商店。
  • 这些运动获得尽可能好的客流量排名,并且最好的脚步存储将在各运动之间尽可能公平地共享

最多可以分配10个营销活动,并且它们之间可以有任意数量的重叠。

我已经创建了一种如下所示的算法。这可以成功地平衡人流等级,但是因为它以人流顺序进入商店清单,所以我们可能没有足够的商店供不应求。

当前方法如下:

  1. 按客流量排序主存储列表
  2. 按优先级排列广告系列列表(虽然没有什么区别,但还是没有关系)
  3. 接受广告系列列表(1)-是否具有所需的所有商店?如果是,请转到下一个广告系列并重复。如果不是,那么此商店是否是广告系列列表(1)的成员?如果是这样,则将活动1分配给该商店,然后移至下一个商店。如果不是,请转到下一个广告系列,然后返回到步骤3的开头。
  4. 重复此操作,直到分配完所有广告系列或商店用完为止。

此方法为不同的广告系列提供了完美的客流份额,但是由于每个广告系列在任何给定的广告系列列表和主商店列表之间的重叠都不同,因此广告系列有可能在店面耗尽之前就耗尽它想要的所有商店,即使有足够的商店-按步行顺序遍历它们时也不够,就像这种方法一样,将它们平均分配。

代码不相关,因为我会将正确的流程转换为JS。

使用当前算法的预期结果:

想象一下,广告系列1和2都想要100家商店。我们绘制了一个维恩图,该图表明考虑到所有重叠,对于1和2中的每一个,有足够的存储来满足100个存储。

所需结果:每个广告系列分配了100家商店。给定分配时,人流等级尽可能均等。

实际结果:广告系列1获得100家商店,广告系列2获得84家商店,客流量排名相同。

从Excel输出看,可以将商店从1交换到2,这样2可以得到100个商店,而1可以从只能携带活动1的商店充值。

0 个答案:

没有答案