Skip to content

Commit 6f7c71f

Browse files
authored
Merge pull request #24 from SW36/inventory_dynamics
[Inventory_dynamics] Update Translation
2 parents 8012bf3 + 628d9bd commit 6f7c71f

File tree

1 file changed

+49
-52
lines changed

1 file changed

+49
-52
lines changed

lectures/inventory_dynamics.md

+49-52
Original file line numberDiff line numberDiff line change
@@ -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
68
kernelspec:
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
4948
import 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

@@ -84,12 +83,12 @@ $$
8483

8584
其中 $\mu$ 和 $\sigma$ 是参数,$\{Z_t\}$ 是独立同分布的标准正态分布。
8685

87-
这里有一个类,用于存储参数并生成库存的时间路径
86+
下面是一个类,它用于存储参数并生成库存的时间路径
8887

8988
```{code-cell} ipython3
9089
firm_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)
150149
plt.show()
151150
```
152151

153-
现在让我们模拟多条路径,以便更全面地了解不同结果的概率
152+
现在让我们模拟多条路径,这样可以更好地了解库存动态的整体行为和可能的库存分布
154153

155154
```{code-cell} ipython3
156155
sim_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
182181
T = 50
@@ -217,7 +216,7 @@ axes[1].hist(sample,
217216
plt.show()
218217
```
219218

220-
通过绘制更多样本,我们可以得到一个更清晰的图像
219+
通过抽取更多样本,我们可以得到一个更清晰的图像
221220

222221
```{code-cell} ipython3
223222
T = 50
@@ -239,18 +238,18 @@ ax.hist(sample,
239238
plt.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
256255
from sklearn.neighbors import KernelDensity
@@ -271,7 +270,7 @@ plot_kde(sample, ax)
271270
plt.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
309308
s, S, mu, sigma = firm.s, firm.S, firm.mu, firm.sigma
@@ -352,34 +351,34 @@ ax.legend()
352351
plt.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()
415413
print(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

Comments
 (0)