From 63619552c7ac00d6ea18c89e9914a174b0194754 Mon Sep 17 00:00:00 2001 From: Songyi Wang <106909414+SW36@users.noreply.github.com> Date: Thu, 24 Apr 2025 16:29:18 +0800 Subject: [PATCH 1/3] [inventory dynamics] Update Translation --- lectures/inventory_dynamics.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/lectures/inventory_dynamics.md b/lectures/inventory_dynamics.md index 75eaeef..5619b87 100644 --- a/lectures/inventory_dynamics.md +++ b/lectures/inventory_dynamics.md @@ -3,8 +3,10 @@ jupytext: text_representation: extension: .md format_name: myst + format_version: 0.13 + jupytext_version: 1.16.7 kernelspec: - display_name: Python 3 + display_name: Python 3 (ipykernel) language: python name: python3 --- @@ -28,22 +30,22 @@ kernelspec: ## 概述 -在本讲座中,我们将研究遵循所谓s-S库存动态的企业的库存时间路径。 +在本讲座中,我们将研究企业的库存时间路径,其遵循所谓的s-S库存动态。 这些企业 -1. 等待直到库存降至某个水平$s$以下,然后 -1. 订购足够数量以将库存补充到容量$S$。 +1. 等待直到库存下降至某个水平$s$以下,然后 +2. 订购足够数量的产品,将库存补充到容量$S$。 -这类政策在实践中很常见,并且在某些情况下也是最优的。 +这种管理库存的方式在实践中很常见,并且在某些情况下也是最优的。 -早期文献综述和一些宏观经济含义可以在{cite}`caplin1985variability`中找到。 +早期文献和其宏观经济影响可以在{cite}`caplin1985variability`中找到。 -我们的主要目标是学习更多关于模拟、时间序列和马尔可夫动态的知识。 +我们的本节的目标是学习更多关于模拟、时间序列和马尔可夫动态的知识。 -虽然我们的马尔可夫环境和许多我们考虑的概念与{doc}`有限马尔可夫链讲座 `中的概念相关,但在当前应用中状态空间是连续的。 +尽管我们的马尔可夫环境和涉及的概念与{doc}`有限马尔可夫链讲座 `的概念是相关的,但在当前应用中状态空间是连续的。 -让我们从一些导入开始 +让我们从导入一些库开始 ```{code-cell} ipython3 import matplotlib.pyplot as plt @@ -60,7 +62,7 @@ from numba.experimental import jitclass ## 样本路径 -考虑一个拥有库存 $X_t$ 的公司。 +假设有一个公司,拥有库存 $X_t$ 。 当库存 $X_t \leq s$ 时,公司会补货至 $S$ 单位。 @@ -84,12 +86,12 @@ $$ 其中 $\mu$ 和 $\sigma$ 是参数,$\{Z_t\}$ 是独立同分布的标准正态分布。 -这里有一个类,用于存储参数并生成库存的时间路径。 +下面是一个类,它用于存储参数并生成库存的时间路径。 ```{code-cell} ipython3 firm_data = [ - ('s', float64), # 补货触发水平 - ('S', float64), # 容量 + ('s', float64), # 触发补货水平 + ('S', float64), # 库存总容量 ('mu', float64), # 冲击位置参数 ('sigma', float64) # 冲击规模参数 ] @@ -405,7 +407,6 @@ def compute_freq(sim_length=50, x_init=70, num_firms=1_000_000): return firm_counter / num_firms ``` - 记录程序运行所需的时间和输出结果。 ```{code-cell} ipython3 @@ -423,4 +424,3 @@ print(f"至少发生两次缺货的频率 = {freq}") ```{solution-end} ``` - From 76d62b14d437df0e76d2f88b236c962c29f510cd Mon Sep 17 00:00:00 2001 From: Songyi Wang <106909414+SW36@users.noreply.github.com> Date: Thu, 24 Apr 2025 17:21:58 +0800 Subject: [PATCH 2/3] [inventory_dynamics]Update Translation --- lectures/inventory_dynamics.md | 54 +++++++++++++++++----------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/lectures/inventory_dynamics.md b/lectures/inventory_dynamics.md index 5619b87..98f06d6 100644 --- a/lectures/inventory_dynamics.md +++ b/lectures/inventory_dynamics.md @@ -172,13 +172,13 @@ plt.show() ## 边际分布 -现在让我们来看看某个固定时间点 $T$ 时 $X_T$ 的边际分布 $\psi_T$。 +现在让我们来看看某一固定时间点 $T$ 时 $X_T$ 的边际分布 $\psi_T$。 -我们将通过在给定初始条件 $X_0$ 的情况下生成多个 $X_T$ 的样本来实现这一点。 +我们将通过在给定初始条件 $X_0$ 的情况下,生成多个 $X_T$ 的样本来实现。 通过这些 $X_T$ 的样本,我们可以构建其分布 $\psi_T$ 的图像。 -这里是一个可视化示例,其中 $T=50$。 +下面是$T=50$的情况下,一个可视化示例。 ```{code-cell} ipython3 T = 50 @@ -219,7 +219,7 @@ axes[1].hist(sample, plt.show() ``` -通过绘制更多样本,我们可以得到一个更清晰的图像 +通过抽取更多样本,我们可以得到一个更清晰的图像 ```{code-cell} ipython3 T = 50 @@ -241,18 +241,18 @@ ax.hist(sample, plt.show() ``` -请注意分布呈双峰 +注意到分布呈双峰 -* 大多数公司已经补货两次,但少数公司只补货一次(见上图路径)。 -* 第二类公司的库存较低。 +* 大多数公司已经补了两次货,但也有少部分公司只补货一次(见上图路径)。 +* 第二种公司的库存较少。 -我们也可以使用[核密度估计](https://en.wikipedia.org/wiki/Kernel_density_estimation)来近似这个分布。 +我们还可以使用[核密度估计](https://baike.baidu.com/item/核密度估计/10349033)来近似这个分布。 核密度估计可以被理解为平滑的直方图。 -当被估计的分布可能是平滑的时候,核密度估计比直方图更可取。 +当被估计的分布很可能是平滑的时候,核密度估计比直方图更可取。 -我们将使用[scikit-learn](https://scikit-learn.org/stable/)中的核密度估计器 +我们将使用[scikit-learn](https://scikit-learn.org/stable/)中的核密度估计量 ```{code-cell} ipython3 from sklearn.neighbors import KernelDensity @@ -282,30 +282,30 @@ plt.show() 这个模型是渐近平稳的,具有唯一的平稳分布。 -(有关平稳性的背景讨论,请参见{doc}`我们关于AR(1)过程的讲座 `——基本概念是相同的。) +(作为背景知识,有关平稳性的讨论,请参见{doc}`我们关于AR(1)过程的讲座 `——基本概念是相同的。) -特别是,边际分布序列$\{\psi_t\}$正在收敛到一个唯一的极限分布,该分布不依赖于初始条件。 +特别是,边际分布序列$\{\psi_t\}$正在收敛到一个唯一的极限分布,且该分布不依赖于初始条件。 -虽然我们在这里不会证明这一点,但我们可以通过模拟来研究它。 +虽然我们不会在此证明这一点,但我们可以通过模拟来研究这一性质。 -你的任务是根据上述讨论,在时间点$t = 10, 50, 250, 500, 750$生成并绘制序列$\{\psi_t\}$。 +你的任务是,根据上述讨论,在时间点$t = 10, 50, 250, 500, 750$生成并绘制序列$\{\psi_t\}$。 -(核密度估计器可能是呈现每个分布的最佳方式。) +(核密度估计量可能是呈现每个分布最佳的方式。) -你应该能看到收敛性,体现在连续分布之间的差异越来越小。 +你应该能看到收敛性,体现在两个连续分布之间的差异越来越小。 -尝试不同的初始条件来验证,从长远来看,分布在不同初始条件下是不变的。 +尝试不同的初始条件来验证,长期来看,不同初始条件下分布是不变的。 ``` ```{solution-start} id_ex1 :class: dropdown ``` -以下是一个可能的解决方案: +以下是一种可能的解法: -这些计算涉及大量的CPU周期,所以我们试图高效地编写代码。 +因为其中的计算涉及大量的CPU周期,所以我们试图更高效地编写代码。 -这意味着编写一个专门的函数,而不是使用上面的类。 +也就是编写一个专门的函数,而不是使用上面的类。 ```{code-cell} ipython3 s, S, mu, sigma = firm.s, firm.S, firm.mu, firm.sigma @@ -354,11 +354,11 @@ ax.legend() plt.show() ``` -注意到在 $t=500$ 或 $t=750$ 时密度几乎不再变化。 +注意到,在 $t=500$ 或 $t=750$ 时密度几乎不再变化。 -我们已经得到了平稳密度的合理近似。 +我们得到了平稳密度的合理近似。 -你可以通过测试几个不同的初始条件来确信初始条件并不重要。 +你可以通过测试多个不同的初始条件,来确定初始条件确实不重要。 例如,尝试用所有公司从 $X_0 = 20$ 或 $X_0 = 80$ 开始重新运行上面的代码。 @@ -368,7 +368,7 @@ plt.show() ```{exercise} :label: id_ex2 -使用模拟计算从 $X_0 = 70$ 开始的公司在前50个周期内需要订货两次或更多次的概率。 +使用模拟的方式,计算从 $X_0 = 70$ 开始的公司在前50个周期内需要订货两次或更多的概率。 你需要一个较大的样本量来获得准确的结果。 ``` @@ -377,9 +377,9 @@ plt.show() :class: dropdown ``` -这是一个解决方案。 +这里是一种解法。 -同样,由于计算量相对较大,我们编写了一个专门的函数而不是使用上面的类。 +同样地,由于计算量相对较大,我们编写了一个专门的函数而不是使用上面的类。 我们还将使用跨公司的并行化处理。 @@ -420,7 +420,7 @@ print(f"至少发生两次缺货的频率 = {freq}") 根据你的系统配置,运行速度的差异可能会很大。 -(在我们的台式机上,速度提升了5倍。) +(在台式机上,速度提升了5倍。) ```{solution-end} ``` From 628d9bd61da9a03b5879c19e1fab87d215d68666 Mon Sep 17 00:00:00 2001 From: Humphrey Yang Date: Mon, 28 Apr 2025 12:04:02 +1000 Subject: [PATCH 3/3] minor updates --- lectures/inventory_dynamics.md | 45 ++++++++++++++++------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/lectures/inventory_dynamics.md b/lectures/inventory_dynamics.md index 98f06d6..a9a0dff 100644 --- a/lectures/inventory_dynamics.md +++ b/lectures/inventory_dynamics.md @@ -21,9 +21,6 @@ kernelspec: # 库存动态 -```{index} single: 马尔可夫过程, 库存 -``` - ```{contents} 目录 :depth: 2 ``` @@ -32,14 +29,14 @@ kernelspec: 在本讲座中,我们将研究企业的库存时间路径,其遵循所谓的s-S库存动态。 -这些企业 +这些企业遵循以下补货规则: -1. 等待直到库存下降至某个水平$s$以下,然后 -2. 订购足够数量的产品,将库存补充到容量$S$。 +1. 当库存水平下降至某个临界值$s$以下时, +2. 企业会订购足够数量的产品,将库存补充到目标水平$S$。 这种管理库存的方式在实践中很常见,并且在某些情况下也是最优的。 -早期文献和其宏观经济影响可以在{cite}`caplin1985variability`中找到。 +早期文献和其对宏观经济的影响可以在{cite}`caplin1985variability`中找到。 我们的本节的目标是学习更多关于模拟、时间序列和马尔可夫动态的知识。 @@ -62,7 +59,7 @@ from numba.experimental import jitclass ## 样本路径 -假设有一个公司,拥有库存 $X_t$ 。 +假设有一个公司,拥有库存 $X_t$。 当库存 $X_t \leq s$ 时,公司会补货至 $S$ 单位。 @@ -152,7 +149,7 @@ ax.legend(**legend_args) plt.show() ``` -现在让我们模拟多条路径,以便更全面地了解不同结果的概率: +现在让我们模拟多条路径,这样可以更好地了解库存动态的整体行为和可能的库存分布: ```{code-cell} ipython3 sim_length=200 @@ -178,7 +175,7 @@ plt.show() 通过这些 $X_T$ 的样本,我们可以构建其分布 $\psi_T$ 的图像。 -下面是$T=50$的情况下,一个可视化示例。 +下面是$T=50$的情况下的一个可视化示例。 ```{code-cell} ipython3 T = 50 @@ -250,7 +247,7 @@ plt.show() 核密度估计可以被理解为平滑的直方图。 -当被估计的分布很可能是平滑的时候,核密度估计比直方图更可取。 +当我们认为底层分布是平滑的时候,核密度估计通常比直方图提供更准确的图像。 我们将使用[scikit-learn](https://scikit-learn.org/stable/)中的核密度估计量 @@ -273,7 +270,7 @@ plot_kde(sample, ax) plt.show() ``` -概率质量的分配与上面直方图所显示的类似。 +概率密度的分配与上面直方图所显示的类似。 ## 练习 @@ -294,18 +291,18 @@ plt.show() 你应该能看到收敛性,体现在两个连续分布之间的差异越来越小。 -尝试不同的初始条件来验证,长期来看,不同初始条件下分布是不变的。 +尝试使用不同的初始条件来验证,无论从哪个初始状态开始,长期分布都会收敛到相同的平稳分布。 ``` ```{solution-start} id_ex1 :class: dropdown ``` -以下是一种可能的解法: +以下是其中一种解法: -因为其中的计算涉及大量的CPU周期,所以我们试图更高效地编写代码。 +由于这个计算需要大量的计算资源,我们需要编写更高效的代码。 -也就是编写一个专门的函数,而不是使用上面的类。 +为此,我们将创建一个专门的函数来替代之前使用的类,以提高计算效率。 ```{code-cell} ipython3 s, S, mu, sigma = firm.s, firm.S, firm.mu, firm.sigma @@ -354,13 +351,13 @@ ax.legend() plt.show() ``` -注意到,在 $t=500$ 或 $t=750$ 时密度几乎不再变化。 +从图中可以看出,随着时间的推移,分布逐渐收敛到一个稳定状态。 -我们得到了平稳密度的合理近似。 +在 t=500 和 t=750 时的分布几乎完全重合,表明我们已经得到了平稳密度的良好近似。 你可以通过测试多个不同的初始条件,来确定初始条件确实不重要。 -例如,尝试用所有公司从 $X_0 = 20$ 或 $X_0 = 80$ 开始重新运行上面的代码。 +例如,你可以尝试将所有公司的初始库存设置为 $X_0 = 20$ 或 $X_0 = 80$,然后重新运行上面的代码,观察分布最终是否收敛到相同的稳态分布。 ```{solution-end} ``` @@ -368,9 +365,9 @@ plt.show() ```{exercise} :label: id_ex2 -使用模拟的方式,计算从 $X_0 = 70$ 开始的公司在前50个周期内需要订货两次或更多的概率。 +使用模拟的方法,估计一家初始库存为 $X_0 = 70$ 的公司在前50个时期内至少需要补充库存两次的概率。 -你需要一个较大的样本量来获得准确的结果。 +为了获得统计上可靠的结果,请确保使用足够大的样本量。 ``` ```{solution-start} id_ex2 @@ -381,7 +378,7 @@ plt.show() 同样地,由于计算量相对较大,我们编写了一个专门的函数而不是使用上面的类。 -我们还将使用跨公司的并行化处理。 +我们将利用并行计算来同时处理多家公司的模拟,以提高计算效率。 ```{code-cell} ipython3 @jit(parallel=True) @@ -416,11 +413,11 @@ freq = compute_freq() print(f"至少发生两次缺货的频率 = {freq}") ``` -尝试将上面jitted函数中的`parallel`标志改为`False`。 +尝试将上面`@jit`[装饰器](https://zhuanlan.zhihu.com/p/53666925)中的`parallel`参数改为`False`。 根据你的系统配置,运行速度的差异可能会很大。 -(在台式机上,速度提升了5倍。) +(在我们的系统上运行速度提升了5倍!) ```{solution-end} ```