python数据可视化(二)

蒙特卡洛模拟

什么是蒙特卡洛模拟:
当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。

蒙特卡洛模拟中的库存问题

问题:水果零售员每天出售水果,每份订单有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()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值