博弈论在零售业务中的应用

在零售业的供应链管理中, 我们经常会遇到一些资源分配问题, 例如商品的供需平衡, 销售利润分摊, 运输成本分摊等. 常见的分配方式有平均分和按权重(比例)分. 在某些应用场景下, 我们需要体现分配方案的"公平性", 那么如何科学地定义公平性, 又如何计算公平的分配方案? 本文从合作博弈论的角度思考如何解决这些实际问题.

1. 合作博弈

考虑某个自营电商的销售场景: 电商平台(例如网易严选)从供应商采购商品, 顾客在线下单之后, 商品会通过承运商(例如顺丰)把商品送达顾客手中. 在这个销售过程中, 供应商, 电商平台和承运商三方合作从而获得销售利润. 那么我们如何"公平地"把利润分配给三方?

合作博弈论关注的核心问题就是如何对合作产生的利润(或成本)用科学的方式进行分配. 我们用二元组 ⟨ N , v ⟩ \langle N, v \rangle N,v表示合作博弈(Cooperative Game), 其中记号 N , v N, v N,v的解释如下:

  • N = { 1 , 2 , … , n } N=\{1, 2, \ldots, n\} N={1,2,,n} – 参与博弈的局中人(Player)的集合
  • S ⊆ N S\subseteq N SN – 局中人集合的任意子集称为联盟(Coalition)
  • v : 2 N → R v: 2^N \rightarrow \mathbb{R} v:2NR – 联盟的效用函数. v ( S ) v(S) v(S)可以及理解为联盟 S S S合作产生的总收益.

问题. 给定 ⟨ N , v ⟩ \langle N, v \rangle N,v, 如何把总收益 v ( N ) v(N) v(N)公平地分配给每个局中人?

不同应用场景对公平性的定义可能是不同的, 因此研究合作博弈论的一个核心问题就是研究不同分配策略的性质.

2. 分配策略

为方面描述, 我们先引入如下记号:

  • x = ( x 1 , x 2 , … , x n ) x=(x_1, x_2, \ldots, x_n) x=(x1,x2,,xn) – 分配向量(Allocation Vector), 局中人 i i i得到的收益为 x i x_i xi
  • x ( S ) x(S) x(S) – 联盟 S S S分配到的收益之和, 即 x ( S ) = ∑ i ∈ S x i x(S) = \sum_{i\in S}x_i x(S)=iSxi

下面我们介绍一些分配策略.

2.1 The Core

Core是分配向量的集合. x ∈ x\in xcore必须满足如下条件:

  1. x ( N ) = v ( N ) x(N) = v(N) x(N)=v(N)
  2. x ( S ) ≥ v ( S ) , ∀ S ⊆ N x(S) \geq v(S), \forall S\subseteq N x(S)v(S),SN.

说明

  1. 条件1保证所有的收益都被分配了. (没人贪污)
  2. 如果任意一个联盟 S ⊂ N S\subset N SN想要独立门户, 即, 不跟其他人( N \ S N\backslash S N\S)合作, 那么条件2保证 S S S得到的总收益不会超过他们当前分配到的收益之和. 换句话说, 条件2保证联盟 S S S没有动机独立门户. (不合作不会赚得更多)
  3. core有可能是空集. 如果非空, 它包含的分配向量一般不是唯一的.
2.2 The Kernel1

Kernel也是分配向量的集合, 它从谈判的角度来定义公平性. 考虑两个局中人 i i i, j j j, 给定分配向量 x x x, 定义
s i j ( x ) = max ⁡ S { v ( S ) − x ( S ) ∣ i ∈ S , j ∉ S , S ⊆ N } . s_{ij}(x) = \max_{S}\left\{v(S) - x(S) \mid i\in S, j\not\in S, S\subseteq N\right\}. sij(x)=Smax{v(S)x(S)iS,jS,SN}.

站在局中人 i i i的角度来看, 如果他不愿意跟 j j j合作, 最多能额外获得的收益即为 s i j ( x ) s_{ij}(x) sij(x). 因此, 我们可以 s i j ( x ) s_{ij}(x) sij(x)理解为 i i i j j j的谈判能力. 如果 s i j ( x ) > s j i ( x ) s_{ij}(x) > s_{ji}(x) sij(x)>sji(x), 则说明 i i i相对 j j j有可能在谈判上有优势.

x ∈ x\in xkernel必须满足如下条件:

  1. x ( N ) = v ( N ) x(N) = v(N) x(N)=v(N)
  2. x i ≥ v ( { i } ) x_i \geq v(\{i\}) xiv({i}), ∀ i ∈ N \forall i\in N iN
  3. 如果 s i j ( x ) > s j i ( x ) s_{ij}(x) > s_{ji}(x) sij(x)>sji(x), 那么 x j = v ( { j } ) x_j = v(\{j\}) xj=v({j}), ∀ i , j ∈ N , i ≠ j \forall i,j \in N, i\neq j i,jN,i=j

说明

  1. 条件2确保局中人 i i i分配到的收益比自己"单干"不会少.
  2. 把满足条件1和条件2的分配向量称为imputation.
  3. 条件3说如果 i i i j j j谈判有优势, 那么 j j j i i i的谈判是免疫的(因为 j j j分配到的收益等于自己单干的收益, j j j即使不合作也没有损失). 简而言之, 条件3确保任意两个不同的局中人 i i i j j j在谈判地位上是平等的.
  4. Kernel非空.
2.3 The Nucleolus2

Nucleolus与前面的概念有所区别, 它是分配向量(不是集合). 我们先给出一些记号:

  • e ( S ) = v ( S ) − x ( S ) e(S) = v(S) - x(S) e(S)=v(S)x(S), ∀ S ⊆ N \forall S\subseteq N SN – 代表联盟 S S S不合作能额外获得的收益
  • θ ( x ) = ( e ( S ) ) S ∈ 2 N \theta(x) = (e(S))_{S\in 2^N} θ(x)=(e(S))S2N – 是 e ( S ) e(S) e(S)构成的向量. θ ( x ) \theta(x) θ(x)的分量按照从大到小的顺序排列

考虑两个分配向量 x x x, y y y, 我们说** x x x按词典序(lexicographically)比 y y y小**, 当存在下标 k k k使得 θ k ( x ) < θ k ( y ) \theta_k(x) < \theta_k(y) θk(x)<θk(y) θ i ( x ) = θ i ( y ) \theta_i(x) = \theta_i(y) θi(x)=θi(y), ∀ i < k \forall i < k i<k.

Nucleolus 是按字典序最小的imputation(满足kernel的条件1和条件2).

说明

  1. Nucleolus的定义比较抽象. 我们用比较浅显的话来解释: nucleolus分配的思想是为了使最贫穷的局中人分配到的财富最大化, 其中"财富的多少"可以理解为公平性, 越贫穷则越不公平.
  2. nucleolus ∈ \in kernel
  3. 如果core非空, 则nucleolus ∈ \in core
2.4 The Shapley Value3

它的计算公式为:

x i = ∑ S ⊆ N \ { i } ∣ S ∣ ! ( ∣ N ∣ − ∣ S ∣ − 1 ) ! ∣ N ∣ ! ( v ( S ∪ { i } ) − v ( S ) ) , ∀ i ∈ N . x_i =\sum_{S\subseteq N\backslash \{i\}}\frac{|S|!(|N|-|S|-1)!}{|N|!}\left(v(S\cup\{i\})-v(S)\right), \quad \forall i\in N. xi=SN\{i}N!S!(NS1)!(v(S{i})v(S)),iN.

说明

  1. 给定联盟 S S S, 局中人 i i i相对 S S S的边际贡献为 v ( S ∪ { i } ) − v ( S ) v(S\cup\{i\}) - v(S) v(S{i})v(S).
  2. 如果随机分配联盟, 那么 ∣ S ∣ ! ( ∣ N ∣ − ∣ S ∣ − 1 ) ! ∣ N ∣ ! \frac{|S|!(|N|-|S|-1)!}{|N|!} N!S!(NS1)! i i i落入集合 S S S的概率.
  3. 综上所述, x i x_i xi为局中人 i i i边际贡献的期望.

3. 应用案例

下面我们列举几个在电商业务中可能应用的案例.

3.1 需求分配

假设有 n n n个仓库, 它们对同一个商品的需求分别为 d 1 , d 2 , … , d n d_1, d_2, \ldots, d_n d1,d2,,dn. 当前该商品的采购入库总量为 E E E. 当 E < d 1 + d 2 + … + d n E<d_1+d_2 + \ldots + d_n E<d1+d2++dn时, 我们该如何分配需求?

为什么不建议按比例分配?

如果按比例分配, 当其中某个仓库 A A A的需求非常大时, 它分到大量商品, 而另外的仓库B可能只分到极少商品. 这样一来 A A A仓库可以销售较长时间, 相反 B B B仓库可能很快就发生缺货. 长此以往, 仓库B由于需求总量少, 可能长期无法满足, 因而一直缺货状态.

考虑什么分配方式?

详情可以参考 《破产问题 (The Bankruptcy Problem)》

3.2 车辆装车

考虑把 n n n种商品运输到一个仓库中, 每种商品的单位体积分别是 v 1 , v 2 , … , v n v_1, v_2, \ldots, v_n v1,v2,,vn, 商品的运输量分别是 s 1 , s 2 , … , s n s_1, s_2, \ldots, s_n s1,s2,,sn. 当前车辆可运输的总体积为 E E E. 当 E < ∑ i = 1 n v i s i E < \sum_{i=1}^n v_is_i E<i=1nvisi时, 我们该如何分配商品的运输量?

(令 d i = v i s i d_i=v_is_i di=visi, 这个问题是不是就转化成上面的需求分配问题了?)

3.3 成本分摊

设客户购买了三件商品, 其售价如下表所示,

商品名称售价
毛巾20
手套60
帽子120

并使用了一张满150减20的优惠券, 因此他实际支付的订单费用是180元(不考虑运费). 那么平摊到每个商品的购买成本是多少?

为什么不建议按比例分配?

为了凑够优惠券的条件, 实际上只需要购买帽子和手套即可, 所以毛巾对凑单的实际贡献是0. 从这个角度来看, 毛巾不应该享受优惠, 它的购买成本应该按原价20计算比较合理.

考虑什么分配方式?

试试Shapley Value?

3.4 促销活动评估

考虑如下的场景: 某电商在同一天上线多个促销活动. 促销活动的集合记为 N = 1 , 2 , … , n N={1,2,\ldots, n} N=1,2,,n. 每个促销活动对应了一些商品(同一个商品允许参加多个活动). 对任意活动的组合 S ⊆ N S\subseteq N SN, 我们可以计算其参加活动商品的总销量 v ( S ) v(S) v(S). 因此, v ( N ) v(N) v(N)表示当天所有活动商品的总销量. 请问如何计算每个活动 i i i带来的销量 x i x_i xi?

考虑什么分配方式?

留给读者思考.

参考文献


  1. M. Davis and M. Maschler. “The kernel of a cooperative game”, Naval Research Logistics Quarterly, 12 (3): 223–259, 1965. ↩︎

  2. D. Schmeidler. “The nucleolus of a characteristic function game”, SIAM Journal on Applied Mathematics, 17 (6): 1163–1170, 1969. ↩︎

  3. 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. ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值