从推公式到写代码:代码是联系理论和现实的桥梁,本书通过代码实现*优化算法,将理论与实践相结合,在编程中思考算法的计算过程,并通过代码将算法应用在实际问题中,以达到解决问题的目的。

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

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

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

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

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

章 最优化算法概述 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优化算法_Python最优化算法实战相关推荐

  1. python归并算法_python归并算法

    python数据结构与算法总结 python常用的数据结构与算法就分享到此处,本月涉及数据结构与算法的内容有如下文章: <数据结构和算法对python意味着什么?> <顺序表数据结构 ...

  2. python常用代码_Python常用算法学习(3)(原理+代码)——最全总结

    1,什么是算法的时间和空间复杂度 算法(Algorithm)是指用来操作数据,解决程序问题的一组方法,对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但是在过程中消耗的资源和时间却会有很大 ...

  3. python人脸识别算法_python人脸算法

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 若图片中包含多张人脸,只选取其中人脸面积最大的人脸. 支持png.jpg.jpe ...

  4. python常用代码_Python常用算法学习(4) 数据结构(原理+代码)-最全总结

    数据结构简介 1,数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成.简单来说,数据结构就是设计数据以何种方式组织并存贮在计算机中.比如:列表,集合与字 ...

  5. python 归并排序算法_python基本算法之实现归并排序(Merge sort)

    0.前言 评判一个算法的好坏的标准: 时间复杂度 空间复杂度 1.归并排序算法是什么? 冒泡排序(Bubble Sort)是一种建立在归并操作上面的一种有效的排序算法,由John von neuman ...

  6. python预测发展趋势_Python预测算法哪家强?权游龙妈是生还是凉凉?

    这个世界上只有两种人,看「权游」(权利的游戏)的,和不看「权游」的. 你们心心念的权游终于迎来了最终季,狼家史塔克的家训「Winter is coming」终终终终终于是应验了,人类与异鬼的战争一触即 ...

  7. python数字组合算法_python - 简单算法题 - 求三位数组合

    求三位数组合 lst = [3, 6, 2, 7] 这四个数字能组成多少个互不相同且无重复数字的三位数?比如362算一个,326算一个,请逐个输出他们 思路分析 从4个数里面取3个数,且不重复,然后进 ...

  8. python中加减乘除_Python基础算法综合:加减乘除四则运算方法

    #!usr/bin/env python # -*- coding:utf-8 -*- #python的算法加减乘除用符号:+,-,*,/来表示 #以下全是python2.x写法,3.x以上请在pyt ...

  9. 双色球python十种算法_python : 蒙特卡罗算法 应用于双色球

    参考书:算法设计与分析 王晓东 编著 :第7章 概率算法 7.5 蒙特卡罗算法 http://www.gdfc.org.cn/datas/history/twocolorball/history_1. ...

  10. python 最短路径算法_python Dijkstra算法实现最短路径问题的方法

    本文借鉴于张广河教授主编的<数据结构>,对其中的代码进行了完善. 从某源点到其余各顶点的最短路径 Dijkstra算法可用于求解图中某源点到其余各顶点的最短路径.假设G={V,{E}}是含 ...

最新文章

  1. Android环境变量的设置(详细图解版)
  2. Spring核心技术(七)——Spring容器的扩展
  3. OS- -进程详详解
  4. 通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]
  5. 前端学习(2256)如何解决冲突
  6. /etc/resolv.conf文件详解
  7. stm32cubeide调试查看函数值_STM32CubeIDE使用初探
  8. 847方波放大电路_身为工程师需要了解的模拟积分器电路!
  9. 10.java之父被B站学习者下载达7000万次的Java视频教程你还没有看过知乎
  10. 中国电信与阿里巴巴签署全面战略合作协议
  11. 51单片机lcd1602显示(模块)
  12. 爆炸性环境电气设计选型
  13. C++静态代码分析工具横向对比
  14. 爬虫入门实践:天气信息
  15. python研究背景与意义_课题研究的背景和意义
  16. Java初学者 搭建Java 开发环境
  17. 5个步骤做好会议复盘工作
  18. 3050显卡驱动安装+配置pytorch的cuda环境
  19. 随机算法 之随机数的产生
  20. opensips 配置文件

热门文章

  1. windows环境搭建redis集群
  2. 计算机屏保黑屏取消,电脑怎么取消屏保黑屏
  3. 菜鸟晋级必修 智能手机越狱/解锁/刷机完全教程
  4. 如何查询目标计算机的ip地址,基于Wireshark获取目标ip地址
  5. 【书籍阅读】-人在回路机器学习 Human-in-the-Loop Machine Learning(一)
  6. Protel 格式网表转换 Allegro 格式网表的 Skill 程序
  7. Python生成二维码
  8. ECharts制作报表模板
  9. Stata:产生唯一数据编码的三种方法
  10. Javascript分割/截取/连接字符串