报童问题中E(q)求导结果
时间: 2023-12-11 10:03:45 浏览: 27
在报童问题中,E(q)表示期望利润,它是一个关于订货量q的函数。求导E(q)的过程如下:
首先,假设需求的概率分布为F(x),成本为c,售价为p。则期望利润可以表示为:
E(q) = ∑[p min(q, x) - c q]F(x)
其中,∑表示对所有可能的需求取和。
接着,我们对E(q)求导,得到:
dE(q)/dq = ∑[p - c]F(x) (当q≥x时)
dE(q)/dq = pF(q) - c (当q<x时)
其中,第一个式子表示当q≥x时,期望利润对订货量的导数为(p-c)乘以需求的概率密度函数F(x)。第二个式子表示当q<x时,期望利润对订货量的导数为售价p乘以需求小于订货量的概率密度函数F(q),再减去成本c。
需要注意的是,由于期望利润E(q)是一个分段函数,因此在计算导数时需要分别考虑q≥x和q<x两种情况。
相关问题
python解决报童问题
报童问题是一个经典的商品采购模型,通过考虑需求的不确定性来最大化销售利润。下面是Python解决报童问题的示例代码:
```python
from random import *
seed(1) # 随机数种子,确保结果可复现
p = 5 # 售价
c = 2 # 进价
s = 1 # 残值
for i in [5, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000]: # 样本数量
D = []
F = 0
for n in range(i):
D.append(randint(1000, 2000)) # 随机抽取需求量
print(f"样本量为{i}时需求为{D[:20]}.")
for q in range(min(D), max(D)): # 最优解一定在最低需求与最高需求之间产生
E = 0
for d in D:
E += p * min(d, q) + s * max(q - d, 0) - c * q
if E < F:
print(f"最优解:订货量q为{q-1},平均收益E为{F/len(D)}")
break
else:
F = E
print("{:=^50s}".format("Split Line"))
```
该代码通过随机抽取需求量,计算不同订货量下的平均收益,并输出最优解。其中,样本数量可以根据需要进行调整。
matlab报童诀窍
MATLAB报童问题是一个经典的库存控制问题,也称为报童模型。该问题的目是找到最优的订货量,以最大化利润或最小化库存成本。下面是一些MATLAB中解决报童问题的诀窍:
1. 理解报童问题的数学模型:在报童问题中,要考虑到需求的概率分布以及库存成本和销售收益之间的关系等因素。了解数学模型是解决问题的基础。
2. 设计需求概率分布:根据历史数据或领域知识,通过MATLAB中的统计工具箱或自定义函数来估计需求的概率分布。
3. 定义库存成本和销售收益函数:根据实际情况,定义库存成本和销售收益的函数。这些函数可以根据订单量进行调整。
4. 找到最优订货量:使用优化工具箱中的函数(如fminbnd或fmincon)来找到最优的订货量。通过最大化利润或最小化库存成本来定义优化目标。
5. 进行敏感性分析:在找到最优解之后,可以使用MATLAB中的敏感性分析工具箱来评估不同参数值对最优解的影响。
这些是解决MATLAB报童问题的一些基本诀窍。根据具体情况,可能会有其他的补充步骤或技巧。