1

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

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

考虑:

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

    -

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

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

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

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

1 回答 1

0

像这样的东西应该工作。它允许在多个项目上使用相同的促销。添加买 3 送 1 需要的硬约束

class ItemAssignment {

  Item item;

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

}

为只能使用一次的促销添加硬约束。添加软约束以激活需要购买 3 件商品的促销活动。我会在那个软约束中做一个 insertLogical(new Discount) ,这样其他规则就可以变得足够聪明,知道哪些促销已经被应用了。

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

于 2014-01-24T08:00:20.113 回答