这本书讨论了动态规划及其在经济学、金融学和相关领域中的应用。它汇集了动态规划理论的最新创新,并提供了应用和代码,可以帮助读者接近研究前沿。本书的目标读者是研究生和研究人员,尽管大多数章节对具备坚实定量背景的本科生也是可访问的。本书包含了动态规划的经典结果,这些结果可以在Bellman(1957)、Denardo(1981)、Puterman(2005)和Stokey和Lucas(1989)等文献中找到,以及在过去几十年中由研究人员和从业者创建的扩展,他们在如何制定和解决可以解释数据中观察到的模式的动态模型时面临挑战。这些扩展包括递归偏好、强健控制、连续时间模型和时间变化的折现率。这些设置通常无法满足传统方法所基于的收缩映射约束条件。为了适应这些应用,本书的关键理论章节(第8-9章)采用并扩展了Bertsekas(2022b)的抽象框架。这种方法提供了很大的通用性,同时还提供了透明的证明。第1-3章提供了解决固定点问题和计算终身估值的动机和背景材料。第4章和第5章分别涵盖了最优停止和马尔可夫决策过程。第6章将马尔可夫决策框架扩展到折现率随时间变化的情境。第7章涵盖了递归偏好。第4-6章的动态规划的主要理论结果是第8-9章更一般结果的特殊情况。关于连续时间模型的简要讨论可以在第10章找到。数学倾向的读者,具有一些动态规划背景,可能更喜欢从第8-9章的一般结果开始。事实上,可以反向阅读文本,跳转到第8-9章,然后根据兴趣返回到特殊情况。然而,我们的教学经验告诉我们,大多数学生在第一遍阅读时会发现一般结果具有挑战性,但在通过前几章的动态规划练习后,会容易得多。这就是为什么我们从特殊情况开始呈现,然后以一般结果结束的原因。
希望将本书用作本科生教材的教师可以从第1章开始,略读第2章,深入研究第3至第5章,可选择包括第6章并完全跳过第7至第10章。
本书侧重于具有有限状态空间的动态规划问题,将更一般的设置留给第二卷。限制关注于有限状态会带来一些成本,因为在某些特定情况下,连续状态模型更简单(一个例子是高斯线性二次模型)。此外,许多连续状态模型允许我们使用微积分,这是人类最有用的发明之一。尽管如此,有限状态模型非常有用。计算表示始终使用有限数量的浮点数,并且在经济学和金融学中许多基础模型已经是离散的。此外,专注于具有有限状态空间的问题使我们能够避免使用函数分析和测度论机制,以及施加相关的辅助条件来确保可测性和极值的存在。没有这些干扰,动态规划的核心理论特别简单。
因此,出于这些原因,我们认为即使对于精通的读者,动态规划的良好方法也始于对有限状态情况的彻底分析。这是我们在第一卷中所完成的任务。
在本书中,计算机代码是第一类公民。代码是用Julia编写的,可以在以下网址找到: https://github.com/QuantEcon/book-dp1 我们选择了Julia,因为它是开源的,并且Julia允许我们编写尽可能接近相关数学方程的计算机代码。文本中的Julia代码是为了最大化清晰度而非速度而编写的。 我们还编写了相匹配的Python代码,可以在相同的存储库中找到。与适当的科学库结合使用时,Python非常适用且高效于动态规划,但实现往往特定于库,并且有时不像Julia中的代码那么清晰。这就是为什么我们选择Julia用于文本中嵌入的程序的原因。 我们尝试将严格的理论与令人兴奋的应用相结合。尽管使用多层抽象来统一理论,但结果是实际的,受到经济学和金融学中重要优化问题的启发。