【问题标题】:Combinatorial algorithm for shopping cart bundles购物车捆绑的组合算法
【发布时间】:2014-12-04 18:20:34
【问题描述】:

我正在寻找合适的算法来解决以下问题:

给定一组 N 个产品:

{ (p1, q1), (p2, q2), ...., (pN, qN)} 

pj 是产品名称,qj 是数量,大于零 (j = 1..N)。那是一个购物车的模型。

给出了 M 组折扣规则:

{ B1(qp1, qp2, ..., qpN) -> V1
  B2(qp1, qp2, ..., qpN) -> V2
  BM(qp1, qp2, ..., qpN) -> VM }

规则 Bk “消耗” p1 的 qp1 个片段,p2 的 qp2 个片段,...以产生值 Vk,(k=1..M)。该模型捆绑和折扣价值。

我需要找到使用给定产品集最大化 V 总和的规则组合。 规则可以多次使用。

示例:

假设购物车包含一台电视、两部手机和两台蓝光:(tv, 1), (mp, 2), (br, 2)。

假设有三个捆绑包:

  1. 买两间房,立减5元。
  2. 买一台电视和一台mp,10美元。
  3. 买一台电视和一台BR,20美元。

算法应返回 (tv, 1), (br, 1),因为该组合是使购物车中产品的价值 (20$) 最大化的组合。

如果规则是:

  1. 买两间房,立减15元
  2. 买一台电视和一台mp,10美元。
  3. 买一电视一奶,立减 20 美元。

该算法应返回 (br, 2), (tv, 1), (mp, 1),因为该值将是 25$。

【问题讨论】:

    标签: algorithm bundle cart shopping


    【解决方案1】:

    如果蛮力是不可能的,那么在简单的公式上运行求解器作为integer program 将是一种合理的方法。

    【讨论】:

    • 谢谢,如果规则不是针对特定产品而是针对产品类别,例如“任何电视”,您有什么建议?在这种情况下,如何定义整数问题的约束?我想一种解决方案是使用购物车产品生成所有可能的规则组合,并将生成的集合用作整数问题的约束?
    • @anelyu 最通用的解决方案是为每个兼容的(item,product class)对创建0-1个变量,要求item的变量总和为1,并在类变量。
    • 那么究竟如何将其表述为整数程序?
    猜你喜欢
    • 2012-08-27
    • 2015-08-14
    • 2012-02-12
    • 1970-01-01
    • 2021-12-15
    • 2011-10-25
    • 2012-09-14
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多