在零售業的供應鏈管理中, 我們經常會遇到一些資源分配問題, 例如商品的供需平衡, 銷售利潤分攤, 運輸成本分攤等. 常見的分配方式有平均分和按權重(比例)分. 在某些應用場景下, 我們需要體現分配方案的"公平性", 那么如何科學地定義公平性, 又如何計算公平的分配方案? 本文從合作博弈論的角度思考如何解決這些實際問題.
1. 合作博弈
考慮某個自營電商的銷售場景: 電商平臺(例如網易嚴選)從供應商采購商品, 顧客在線下單之后, 商品會通過承運商(例如順豐)把商品送達顧客手中. 在這個銷售過程中, 供應商, 電商平臺和承運商三方合作從而獲得銷售利潤. 那么我們如何"公平地"把利潤分配給三方?
合作博弈論關注的核心問題就是如何對合作產生的利潤(或成本)用科學的方式進行分配. 我們用二元組表示合作博弈(Cooperative Game), 其中記號
的解釋如下:
-
-- 參與博弈的局中人(Player)的集合
-
-- 局中人集合的任意子集稱為聯盟(Coalition)
-
-- 聯盟的效用函數.
可以及理解為聯盟
合作產生的總收益.
問題. 給定
, 如何把總收益
公平地分配給每個局中人?
不同應用場景對公平性的定義可能是不同的, 因此研究合作博弈論的一個核心問題就是研究不同分配策略的性質.
2. 分配策略
為方面描述, 我們先引入如下記號:
-
-- 分配向量(Allocation Vector), 局中人
得到的收益為
-
-- 聯盟
分配到的收益之和, 即
下面我們介紹一些分配策略.
2.1 The Core
Core是分配向量的集合. core必須滿足如下條件:
-
.
說明
- 條件1保證所有的收益都被分配了. (沒人貪污)
- 如果任意一個聯盟
想要獨立門戶, 即, 不跟其他人(
)合作, 那么條件2保證
得到的總收益不會超過他們當前分配到的收益之和. 換句話說, 條件2保證聯盟
沒有動機獨立門戶. (不合作不會賺得更多)
- core有可能是空集. 如果非空, 它包含的分配向量一般不是唯一的.
2.2 The Kernel[1]
Kernel也是分配向量的集合, 它從談判的角度來定義公平性. 考慮兩個局中人,
, 給定分配向量
, 定義
站在局中人的角度來看, 如果他不愿意跟
合作, 最多能額外獲得的收益即為
. 因此, 我們可以把
理解為
對
的談判能力. 如果
, 則說明
相對
有可能在談判上有優勢.
kernel必須滿足如下條件:
-
,
- 如果
, 那么
,
說明
- 條件2確保局中人
分配到的收益比自己"單干"不會少.
- 把滿足條件1和條件2的分配向量稱為imputation.
- 條件3說如果
對
談判有優勢, 那么
對
的談判是免疫的(因為
分配到的收益等于自己單干的收益,
即使不合作也沒有損失). 簡而言之, 條件3確保任意兩個不同的局中人
和
在談判地位上是平等的.
- Kernel非空.
2.3 The Nucleolus[2]
Nucleolus與前面的概念有所區別, 它是分配向量(不是集合). 我們先給出一些記號:
-
,
-- 代表聯盟
不合作能額外獲得的收益
-
-- 是
構成的向量. 設
的分量按照從大到小的順序排列
考慮兩個分配向量,
, 我們說
按詞典序(lexicographically)比
小, 當存在下標
使得
且
,
.
Nucleolus 是按字典序最小的imputation(滿足kernel的條件1和條件2).
說明
- Nucleolus的定義比較抽象. 我們用比較淺顯的話來解釋: nucleolus分配的思想是為了使最貧窮的局中人分配到的財富最大化, 其中"財富的多少"可以理解為公平性, 越貧窮則越不公平.
- nucleolus
kernel
- 如果core非空, 則nucleolus
core
2.4 The Shapley Value[3]
它的計算公式為:
說明
- 給定聯盟
, 局中人
相對
的邊際貢獻為
.
- 如果隨機分配聯盟, 那么
是
落入集合
的概率.
- 綜上所述,
為局中人
邊際貢獻的期望.
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. ?