optaplanner用于计算最佳折扣

时间:2014-01-23 11:52:33

标签: shopping-cart drools rules optaplanner

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

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

考虑:

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

    -

  • 每项折扣仅适用于某些项目
  • 每个项目只能应用一个促销
  • 但每个促销活动可能适用于多个项目。相同的百分比折扣可用于多个项目
  • 以不同的顺序应用每个促销可能会产生不同的总折扣

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

我看过两个drools-expert(考虑蛮力选项)和optaplanner。使用optaplanner我不知道如何做到以下几点:

  • 考虑到促销可能适用于多个项目
  • 促销时获得的折扣可能会因应用购物篮的状态(即已经应用了哪些促销活动)而有所不同。

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效。它允许在多个项目上使用相同的促销。添加buy-3-get-1需要的硬约束

class ItemAssignment {

  Item item;

  @PlanningVariable(nullable = true, ...)
  Promotion promotion;

}

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

我有点怀疑,如果metaheuristics是最好的方法,假设你的问题非常小。除非有人一次购买超过10件物品,否则我认为暴力(在optaplanner中实施)或分支和绑定(在optaplanner中尚未实施)可能是更好的选择......