zYr 发表于 2019-1-20 11:56:26

外卖/网购如何凑单、拼单、拆单

设多人一起定餐或者网购,一共要购买若干商品,条件包括:
1.必选类商品:最终的总清单必须包含的商品。
2.可选类商品:N选M,必须要买但不全买。
3.凑单类商品:可买可不买,为了凑满减。
4.满减:满X元减Y元、满U元减V元等多档,每单计算一次。
5.运费:每单计算一次。
6.可选和凑单类需考虑捆绑与互斥的情况。例如:A与B是替代产品,只买其中一个;A与C是互补产品,B与(C或D)是互补产品,买A就要买C,买B就要买C或/和D。
7.可选类和满减需考虑叠加的情况。例如:可选类商品先从A、B二选一,再从C、D、E三选二;红包可以在满减后叠加使用。
8.需考虑不同满减计算的时机与顺序。例如运费前运费后。
求解使得总金额最少的包含所有必买商品的购物清单,以及下单策略(分几单下、每单买什么)。

KeyTo9_Fans 发表于 2019-1-20 12:42:12

虽然我不知道如何回答楼主的问题,

但是我模仿楼主,出了一道类似的问题:

https://bbs.emath.ac.cn/thread-15699-1-1.html

zYr 发表于 2019-1-20 16:21:13

想出这样一个办法
单数从1开始往上加 最多加到商品数必选+可选商品数 因为不可能为凑单的商品单独开一单
然后就是排列组合 把K件商品 扔到L个单里 有几种分法
接下来为每种分法的L单里的每一单凑单 凑到高于本单商品总价的最低满减金额(若已超过最高一档满减门槛就不凑了)
这L单的每一单都有凑与不凑两种选择 再排列组合一次
按满减规则计算排列组合列出的每一种可能的消费金额 取最小值

zeroieme 发表于 2019-1-20 17:21:10

整数规划…………
页: [1]
查看完整版本: 外卖/网购如何凑单、拼单、拆单