日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

廣告流量分發-線性規劃

行業背景

智能推送是可以基于用戶行為和興趣的個性化內容進行推送。是通過分析用戶的歷史行為、關注點和偏好,智能推送系統可以提供給用戶最相關、有價值的信息、產品或服務。這個優化問題也可以通過數學規劃的方法進行建模和求解。

例如:在很多視頻在線流量調控場景,需要在保證每個視頻內容播放量的同時,使得播放總量最大化。這種場景可以包括廣告、通知、宣發內容推送等各種類型。而線上流量是有限的,且不同的宣發內容對用戶的吸引力均不相同。

業務調研、數據量化、數學建模

在使用優化技術的時候,需要更詳細的調研業務的需求,整理相關的業務邏輯和數據,并量化表示它。然后采用數學規劃的方法進行數學建模。

此部分細節較多,可在案例視頻流量調控中查閱細節,此處我們僅列出數學公式如下,參數部分請點擊案例鏈接查看:

image.svg

其中i為視頻內容、u為用戶群、CTR為預估點擊率、VV為內容的播放量保量值。

以上公式對應的約束有:

  • 保證視頻的播放總量在范圍內

  • 保證每個用戶都有視頻可以看

源代碼

MindOpt支持多種編程語言或者建模語言來調用。此處僅列出一種供參考:

MindOpt APL建模語言調用

MindOpt APL建模語言的源代碼(可在視頻流量調控上試運行):

##====MindOpt APL 建模語言版本代碼====

# LP_4_distribution.mapl

# 聲明集合
set USERS := { "user0", "user1" };
set ITEMS := {"item0", "item1", "item2"};
set RANGE := { "lower" };

# 聲明參數
param CTR[ITEMS * USERS] := 
         | "user0" , "user1" |
|"item0" | 0.52    , 0.92    |
|"item1" | 0.31    , 0.93    |
|"item2" | 0.82    , 0.91    |;

param Broadcast_Num_Range[RANGE * ITEMS] := 
         |"item0","item1", "item2"|
|"lower" | 0     ,0      ,   1    |;

# 聲明變量
var X_Probability[USERS * ITEMS] >= 0;  

# 聲明目標
maximize Total_CTR_Reward: sum {<u, i> in USERS * ITEMS} CTR[i, u] * X_Probability[u, i]; 

# 聲明約束
subto Each_Item_Broadcast_In_Range: #視頻的播放量在范圍內
    forall {<i> in ITEMS }
      sum {<u> in USERS} CTR[i, u] * X_Probability[u, i] >= Broadcast_Num_Range["lower",i];

subto Each_User_Total_X_Probability:  #每個用戶總有視頻看
    forall {<u> in USERS}
      sum {<i> in ITEMS} X_Probability[u, i] == 1; 

#--------------------------

print "-----------------用MindOpt求解---------------";
option solver mindopt;     # (可選)指定求解用的求解器,默認是MindOpt
solve;         # 求解

print "-----------------Display---------------";
display;        # 展示結果

print "目標函數總收益是:", sum {<u, i> in USERS * ITEMS} CTR[i, u] * X_Probability[u, i];

結果和結果用法

不同代碼日志打印不一樣。部分結果日志打印如下所示:

...
Model summary.
 - Num. variables     : 6
 - Num. constraints   : 5
 - Num. nonzeros      : 12
 - Bound range        : [1.0e+00,1.0e+00]
 - Objective range    : [3.1e-01,9.3e-01]
 - Matrix range       : [3.1e-01,1.0e+00]
...
Simplex method terminated. Time : 0.002s


OPTIMAL; objective 1.75
...
-----------------結果---------------
目標函數總收益是:1.746043956043956

目標的最優解是:1.75。更多解的細節,如決策變量的取值、驗證約束是否正確,可以通過print命令打印來顯示,變量的取值也可以從程序運行寫的.sol文件里面獲取,還可以調用display獲取所有變量的。

如運行如下指令,驗證“保證視頻的播放總量在范圍內”這個約束:

forall {<i> in ITEMS }
    print ' 保量要求lb為{},優化計算后預估點擊量{}為{}'%Broadcast_Num_Range['lower',i],i,sum {<u> in USERS} CTR[i, u] * X_Probability[u, i], 
    sum {<u> in USERS} CTR[i, u] * X_Probability[u, i];

驗證結果:

 保量要求lb為0,優化計算后預估點擊量item0為0
 保量要求lb為0,優化計算后預估點擊量item1為0.746043956043956
 保量要求lb為1,優化計算后預估點擊量item2為1

運行如下代碼,將輸出打印為csv格式,作為廣告流量分發問題的解決方案:

print "{}, {}, {}" % "視頻", "用戶", "播放概率" : "Solution.csv";
close "Solution.csv";

forall {<i,u> in ITEMS*USERS}
    print "{}, {}, {}" % u, i, X_Probability[u, i] >> "Solution.csv";

close "Solution.csv";

結果如下:

image.png

即,將第2號視頻播放給第0號用戶的概率為1,

將第1號視頻播放給第1號用戶的概率為0.8,

將第2號視頻播放給第1號用戶的概率為0.2。