【SCM】基于报童模型的MAPE与Profit仿真

在销量预测中,提高预测准确率(1-MAPE)能否提高利润?

本文试图通过经典的报童模型进行随机仿真,观察MAPE和利润之间的关系。

一、模型设定

                                                    Newsvendor Problem -- 30 Days

Purchase cost

0.7

Selling price

1

Salvage value

0

Demand parameter μ

100

Amount ordered each day q

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

Demand parameter ?σ

taking values from 1 to 30 with an increment of 0.1

二、仿真代码

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') 

三、仿真结果图

结论:在各个订货点下, Profit随着MAPE的下降而升高,且趋于稳定。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值