蒙特卡洛模拟
什么是蒙特卡洛模拟:
当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。
蒙特卡洛模拟中的库存问题
问题:水果零售员每天出售水果,每份订单有Y个单位,没卖出一个单位就会有60美分的利润,在每一天结束的时候未卖出的部分已每件40美分的损失抛售,每天的需求D服从均匀分布[80,140],问要求利润最大,每天需要多少单位的订单?
#s 表示销售量,d表示需求量
import numpy as np
from math import log
import matplotlib.pyplot as plt
x =[]
y = []
def generateProfit(d):
global s
if d >= s:
return 0.6*s
else:
return 0.6*d-0.4*(s-d)
maxprofit = 0
for s in range(20,305):
for i in range(1,1000):
d = np.random.randint(10,high=200)
profit = generateProfit(d)
if profit > maxprofit:
maxprofit = profit
x.append(s)
y.append(log(maxprofit))
plt.plot(x,y)
print('Max Profit:',maxprofit)
plt.show()