一、问题分析
1.促销活动
- 基础价格: 原价、临时销售价、会员价、上一活动优惠后价格
- 活动叠加:不叠加、全部叠加、指定叠加
- 优惠券叠加:不叠加、全部叠加、指定叠加
- 排序:在于基于上一活动价格时的活动优先顺序
2.优惠券
- 基础价格: 原价、临时销售价、会员价、上一活动优惠后价格
- 活动叠加:不叠加、全部叠加、指定叠加
- 优惠券叠加:不叠加、全部叠加、指定叠加
- 排序:在于基于上一活动价格时的活动优先顺序
二、假设性分析
- 商品
- 商品a
-- 原价:100
-- 销售价:90
-- 会员价:85 - 商品b
-- 原价:200
-- 销售价:190
-- 会员价:170 - 商品c
-- 原价:100
-- 销售价:90
-- 会员价:85
-- 可与活动叠加
-- 可与券叠加
- 活动
- 活动A
-- 基于销售价
-- 满 200减30
-- ab商品可用 - 活动B
-- 基于会员价
-- 满2减打9折
-- 所有商品可用
-- 可与活动叠加
-- 可与券叠加
- 券
- 券K
-- 基于销售价
-- 8折券
-- 限制一件商品
-- 所有商品可用
-- 不与任何活动叠加
-- 不与任何券叠加
三、商品排列组合
- a 原价:100;销售价:90;会员价:85;总数量1。
- b 原价:200;销售价:180;会员价:170;总数量1。
- c 原价:100;销售价:90;会员价:85;总数量1。
- ab 原价:300;销售价:270;会员价:255;总数量2。
- ac 原价:200;销售价:180;会员价:170;总数量2。
- bc 原价:300;销售价:270;会员价:255;总数量2。
- abc 原价:400;销售价:360;会员价:340;总数量3。
四、活动与券适配情况(基于理论最高单价原价)
- A活动适配
- A1:商品排列组合2
- A2:商品排列组合4
- B活动适配
- B1:商品排列组合4
- B2:商品排列组合5
- B3:商品排列组合6
- B4:商品排列组合7
- K券适配(仅有一张K券时;两张会新增4,5,6组合;三张会新增7组合)
- K1:商品排列组合1
- K2:商品排列组合2
- K3:商品排列组合3
五、根据匹配活动进行构图
- 从此图可与看出
- 所有完全子图包括:[[A1,B1,K3],[A1,B3,K1],[A2,B1,K3]]
- 点对点情况:[[A1,B1],[A1,B2],[A1,B3],[A1,B4],[A1,K1],[A1,K3],[A2,B1],[A2,B2],[A2,B3],[A2,B4],[B1,K3],[B2,K2],[B3,K1]]
- 单点情况:[A1,A2,B1,B2,B3,B4,K1,K2,K3]
- 由于完全子图包含部分点对点和单点;进行剪枝后得到:
- 所有完全子图:[[A1,B1,K3],[A1,B3,K1],[A2,B1,K3]]
- 点对点:[[A1,B2],[A1,B4],[A1,K3],[A2,B2],[A2,B3],[A2,B4],[B2,K2]]
- 由此只有计算出价格最低的一组及为最优优惠组合
六、设计数学算法问题
- 所有商品排列组合
- 排列组合明细与各活动和券适配问题
- 各活动与券包含的商品排列组合方案组合活动子集;活动子集与其他活动子集间的抵触关系构建
- 求出构建图的完全子图以及所有子图
- 从所有子图中找出最优优惠
七、代码实现
待处理。。。