在零售业的供应链管理中, 我们经常会遇到一些资源分配问题, 例如商品的供需平衡, 销售利润分摊, 运输成本分摊等. 常见的分配方式有平均分和按权重(比例)分. 在某些应用场景下, 我们需要体现分配方案的"公平性", 那么如何科学地定义公平性, 又如何计算公平的分配方案? 本文从合作博弈论的角度思考如何解决这些实际问题.
1. 合作博弈
考虑某个自营电商的销售场景: 电商平台(例如网易严选)从供应商采购商品, 顾客在线下单之后, 商品会通过承运商(例如顺丰)把商品送达顾客手中. 在这个销售过程中, 供应商, 电商平台和承运商三方合作从而获得销售利润. 那么我们如何"公平地"把利润分配给三方?
合作博弈论关注的核心问题就是如何对合作产生的利润(或成本)用科学的方式进行分配. 我们用二元组 表示合作博弈(Cooperative Game), 其中记号 的解释如下:
- – 参与博弈的局中人(Player)的集合
- – 局中人集合的任意子集称为联盟(Coalition)
- – 联盟的效用函数. 可以及理解为联盟 合作产生的总收益.
问题. 给定 , 如何把总收益 公平地分配给每个局中人?
不同应用场景对公平性的定义可能是不同的, 因此研究合作博弈论的一个核心问题就是研究不同分配策略的性质.
2. 分配策略
为方面描述, 我们先引入如下记号:
- – 分配向量(Allocation Vector), 局中人 得到的收益为
- – 联盟 分配到的收益之和, 即
下面我们介绍一些分配策略.
2.1 The Core
Core是分配向量的集合. core必须满足如下条件:
- .
说明
- 条件1保证所有的收益都被分配了. (没人贪污)
- 如果任意一个联盟 想要独立门户, 即, 不跟其他人( )合作, 那么条件2保证 得到的总收益不会超过他们当前分配到的收益之和. 换句话说, 条件2保证联盟 没有动机独立门户. (不合作不会赚得更多)
- core有可能是空集. 如果非空, 它包含的分配向量一般不是唯一的.
2.2 The Kernel1
Kernel也是分配向量的集合, 它从谈判的角度来定义公平性. 考虑两个局中人
,
, 给定分配向量
, 定义
站在局中人 的角度来看, 如果他不愿意跟 合作, 最多能额外获得的收益即为 . 因此, 我们可以把 理解为 对 的谈判能力. 如果 , 则说明 相对 有可能在谈判上有优势.
kernel必须满足如下条件:
- ,
- 如果 , 那么 ,
说明
- 条件2确保局中人 分配到的收益比自己"单干"不会少.
- 把满足条件1和条件2的分配向量称为imputation.
- 条件3说如果 对 谈判有优势, 那么 对 的谈判是免疫的(因为 分配到的收益等于自己单干的收益, 即使不合作也没有损失). 简而言之, 条件3确保任意两个不同的局中人 和 在谈判地位上是平等的.
- Kernel非空.
2.3 The Nucleolus2
Nucleolus与前面的概念有所区别, 它是分配向量(不是集合). 我们先给出一些记号:
- , – 代表联盟 不合作能额外获得的收益
- – 是 构成的向量. 设 的分量按照从大到小的顺序排列
考虑两个分配向量 , , 我们说** 按词典序(lexicographically)比 小**, 当存在下标 使得 且 , .
Nucleolus 是按字典序最小的imputation(满足kernel的条件1和条件2).
说明
- Nucleolus的定义比较抽象. 我们用比较浅显的话来解释: nucleolus分配的思想是为了使最贫穷的局中人分配到的财富最大化, 其中"财富的多少"可以理解为公平性, 越贫穷则越不公平.
- nucleolus kernel
- 如果core非空, 则nucleolus core
2.4 The Shapley Value3
它的计算公式为:
说明
- 给定联盟 , 局中人 相对 的边际贡献为 .
- 如果随机分配联盟, 那么 是 落入集合 的概率.
- 综上所述, 为局中人 边际贡献的期望.
3. 应用案例
下面我们列举几个在电商业务中可能应用的案例.
3.1 需求分配
假设有 个仓库, 它们对同一个商品的需求分别为 . 当前该商品的采购入库总量为 . 当 时, 我们该如何分配需求?
为什么不建议按比例分配?
如果按比例分配, 当其中某个仓库 的需求非常大时, 它分到大量商品, 而另外的仓库B可能只分到极少商品. 这样一来 仓库可以销售较长时间, 相反 仓库可能很快就发生缺货. 长此以往, 仓库B由于需求总量少, 可能长期无法满足, 因而一直缺货状态.
考虑什么分配方式?
详情可以参考 《破产问题 (The Bankruptcy Problem)》
3.2 车辆装车
考虑把 种商品运输到一个仓库中, 每种商品的单位体积分别是 , 商品的运输量分别是 . 当前车辆可运输的总体积为 . 当 时, 我们该如何分配商品的运输量?
(令 , 这个问题是不是就转化成上面的需求分配问题了?)
3.3 成本分摊
设客户购买了三件商品, 其售价如下表所示,
商品名称 | 售价 |
---|---|
毛巾 | 20 |
手套 | 60 |
帽子 | 120 |
并使用了一张满150减20的优惠券, 因此他实际支付的订单费用是180元(不考虑运费). 那么平摊到每个商品的购买成本是多少?
为什么不建议按比例分配?
为了凑够优惠券的条件, 实际上只需要购买帽子和手套即可, 所以毛巾对凑单的实际贡献是0. 从这个角度来看, 毛巾不应该享受优惠, 它的购买成本应该按原价20计算比较合理.
考虑什么分配方式?
试试Shapley Value?
3.4 促销活动评估
考虑如下的场景: 某电商在同一天上线多个促销活动. 促销活动的集合记为 . 每个促销活动对应了一些商品(同一个商品允许参加多个活动). 对任意活动的组合 , 我们可以计算其参加活动商品的总销量 . 因此, 表示当天所有活动商品的总销量. 请问如何计算每个活动 带来的销量 ?
考虑什么分配方式?
留给读者思考.
参考文献
M. Davis and M. Maschler. “The kernel of a cooperative game”, Naval Research Logistics Quarterly, 12 (3): 223–259, 1965. ↩︎
D. Schmeidler. “The nucleolus of a characteristic function game”, SIAM Journal on Applied Mathematics, 17 (6): 1163–1170, 1969. ↩︎
Lloyd S. Shapley. “A Value for n-person Games”. In Kuhn, H. W.; Tucker, A. W. Contributions to the Theory of Games. Annals of Mathematical Studies. 28. Princeton University Press. pp. 307–317, 1953. ↩︎