猜你喜欢
Python最优化算法实战

Python最优化算法实战

书籍作者:苏振裕 ISBN:9787301315330
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:6247
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

  本书以理论结合编程开发为原则,使用Python作为开发语言,讲解优化算法的原理和应用,详细介绍了Python基础、Gurobi 优化器、线性规划、整数规划、多目标优化、动态规划、图与网络分析、智能优化算法。对于算法部分的每一种算法都包含原理和编程实践,使读者对优化算法的认识更加深入。

  本书分为 3 篇共 9 章。第 1 篇(第 1~3 章)是优化算法与编程基础:第 1 章介绍了什么是优化算法及其在生产和生活中的应用;第 2章介绍Python编程基础和Python数据分析库及绘图库;第 3章讲解Gurobi 优化器的基础和高级特性。第 2篇(第 4~6章)是数学规划方法:第 4章详细讲解线性规划的知识,包括单纯形法、内点法、列生成法、拉格朗日乘子法、对偶问题;第 5 章讲解整数规划解法的分支定界法和割平面法;第 6 章讲解多目标优化的概念及基于单纯形法的目标规划法。第 3 篇(第 7~9 章)是启发式算法:第 7 章介绍动态规划算法;第 8 章讲解图与网络分析,介绍最小生成树、最短路径、网络流、路径规划等问题的建模;第 9 章讲解了粒子群算法和遗传算法求解各种类型优化算法问题的方法。

  本书内容丰富,实例典型,实用性强,适合各个层次从事优化算法研究和应用的人员,尤其适合有一定算法基础而没有编程基础的人员阅读。


作者简介

  苏振裕,厦门大学金融学硕士,现任SHEIN 智慧供应链资深算法工程师。知乎专栏《从推公式到写代码》作者,运筹优化论坛(optimize.fun)创建人。在大数据、人工智能、运筹优化和供应链方面,具有多年的相关算法研究应用经验。

编辑推荐

  理论与实践相结合,提高应用能力

  算法与编程相结合,解决实际问题

  数学思维+编程实践,可多方法优化求解问题

  每个案例均有源代码,扫码即可下载应用


前言

为什么要写这本书?

在大数据时代,敏捷、准确的数据分析和预测将成为现实,各类大数据算法和AI(Artificial Intelligence,人工智能)算法不断涌现,在各行各业得到了广泛应用。当前大数据算法可分为两大类,一类是以统计和机器学习为代表的算法,另一类是以数学规划和启发式算法为代表的最优化算法。由于机器学习算法被广泛应用,对应的算法有大量的标准化工具,工程师和研究人员只需要将问题建模成算法对应的形式即可应用这些工具包。相比之下,数学规划和启发式算法则没有标准化的算法工具包可用,在建模过程中,工程师和研究人员不仅需要对问题有深入的理解,还需要编写对应的模型代码,因此,对他们的综合能力提出了更高的要求。

市场中的最优化算法类书籍,大多侧重算法原理的阐述,对案例的讲解也多使用手动计算的方式,在实际应用过程中往往要花费大量的时间,在问题规模较大时手动计算往往不再适用,所以这也是本书编写的初衷。在学习算法知识过程中,往往我们对书本的知识了然于胸,但尝试应用这些知识解决实际问题时却无从下手。因此,我决定写最优化算法的书籍,一方面介绍最优化算法的原理,另一方面通过代码实现最优化算法,将原理与实践相结合,在编程中思考算法的计算过程,并通过代码将算法应用在实际问题中,达到解决问题的目的。


本书特色

1. 理论联系实际,应用性强

本书的案例多从生活中提取,针对实际问题讲解算法原理和计算方法,使读者在阅读过程中能较好地联系实际场景,从而更容易理解本书内容。

2. 理论与编程相结合,提高应用能力

本书的定位是理论与编程相结合,因此除了理论部分的公式推导,还结合图形化方法演示各种算法的优化过程,使读者对复杂问题有一个直观的感受,可更好地理解迭代求解问题,将实际问题建模成数学问题,以及使用数学工具求解。

3. 一个问题多种方法,提高学习效率

本书中大部分例题既可以用数学规划法解决,也可以用智能优化算法解决,通过比较多种不同方法的差异,可深入理解算法原理和应用场景。


本书读者对象

从事优化计算的研究人员及工程师。

算法研究方向的开发技术人员。

希望学习最优化算法的人员。

希望提升算法编程能力的开发技术人员。


资源下载

本书所涉及的源代码已上传至百度网盘,供读者下载。请读者关注封底“博雅读书社”微信公众号,找到“资源下载”栏目,根据提示获取即可。


目录

| 第1篇 最优化算法与编程基础 |

第1章 最优化算法概述 2

1.1 最优化算法简介 3

1.2 最优化算法的内容 4

1.2.1 规划论 4

1.2.2 库存论 5

1.2.3 图论 6

1.2.4 排队论 7

1.2.5 可靠性理论 8

1.2.6 对策论 8

1.2.7 决策论 8

1.2.8 搜索论 9

1.3 本章小结 9

第2章 Python编程方法 10

2.1 开发环境安装 11

2.2 编程基础:Python语法 17

2.2.1 基础数据结构与基本运算 18

2.2.2 关于Python的列表、元组、字典、集合 18

2.2.3 程序控制语句 21

2.2.4 函数 21

2.2.5 类与实例 22

2.2.6 迭代 23

2.3 数据分析:NumPy基础 24

2.3.1 NumPy基础数据结构 24

2.3.2 NumPy的随机数 26

2.3.3 NumPy矩阵运算 28

2.3.4 NumPy线性代数 31

2.4 Pandas基础 32

2.4.1 Pandas基础数据结构 32

2.4.2 Pandas基础统计函数 35

2.4.3 Pandas基础数据处理 37

2.4.4 分组统计 39

2.4.5 apply函数 41

2.5 Python绘图 42

2.5.1 常用图形 43

2.5.2 图形属性 47

2.5.3 组合图和子图 49

2.5.4 三维图 51

2.5.5 动态图 55

2.6 本章小结 57

第3章 Gurobi优化器 58

3.1 Gurobi的数据结构 59

3.1.1 Multidict 59

3.1.2 Tuplelist 60

3.1.3 Tupledict 61

3.1.4 应用范例 62

3.2 Gurobi的参数和属性 65

3.2.1 参数类型 65

3.2.2 修改参数 75

3.2.3 修改参数的例子 75

3.2.4 属性类型 77

3.2.5 查看修改属性 85

3.2.6 修改属性的例子 85

3.3 Gurobi线性化技巧 85

3.3.1 最大值max 86

3.3.2 最小值min 88

3.3.3 绝对值abs 89

3.3.4 逻辑与and 90

3.3.5 逻辑或or 90

3.3.6 指示函数indicator 90

3.3.7 带固定成本约束 91

3.3.8 分段线性函数 91

3.4 Gurobi多目标优化 92

3.5 callback函数 96

3.5.1 回调函数callback定义 97

3.5.2 状态where与值what 97

3.5.3 callback函数的功能 98

3.6 本章小结 102

| 第2篇 数学规划方法 |

第4章 线性规划 104

4.1 线性规划的标准型 105

4.2 单纯形法 105

4.2.1 单纯形法的原理 106

4.2.2 单纯形法的过程 106

4.2.3 单纯形法代码 111

4.3 单纯形的数学规范型 113

4.4 内点法 114

4.4.1 内点法的原理 114

4.4.2 内点法过程 115

4.4.3 内点法代码 118

4.5 列生成法 120

4.5.1 列生成法的原理 120

4.5.2 列生成的过程 123

4.6 对偶问题 126

4.6.1 对偶问题的形式 127

4.6.2 对称形式对偶 128

4.6.3 对偶单纯形 129

4.6.4 对偶问题的应用 130

4.7 拉格朗日乘子法 130

4.7.1 无约束优化 131

4.7.2 等式约束优化 131

4.7.3 不等式约束优化 132

4.7.4 拉格朗日对偶 134

4.8 本章小结 137

第5章 整数规划 138

5.1 快速掌握Gurobi整数规划 139

5.2 分支定界法 140

5.3 割平面法 142

5.4 本章小结 147

第6章 多目标优化 148

6.1 多目标优化的一般形式 149

6.2 Pareto最优解 149

6.3 多目标优化求解方法 151

6.4 目标规划法 152

6.4.1 偏差变量 153

6.4.2 优先等级和权重系数 153

6.4.3 目标规划单纯形法 154

6.4.4 目标规划Gurobi实现 158

6.5 NSGA-Ⅱ 159

6.6 本章小结 160

| 第3篇 启发式算法 |

第7章 动态规划 162

7.1 多阶段决策问题 163

7.2 动态规划的基本概念 164

7.3 动态规划的最优化原理 165

7.4 最短路径问题 166

7.5 使用整数规划解最短路径问题 169

7.6 背包问题 170

7.7 本章小结 175

第8章 图与网络分析 176

8.1 图的基本概念 177

8.2 图的矩阵表示 178

8.3 最小生成树 179

8.4 最短路径问题 183

8.5 网络最大流问题 187

8.6 路径规划 190

8.7 VRP问题 196

8.8 本章小结 203

第9章 智能优化算法 204

9.1 粒子群算法 205

9.1.1 粒子群算法原理 205

9.1.2 粒子群求解无约束优化问题 207

9.1.3 粒子群求解约束优化问题 211

9.1.4 粒子群求解旅行商问题 218

9.2 遗传算法 225

9.2.1 遗传算法原理 225

9.2.2 遗传算法的编码方法 227

9.2.3 遗传算法的选择操作 230

9.2.4 遗传算法求解无约束优化问题 231

9.2.5 遗传算法库Geatpy的介绍 233

9.2.6 使用Geatpy求解约束优化问题 239

9.2.7 使用Geatpy求解多目标优化问题 241

9.3 本章小结 242


短评

比较基础,适用于新手,适合刚开始学python和最优化的,其实大部分内容都是网上能查到的,软件包括用户手册里有的。这里主要是把常用的集中在一起,然后翻译成中文了。对于已有基础的人,不推荐。

2020-09-27 10:47:26

不错的书,以后仔细看。

2020-09-25 17:05:36

有点儿薄 封面也太奇怪了吧 像是印刷失误

2020-09-23 10:19:39

质量非常好,与卖家描述的完全一致,非常满意,超出期望值,发货速度非常快,包装非常仔细、严实,物流公司服务态度很好,运送速度很快,很满意的一次购物~

2020-09-23 22:57:06

最近研究最优化算法刚好搜到这本,正好我也在学习Python编程,正符合需求,不得不说这本书写的确实不错,从推公式到写代码,从理论到实际,非常实用

2020-09-24 10:27:31

我讲原理,再讲代码,对学习运筹优化知识非常有帮助,特别是刚接触运筹和最优化的初学者。

2020-09-22 09:39:52

产品特色