@@ -21,9 +21,6 @@ kernelspec:
21
21
22
22
# 库存动态
23
23
24
- ``` {index} single: 马尔可夫过程, 库存
25
- ```
26
-
27
24
``` {contents} 目录
28
25
:depth: 2
29
26
```
@@ -32,14 +29,14 @@ kernelspec:
32
29
33
30
在本讲座中,我们将研究企业的库存时间路径,其遵循所谓的s-S库存动态。
34
31
35
- 这些企业
32
+ 这些企业遵循以下补货规则:
36
33
37
- 1 . 等待直到库存下降至某个水平 $s$以下,然后
38
- 2 . 订购足够数量的产品,将库存补充到容量 $S$。
34
+ 1 . 当库存水平下降至某个临界值 $s$以下时,
35
+ 2 . 企业会订购足够数量的产品,将库存补充到目标水平 $S$。
39
36
40
37
这种管理库存的方式在实践中很常见,并且在某些情况下也是最优的。
41
38
42
- 早期文献和其宏观经济影响可以在 {cite}` caplin1985variability ` 中找到。
39
+ 早期文献和其对宏观经济的影响可以在 {cite}` caplin1985variability ` 中找到。
43
40
44
41
我们的本节的目标是学习更多关于模拟、时间序列和马尔可夫动态的知识。
45
42
@@ -62,7 +59,7 @@ from numba.experimental import jitclass
62
59
63
60
## 样本路径
64
61
65
- 假设有一个公司,拥有库存 $X_t$ 。
62
+ 假设有一个公司,拥有库存 $X_t$。
66
63
67
64
当库存 $X_t \leq s$ 时,公司会补货至 $S$ 单位。
68
65
@@ -152,7 +149,7 @@ ax.legend(**legend_args)
152
149
plt.show()
153
150
```
154
151
155
- 现在让我们模拟多条路径,以便更全面地了解不同结果的概率 :
152
+ 现在让我们模拟多条路径,这样可以更好地了解库存动态的整体行为和可能的库存分布 :
156
153
157
154
``` {code-cell} ipython3
158
155
sim_length=200
@@ -178,7 +175,7 @@ plt.show()
178
175
179
176
通过这些 $X_T$ 的样本,我们可以构建其分布 $\psi_T$ 的图像。
180
177
181
- 下面是$T=50$的情况下,一个可视化示例 。
178
+ 下面是$T=50$的情况下的一个可视化示例 。
182
179
183
180
``` {code-cell} ipython3
184
181
T = 50
@@ -250,7 +247,7 @@ plt.show()
250
247
251
248
核密度估计可以被理解为平滑的直方图。
252
249
253
- 当被估计的分布很可能是平滑的时候,核密度估计比直方图更可取 。
250
+ 当我们认为底层分布是平滑的时候,核密度估计通常比直方图提供更准确的图像 。
254
251
255
252
我们将使用[ scikit-learn] ( https://scikit-learn.org/stable/ ) 中的核密度估计量
256
253
@@ -273,7 +270,7 @@ plot_kde(sample, ax)
273
270
plt.show()
274
271
```
275
272
276
- 概率质量的分配与上面直方图所显示的类似 。
273
+ 概率密度的分配与上面直方图所显示的类似 。
277
274
278
275
## 练习
279
276
@@ -294,18 +291,18 @@ plt.show()
294
291
295
292
你应该能看到收敛性,体现在两个连续分布之间的差异越来越小。
296
293
297
- 尝试不同的初始条件来验证,长期来看,不同初始条件下分布是不变的 。
294
+ 尝试使用不同的初始条件来验证,无论从哪个初始状态开始,长期分布都会收敛到相同的平稳分布 。
298
295
```
299
296
300
297
``` {solution-start} id_ex1
301
298
:class: dropdown
302
299
```
303
300
304
- 以下是一种可能的解法 :
301
+ 以下是其中一种解法 :
305
302
306
- 因为其中的计算涉及大量的CPU周期,所以我们试图更高效地编写代码 。
303
+ 由于这个计算需要大量的计算资源,我们需要编写更高效的代码 。
307
304
308
- 也就是编写一个专门的函数,而不是使用上面的类 。
305
+ 为此,我们将创建一个专门的函数来替代之前使用的类,以提高计算效率 。
309
306
310
307
``` {code-cell} ipython3
311
308
s, S, mu, sigma = firm.s, firm.S, firm.mu, firm.sigma
@@ -354,23 +351,23 @@ ax.legend()
354
351
plt.show()
355
352
```
356
353
357
- 注意到,在 $t=500$ 或 $t=750$ 时密度几乎不再变化 。
354
+ 从图中可以看出,随着时间的推移,分布逐渐收敛到一个稳定状态 。
358
355
359
- 我们得到了平稳密度的合理近似 。
356
+ 在 t=500 和 t=750 时的分布几乎完全重合,表明我们已经得到了平稳密度的良好近似 。
360
357
361
358
你可以通过测试多个不同的初始条件,来确定初始条件确实不重要。
362
359
363
- 例如,尝试用所有公司从 $X_0 = 20$ 或 $X_0 = 80$ 开始重新运行上面的代码 。
360
+ 例如,你可以尝试将所有公司的初始库存设置为 $X_0 = 20$ 或 $X_0 = 80$,然后重新运行上面的代码,观察分布最终是否收敛到相同的稳态分布 。
364
361
365
362
``` {solution-end}
366
363
```
367
364
368
365
``` {exercise}
369
366
:label: id_ex2
370
367
371
- 使用模拟的方式,计算从 $X_0 = 70$ 开始的公司在前50个周期内需要订货两次或更多的概率 。
368
+ 使用模拟的方法,估计一家初始库存为 $X_0 = 70$ 的公司在前50个时期内至少需要补充库存两次的概率 。
372
369
373
- 你需要一个较大的样本量来获得准确的结果 。
370
+ 为了获得统计上可靠的结果,请确保使用足够大的样本量 。
374
371
```
375
372
376
373
``` {solution-start} id_ex2
@@ -381,7 +378,7 @@ plt.show()
381
378
382
379
同样地,由于计算量相对较大,我们编写了一个专门的函数而不是使用上面的类。
383
380
384
- 我们还将使用跨公司的并行化处理 。
381
+ 我们将利用并行计算来同时处理多家公司的模拟,以提高计算效率 。
385
382
386
383
``` {code-cell} ipython3
387
384
@jit(parallel=True)
@@ -416,11 +413,11 @@ freq = compute_freq()
416
413
print(f"至少发生两次缺货的频率 = {freq}")
417
414
```
418
415
419
- 尝试将上面jitted函数中的 ` parallel ` 标志改为 ` False ` 。
416
+ 尝试将上面 ` @jit ` [ 装饰器 ] ( https://zhuanlan.zhihu.com/p/53666925 ) 中的 ` parallel ` 参数改为 ` False ` 。
420
417
421
418
根据你的系统配置,运行速度的差异可能会很大。
422
419
423
- (在台式机上,速度提升了5倍。 )
420
+ (在我们的系统上运行速度提升了5倍! )
424
421
425
422
``` {solution-end}
426
423
```
0 commit comments