很久以前,我在读博士期间写了《全局优化算法-理论和应用》[203],现在我想写一本更实用的优化和元启发式指南。目前,这本书处于开发和制作的早期阶段,因此预计会有很多变化。本文试图介绍优化以一种无障碍的方式为观众的本科生和研究生没有背景的领域。它试图提供关于优化算法在实践中如何工作的直觉,解决问题时要寻找什么东西,以及如何从简单、有效的“概念证明”方法获得给定问题的有效解决方案。我们遵循“边做边学”的方法,通过尝试解决一个实际的优化问题作为贯穿全书的示例主题。所有的算法在引入后都直接实现并应用于该问题。这让我们可以根据实际结果讨论他们的优势和劣势。我们学习如何比较不同算法的性能。我们尝试逐步改进算法,从非常简单的、效果不佳的方法转向高效的元启发式方法。
我们使用了用Python编写的具体示例和算法实现。它们可以在2007年6月29日GNU通用公共许可证版本3下的库thomasWeise/moptipy中免费获得。每个源代码列表在标题中都附有一个(src)链接,链接到存储库中文件的完整版本。清单通常是删节的节选。这意味着我们将忽略很多对理解算法不必要的细节,比如类型提示、健全检查,甚至是完整的方法。这些代码将会以完整的代码版本出现在GitHub存储库中。因此,这个完整的代码版本可能与书中插图的删节代码看起来不同。为了完全理解代码示例,我们建议读者熟悉Python、numpy和matplotlib。当然,如果您读这本书只是为了学习算法,您可以忽略源代码示例。 如今,算法对我们日常私生活和工作生活的影响越来越大。他们建议我们看有趣的电影或购买的产品。当我们开车时,它们帮助我们找到有效的路线,或者帮我们匹配附近下一辆可用的出租车。他们控制广告活动,并提出产品定价政策[151]。他们通过在工程、时间表和调度、产品设计和物流规划等多个领域提出良好的决策来支持我们。它们将是我们行业向智能制造和智能生产转型的最重要元素,它们可以自动化各种任务,如图1.1所示。
优化和运筹学为我们提供算法,为非常广泛的问题提出良好的解决方案。这些解决方案实现了预定义的目标,同时最小化(至少)一项资源需求,包括成本、能源消耗、空间、时间需求等等。除了节省直接成本外,减少资源消耗对环境也有好处。因此,优化可以帮助我们在经济和生态方面变得更高效。因此,我们可以列出三个明显的原因,为什么优化将成为下个世纪的关键技术: