【问题标题】:optaplanner for calculating best discountoptaplanner 计算最佳折扣
【发布时间】:2014-01-23 11:52:33
【问题描述】:

我希望使用 optaplanner 来帮助计算购买商品列表(例如购物车)的用户的最佳折扣。

这听起来是个好主意吗?有人试过吗?任何帮助将不胜感激。

考虑:

  • 我有一个用户想要购买许多不同的商品
  • 此客户可享受多种促销折扣,包括:部分商品的百分比折扣和买一送一

    -

  • 每个折扣可能仅适用于部分商品
  • 每个项目只能应用一个促销活动
  • 但每个促销活动可能适用于多个项目。相同的百分比折扣可能适用于多件商品
  • 在不同的订单中应用每个促销活动可能会导致不同的总折扣

目标:我想确定按特定顺序应用的促销活动会给用户带来最大的折扣。

我查看了 drools-expert(考虑蛮力选项)和 optaplanner。使用 optaplanner,我看不到如何执行以下操作:

  • 考虑到促销可能适用于多个项目
  • 从促销中获得的折扣可能会有所不同,具体取决于购物篮的状态(即已应用哪些促销)。

【问题讨论】:

    标签: shopping-cart drools rules optaplanner


    【解决方案1】:

    这样的事情应该可以工作。它允许在多个项目上使用相同的促销。添加一个买三买一需要的硬约束

    class ItemAssignment {
    
      Item item;
    
      @PlanningVariable(nullable = true, ...)
      Promotion promotion;
    
    }
    

    为只能使用一次的促销活动添加硬性约束。添加软约束以激活需要购买 3 件商品的促销活动。我会在该软约束中执行 insertLogical(new Discount),因此其他规则可以变得足够聪明,以了解哪些促销已被应用。

    我有点怀疑元启发式是否是解决此问题的最佳方法,假设您的问题非常小。除非有人一次购买超过 10 件商品,否则我认为蛮力(在 optaplanner 中实现)或分支与绑定(尚未在 optaplanner 中实现)可能是更好的选择...

    【讨论】:

    • 非常感谢您的回复杰弗里。我会看看发布我的发现。
    猜你喜欢
    • 2020-03-13
    • 1970-01-01
    • 2021-11-05
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    相关资源
    最近更新 更多