# 前言与致谢
第一版前言
我在序贯决策问题方面的工作源于20世纪80年代在卡车运输行业开始的研究,在我的职业生涯中,这一研究范围逐渐扩展到铁路、能源、医疗、金融、电子商务、供应链管理,甚至材料科学的学习领域。序贯决策问题出现在日常活动中,例如运动、烹饪、购物,以及寻找到达目的地的最佳路径。它们也出现在为初创公司设计产品、为初创公司招聘人员,以及设计营销活动的过程中。
序贯决策问题(也称为动态规划或最优控制问题)的早期工作专注于求解一个著名且以难以求解著称的方程——贝尔曼方程(在连续问题中则称为哈密顿-雅可比方程)。我加入了一个致力于近似求解这些方程的研究群体;这项工作最终促成了一本关于近似动态规划的成功著作,为一类资源分配问题带来了突破性进展。然而,随着时间推移,我逐渐意识到,近似动态规划只是解决非常狭窄一类问题的强大方法——正如那句老话所说,手里拿着锤子,看什么都像钉子。
我在广泛问题领域的工作让我意识到,使用可以从研究文献中找到的各种广泛方法的重要性。我发现,我可以用同一个框架来建模任何序贯决策问题,这个框架涉及在制定决策的方法中进行搜索,这些方法在研究文献中通常被称为”策略”。随后,我得以将各种各样的方法归纳为四大类(元类)策略,这四类策略涵盖了任何决策制定方法,包括文献中提出的或实践中使用的任何方法(甚至包括那些尚未被发明出来的方法!)。
这一框架是我于2022年完成的一部研究生水平著作的基础,该书名为Reinforcement Learning and Stochastic Optimization: A unified framework for sequential decisions(见tinyurl.com/RLandSO)。在撰写此书的过程中,我意识到序贯决策问题具有普遍性,出现在人类的每一项活动中。此外,这些理念可以(也应该)被教授给更广泛的受众,而不仅仅是我们通常在运筹学、计算机科学、经济学以及工程学的某些领域中所见到的那种分析能力较强的群体。
本书的目标是让读者理解如何着手处理、建模并求解序贯决策问题,即便他们从未打算编写一行代码。虽然本书具有分析性质,但真正的目标是教会读者如何思考序贯决策问题,将其分解为序贯决策模型的五个核心要素,对不确定性进行建模,然后设计策略。
正如统计学在不同群体中有多种教学风格一样,我相信在向不同受众教授这些理念方面也会出现类似的演变。本书中的例子来自运筹学领域,我喜欢称之为”日常生活的数学”。我认为,无论读者的专业领域如何,他们都会发现本书中的大多数例子十分熟悉。同时,我也可以很容易地设想出针对不同问题领域(如医疗、金融、能源、机器人技术和供应链管理,这份清单当然远不完整)专门设计的版本。
第一版致谢
对本书背后工作的任何恰当致谢,都应该认可所有为研究生水平教材Reinforcement Learning and Stochastic Optimization: A unified framework for sequential decisions做出贡献的人。需要感谢的人实在太多,无法在此一一列出,我请读者查阅该书中的致谢部分,那里记录了我对众多曾帮助我理解序贯决策问题之人所做的最大努力的认可。
尽管如此,我仍想特别感谢几位对本书做出贡献的人。首先是一群充满热情的实习生,他们编写了本书习题中使用的所有Python模块:Raluca Cobzaru、Andrei Grauer、Joy Hii、John Nguyen和Robert Raveaunu。我尤其要感谢德国卡尔斯鲁厄大学教授Dennis Djanka,他将原始的Python模块从Python 2升级到Python 3,并进行了修订,使该代码库更易于使用。
其次,我要热忱感谢Juliana Nascimento博士,她逐行检查了这些Python代码,修复了错误,理清了逻辑,并帮助我编写了基于这些习题的问题集。
最后,也是最重要的,是我的本科生课程ORF 411:”序贯决策分析与建模”的学生们,他们报名参加并参与了这门在任何地方首次专门开设的”序贯决策分析”课程。他们帮助我完善了课程讲义,讲义可在tinyurl.com/RLSOcourses找到(向下滚动至”序贯决策分析本科生/硕士生课程”以获取幻灯片)。
Warren B. Powell
美国新泽西州普林斯顿
2022年8月
第二版前言
2026年,我决定通过Kindle Direct Publishing出版,我为我的新专著系列Bridging Decision Problems选择了这一出版方式。当我看到这一方式是如此简便时,我意识到我也可以对Sequential Decision Analytics and Modeling采取同样的做法。KDP将使我能够在推出新版本的同时进行小幅更新,而无需经过出版商这一繁琐环节。它使我能够以极低的价格提供Kindle版本,同时提供价格更为合理的精装版本。
第二版包含相同的一组应用章节。最大的变化在第1章,我在其中融入了关于定义不同决策类型的想法。每个应用章节现在都以”本章概览”开头,帮助读者理解本章的内容。全书还得益于一次亟需的校对工作,修正了一些细微的编辑问题和偶尔出现的错误。
本版还采用了一种我称之为”问题构建”的流程,该流程首先(用文字)明确性能指标、所做决策的类型,以及不确定性的来源。我的新专著Bridging Decision Problems, Volume I: Framing the Problem用150页的篇幅探讨了这三个问题,可见即便不涉及数学建模,这些问题也并不像听起来那么简单。
每一章现在都在叙述部分之后紧接着包含一个简短的小节,名为”问题构建”,通过列出指标、决策和不确定性,为数学建模部分做铺垫。我们对问题构建的应用会让这一过程看起来比大多数实际问题所需的过程简单得多,因为我并没有展示从完整的指标、决策和不确定性清单开始,再将其精简为模型中所呈现内容的完整过程。
第二版致谢
我首先要感谢下载了本书的数千名读者。截至本文撰写之时,本书已在全球范围内获得了近18,000次下载(见图 0.1)。读者的反馈实在令人倍感温暖。
本书的一个重要特色是伴随大多数章节而配备的Python模块。第一版出版几年后,令我相当失望的是,我得知Python已从版本2更新到版本3,原有的模块已无法运行(而我在1990年就放弃了编程,这一决定恰恰是我取得成功的关键所在)。
可以想象,当德国卡尔斯鲁厄大学教授Dennis Djanka联系我,告知他已用Python 3完全重写了这个代码库时,我内心是多么感激。此外,他还做出了以下补充(正如他在邮件中所总结的):
- 引入了抽象基类SDPModel和SDPPolicy,使得以最少的代码量便可轻松搭建新的模型和策略。
- 完全重写了AssetSelling、MedicalDecisionDiabetes和StochasticShortestPath_static模块的代码,并为每个问题创建了Jupyter Notebook,引导用户从创建模型和策略,到调优策略,再到解读结果的整个过程。
此前,我曾使用tinyurl.com/sdagithubnew为Dennis的目录版本创建了一个URL,同时保留了我原有目录的tinyurl.com/sdagithub。随着第二版的发布,我已将原始URL也更改为指向Dennis的新代码库。
Warren B. Powell
美国新泽西州普林斯顿
2026年2月