@@ -3,8 +3,10 @@ jupytext:
33 text_representation :
44 extension : .md
55 format_name : myst
6+ format_version : 0.13
7+ jupytext_version : 1.16.7
68kernelspec :
7- display_name : Python 3
9+ display_name : Python 3 (ipykernel)
810 language : python
911 name : python3
1012---
@@ -19,31 +21,28 @@ kernelspec:
1921
2022# 库存动态
2123
22- ``` {index} single: 马尔可夫过程, 库存
23- ```
24-
2524``` {contents} 目录
2625:depth: 2
2726```
2827
2928## 概述
3029
31- 在本讲座中,我们将研究遵循所谓s-S库存动态的企业的库存时间路径 。
30+ 在本讲座中,我们将研究企业的库存时间路径,其遵循所谓的s-S库存动态 。
3231
33- 这些企业
32+ 这些企业遵循以下补货规则:
3433
35- 1 . 等待直到库存降至某个水平 $s$以下,然后
36- 1 . 订购足够数量以将库存补充到容量 $S$。
34+ 1 . 当库存水平下降至某个临界值 $s$以下时,
35+ 2 . 企业会订购足够数量的产品,将库存补充到目标水平 $S$。
3736
38- 这类政策在实践中很常见 ,并且在某些情况下也是最优的。
37+ 这种管理库存的方式在实践中很常见 ,并且在某些情况下也是最优的。
3938
40- 早期文献综述和一些宏观经济含义可以在 {cite}` caplin1985variability ` 中找到。
39+ 早期文献和其对宏观经济的影响可以在 {cite}` caplin1985variability ` 中找到。
4140
42- 我们的主要目标是学习更多关于模拟 、时间序列和马尔可夫动态的知识。
41+ 我们的本节的目标是学习更多关于模拟 、时间序列和马尔可夫动态的知识。
4342
44- 虽然我们的马尔可夫环境和许多我们考虑的概念与 {doc}` 有限马尔可夫链讲座 <finite_markov> ` 中的概念相关 ,但在当前应用中状态空间是连续的。
43+ 尽管我们的马尔可夫环境和涉及的概念与 {doc}` 有限马尔可夫链讲座 <finite_markov> ` 的概念是相关的 ,但在当前应用中状态空间是连续的。
4544
46- 让我们从一些导入开始
45+ 让我们从导入一些库开始
4746
4847``` {code-cell} ipython3
4948import matplotlib.pyplot as plt
@@ -60,7 +59,7 @@ from numba.experimental import jitclass
6059
6160## 样本路径
6261
63- 考虑一个拥有库存 $X_t$ 的公司 。
62+ 假设有一个公司,拥有库存 $X_t$。
6463
6564当库存 $X_t \leq s$ 时,公司会补货至 $S$ 单位。
6665
8483
8584其中 $\mu$ 和 $\sigma$ 是参数,$\{ Z_t\} $ 是独立同分布的标准正态分布。
8685
87- 这里有一个类,用于存储参数并生成库存的时间路径 。
86+ 下面是一个类,它用于存储参数并生成库存的时间路径 。
8887
8988``` {code-cell} ipython3
9089firm_data = [
91- ('s', float64), # 补货触发水平
92- ('S', float64), # 容量
90+ ('s', float64), # 触发补货水平
91+ ('S', float64), # 库存总容量
9392 ('mu', float64), # 冲击位置参数
9493 ('sigma', float64) # 冲击规模参数
9594]
@@ -150,7 +149,7 @@ ax.legend(**legend_args)
150149plt.show()
151150```
152151
153- 现在让我们模拟多条路径,以便更全面地了解不同结果的概率 :
152+ 现在让我们模拟多条路径,这样可以更好地了解库存动态的整体行为和可能的库存分布 :
154153
155154``` {code-cell} ipython3
156155sim_length=200
@@ -170,13 +169,13 @@ plt.show()
170169
171170## 边际分布
172171
173- 现在让我们来看看某个固定时间点 $T$ 时 $X_T$ 的边际分布 $\psi_T$。
172+ 现在让我们来看看某一固定时间点 $T$ 时 $X_T$ 的边际分布 $\psi_T$。
174173
175- 我们将通过在给定初始条件 $X_0$ 的情况下生成多个 $X_T$ 的样本来实现这一点 。
174+ 我们将通过在给定初始条件 $X_0$ 的情况下,生成多个 $X_T$ 的样本来实现 。
176175
177176通过这些 $X_T$ 的样本,我们可以构建其分布 $\psi_T$ 的图像。
178177
179- 这里是一个可视化示例,其中 $T=50$。
178+ 下面是 $T=50$的情况下的一个可视化示例 。
180179
181180``` {code-cell} ipython3
182181T = 50
@@ -217,7 +216,7 @@ axes[1].hist(sample,
217216plt.show()
218217```
219218
220- 通过绘制更多样本 ,我们可以得到一个更清晰的图像
219+ 通过抽取更多样本 ,我们可以得到一个更清晰的图像
221220
222221``` {code-cell} ipython3
223222T = 50
@@ -239,18 +238,18 @@ ax.hist(sample,
239238plt.show()
240239```
241240
242- 请注意分布呈双峰
241+ 注意到分布呈双峰
243242
244- * 大多数公司已经补货两次,但少数公司只补货一次 (见上图路径)。
245- * 第二类公司的库存较低 。
243+ * 大多数公司已经补了两次货,但也有少部分公司只补货一次 (见上图路径)。
244+ * 第二种公司的库存较少 。
246245
247- 我们也可以使用 [ 核密度估计] ( https://en.wikipedia.org/wiki/Kernel_density_estimation ) 来近似这个分布。
246+ 我们还可以使用 [ 核密度估计] ( https://baike.baidu.com/item/核密度估计/10349033 ) 来近似这个分布。
248247
249248核密度估计可以被理解为平滑的直方图。
250249
251- 当被估计的分布可能是平滑的时候,核密度估计比直方图更可取 。
250+ 当我们认为底层分布是平滑的时候,核密度估计通常比直方图提供更准确的图像 。
252251
253- 我们将使用[ scikit-learn] ( https://scikit-learn.org/stable/ ) 中的核密度估计器
252+ 我们将使用[ scikit-learn] ( https://scikit-learn.org/stable/ ) 中的核密度估计量
254253
255254``` {code-cell} ipython3
256255from sklearn.neighbors import KernelDensity
@@ -271,7 +270,7 @@ plot_kde(sample, ax)
271270plt.show()
272271```
273272
274- 概率质量的分配与上面直方图所显示的类似 。
273+ 概率密度的分配与上面直方图所显示的类似 。
275274
276275## 练习
277276
@@ -280,30 +279,30 @@ plt.show()
280279
281280这个模型是渐近平稳的,具有唯一的平稳分布。
282281
283- (有关平稳性的背景讨论 ,请参见{doc}`我们关于AR(1)过程的讲座 <intro:ar1_processes>`——基本概念是相同的。)
282+ (作为背景知识,有关平稳性的讨论 ,请参见{doc}`我们关于AR(1)过程的讲座 <intro:ar1_processes>`——基本概念是相同的。)
284283
285- 特别是,边际分布序列$\{\psi_t\}$正在收敛到一个唯一的极限分布,该分布不依赖于初始条件 。
284+ 特别是,边际分布序列$\{\psi_t\}$正在收敛到一个唯一的极限分布,且该分布不依赖于初始条件 。
286285
287- 虽然我们在这里不会证明这一点,但我们可以通过模拟来研究它 。
286+ 虽然我们不会在此证明这一点,但我们可以通过模拟来研究这一性质 。
288287
289- 你的任务是根据上述讨论 ,在时间点$t = 10, 50, 250, 500, 750$生成并绘制序列$\{\psi_t\}$。
288+ 你的任务是,根据上述讨论 ,在时间点$t = 10, 50, 250, 500, 750$生成并绘制序列$\{\psi_t\}$。
290289
291- (核密度估计器可能是呈现每个分布的最佳方式 。)
290+ (核密度估计量可能是呈现每个分布最佳的方式 。)
292291
293- 你应该能看到收敛性,体现在连续分布之间的差异越来越小 。
292+ 你应该能看到收敛性,体现在两个连续分布之间的差异越来越小 。
294293
295- 尝试不同的初始条件来验证,从长远来看,分布在不同初始条件下是不变的 。
294+ 尝试使用不同的初始条件来验证,无论从哪个初始状态开始,长期分布都会收敛到相同的平稳分布 。
296295```
297296
298297``` {solution-start} id_ex1
299298:class: dropdown
300299```
301300
302- 以下是一个可能的解决方案 :
301+ 以下是其中一种解法 :
303302
304- 这些计算涉及大量的CPU周期,所以我们试图高效地编写代码 。
303+ 由于这个计算需要大量的计算资源,我们需要编写更高效的代码 。
305304
306- 这意味着编写一个专门的函数,而不是使用上面的类 。
305+ 为此,我们将创建一个专门的函数来替代之前使用的类,以提高计算效率 。
307306
308307``` {code-cell} ipython3
309308s, S, mu, sigma = firm.s, firm.S, firm.mu, firm.sigma
@@ -352,34 +351,34 @@ ax.legend()
352351plt.show()
353352```
354353
355- 注意到在 $t=500$ 或 $t=750$ 时密度几乎不再变化 。
354+ 从图中可以看出,随着时间的推移,分布逐渐收敛到一个稳定状态 。
356355
357- 我们已经得到了平稳密度的合理近似 。
356+ 在 t=500 和 t=750 时的分布几乎完全重合,表明我们已经得到了平稳密度的良好近似 。
358357
359- 你可以通过测试几个不同的初始条件来确信初始条件并不重要 。
358+ 你可以通过测试多个不同的初始条件,来确定初始条件确实不重要 。
360359
361- 例如,尝试用所有公司从 $X_0 = 20$ 或 $X_0 = 80$ 开始重新运行上面的代码 。
360+ 例如,你可以尝试将所有公司的初始库存设置为 $X_0 = 20$ 或 $X_0 = 80$,然后重新运行上面的代码,观察分布最终是否收敛到相同的稳态分布 。
362361
363362``` {solution-end}
364363```
365364
366365``` {exercise}
367366:label: id_ex2
368367
369- 使用模拟计算从 $X_0 = 70$ 开始的公司在前50个周期内需要订货两次或更多次的概率 。
368+ 使用模拟的方法,估计一家初始库存为 $X_0 = 70$ 的公司在前50个时期内至少需要补充库存两次的概率 。
370369
371- 你需要一个较大的样本量来获得准确的结果 。
370+ 为了获得统计上可靠的结果,请确保使用足够大的样本量 。
372371```
373372
374373``` {solution-start} id_ex2
375374:class: dropdown
376375```
377376
378- 这是一个解决方案 。
377+ 这里是一种解法 。
379378
380- 同样 ,由于计算量相对较大,我们编写了一个专门的函数而不是使用上面的类。
379+ 同样地 ,由于计算量相对较大,我们编写了一个专门的函数而不是使用上面的类。
381380
382- 我们还将使用跨公司的并行化处理 。
381+ 我们将利用并行计算来同时处理多家公司的模拟,以提高计算效率 。
383382
384383``` {code-cell} ipython3
385384@jit(parallel=True)
@@ -405,7 +404,6 @@ def compute_freq(sim_length=50, x_init=70, num_firms=1_000_000):
405404 return firm_counter / num_firms
406405```
407406
408-
409407记录程序运行所需的时间和输出结果。
410408
411409``` {code-cell} ipython3
@@ -415,12 +413,11 @@ freq = compute_freq()
415413print(f"至少发生两次缺货的频率 = {freq}")
416414```
417415
418- 尝试将上面jitted函数中的 ` parallel ` 标志改为 ` False ` 。
416+ 尝试将上面 ` @jit ` [ 装饰器 ] ( https://zhuanlan.zhihu.com/p/53666925 ) 中的 ` parallel ` 参数改为 ` False ` 。
419417
420418根据你的系统配置,运行速度的差异可能会很大。
421419
422- (在我们的台式机上,速度提升了5倍。 )
420+ (在我们的系统上运行速度提升了5倍! )
423421
424422``` {solution-end}
425423```
426-
0 commit comments