[SCM]ニュースボーイモデルに基づくMAPEおよび利益シミュレーション

販売予測では、予測精度(1-MAPE)を改善することで利益を増やすことができますか?

この記事では、古典的なキャスケットモデルを使用してランダムシミュレーションを実行し、MAPEと利益の関係を観察します。

1.モデル設定

                                                    ニュースベンダーの問題-30日

購入 費用

0.7

販売 価格

1

残存 価額

0

需要パラメーター μ

100

金額は、 注文した のqを

[80、 90、 100、 110、 120、 130]

需要パラメーターσ

0.1の増分で1から30までの値を取る

第二に、シミュレーションコード

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

#CONST
rounds = 30
c = 0.7   # purchase cost
s = 1     # selling price
u = 0     # salvage value
demand_mu = 100
color = ['b', 'g', 'r', 'c', 'm', 'y', 'k', 'w']
qs = [80]

# Demand
col = []
for demand_sigma in np.arange(1,30,0.1):
    row = [] 
    for _ in range(rounds):
        demand = max(round(np.random.normal(demand_mu, demand_sigma),0),0)
        while demand == 0:
            demand = max(round(np.random.normal(demand_mu, demand_sigma),0),0)
        row.append(demand)
    col.append(row)
col = np.array(col)
df_demand = pd.DataFrame(col, columns=[ i+1 for i in range(30)])

# newsvendor model 
fig = plt.figure(num=1, figsize=(10, 8),dpi=80) 
i = 1
for q in [80, 90, 100, 110, 120, 130]:
    df_sales_revenue = df_demand.applymap(lambda x: s * min(x, q))
    df_salvage_revenue = df_demand.applymap(lambda x: u * max(0, q-x))
    df_profit = df_sales_revenue + df_salvage_revenue - c * q
    df_mape = df_demand.applymap(lambda x: abs(x - q)/x)
    plt.subplot(2, 3, i)
    plt.scatter(df_profit.mean(axis=1), df_mape.mean(axis=1), c=color[i-1])
    plt.title('q = '+ str(q), size=26)
    plt.xlabel('Profit', size=12)
    plt.ylabel('MAPE',  size=12)
    i += 1

plt.legend(loc='best')

fig.tight_layout()#调整整体空白
plt.subplots_adjust(wspace =0.3, hspace =0.3)#调整子图间距
plt.savefig('./ppt素材/newsvendor_simulation.jpg') 

第三に、シミュレーション結果

結論:各注文ポイントで、利益はMAPEの減少とともに増加し、安定する傾向があります。

元の記事を26件公開 13 件を獲得 7292回

おすすめ

転載: blog.csdn.net/original_recipe/article/details/100145622