各位从事运筹优化的小伙伴们,您是否对运筹优化非常感兴趣,准备要系统的学习时,却发现没有较系统的进阶版中文资料?中文的没有,英文的论文很多。但是看文献的时候你引他,他引他,为了追溯一个源头,花了一下午,最后还是无功而返?很多论文自解释性不强,这让初学者极为头疼。不看文献,那就去看看英文课本呗,看了课本,理解了原理,但,是不是又会苦于只了解理论,到编程阶段却又无从下手?学了一大堆理论,但还是停留在纸上谈兵的阶段。那行,那咱就去Github上呗,但是你又会发现,为了学习一个精确算法的代码,在github上找了又找,犹如大海捞针,即使找到了,别人的代码多数时候也是无头无尾,学习困难?
如果你有以上任何一种困惑,那么,你的解决方案来啦!!!
我们通过几年的积累和不懈的努力,终于将运筹优化领域常用的模型、算法、常用的求解器的使用以及经典案例及实战,整理成了一系列的教程,并编成了一本书,准备出版啦!想要系统的学习运筹优化建模、算法、编程实现的小伙伴们到时候阔以有很好的解决方案啦。
本书主要介绍了运筹优化领域常用的数学模型、精确算法以及相应的代码实现。本书首先简要介绍了大量基本理论,然后用丰富的配套案例讲解了多个经典的精确算法框架,最后结合常用的优化求解器(CPLEX和Gurobi),介绍了如何用Python和Java语言实现书中提到的所有精确算法。
全书共分为3部分。第1部分(第1-4章)为运筹优化常用模型及建模技巧。该部分着重介绍了整数规划的建模技巧和常见的经典模型。第2部分(第5-7章)为常用求解器API详解及应用案例。该部分主要介绍了两款常用的商业求解器(CPLEX和Gurobi)的使用方法,包括Python和Java的API详解、简单案例以及复杂案例。第3部分(第8-17章)为运筹优化常用算法及实战。该部分详细的介绍了几个经典的精确算法的理论、相关案例、伪代码以及相应的代码实现。
本书适合作为高等院校工业工程、管理科学与工程、信息管理与信息系统、数学与应用数学、物流工程、物流管理、控制科学与工程等开设运筹学相关课程的高年级本科生、研究生教材,同时可供在物流与供应链、交通、互联网、制造业、医疗、金融、能源等相关企业中从事有关运筹优化的开发人员、以及广大科技工作者和研究人员参考。
本书的三个部分更具体的介绍如下。
1 运筹优化常用模型及建模技巧
部分不需要读者有任何的编程基础,只需要掌握本科的运筹学线性规划相关理论和基本的对偶理论以及整数规划基础知识即可顺利读懂。本部分分为4章。第1章介绍了一些数学规划模型的分类和后面章节的精确算法会涉及到的一些凸优化领域的概念,包括凸集、凸包等。由于本书的重点不在此,因此本章介绍的非常简略。第2章介绍了一些非常常见的运筹学问题,例如指派问题、旅行商问题、车辆路径规划问题和多商品网络流问题。这些问题非常经典,并且具有代表性,当下很多实际问题都可以转化为这些问题的变种和拓展。第3章讲解了整数规划中常用的建模技巧,包括逻辑约束等约束的写法、非线性项的线性化方法等,这些技巧频繁的出现在业内顶级期刊发表的论文中,因此本书专门设置了一章来介绍这些内容。第4章讲解了运筹优化中一个非常重要的理论——对偶理论。不同于其他教材,本书中这一章主要聚焦如何写出大规模线性规划的对偶问题,是作者通过自己探索总结出的方法,目前国内外的各种教材和网站,鲜有看到类似的方法介绍。
第一部分是为后续的算法部分做铺垫,之后章节中会多次用到这一章介绍的概念和模型。
2 常用优化求解器API详解及应用案例
部分分为3章,主要是介绍常用优化求解器(CPLEX和Gurobi)及其应用案例。这部分将为之后的算法实战作好技术铺垫,本书第三部分的章节,都需要用到这一章的内容。要顺利读懂这一部分,需要读者有一定的编程基础,至少需要掌握Java或者Python中的一门语言。第5章详细地介绍了CPLEX的Java接口的用法。这部分的主要内容是根据CPLEX提供的用户手册整理而来,包括基本的类、callback、以及例子库中部分例子代码的解读。该章能够帮助读者快速的掌握CPLEX的Java接口的使用,读者无需直接去研读厚厚的英文版用户手册,可以通过该部分快速入门。第6章系统的介绍了Gurobi的算法框架以及其Python接口的用法。包括常用类、Python调用Gurobi的完整建模过程、日志信息、callback等部分。最后还附以简单的案例帮助读者理解。第7章提供了带时间窗的车辆路径规划(VRPTW)的代码实现。详细的给出了如何调用求解器,建立VRPTW的模型并求解。这个案例略微复杂,掌握了这个案例,其余更高难度的案例也就可以迎刃而解。但是本章的案例都是直接调用求解器得到模型的解,并没有涉及到自己实现精确算法的内容。
3 运筹优化常用算法及实战
部分是本书最为重要,干货最多的部分。该部分全面、系统的将运筹优化中常用的精确算法以通俗易懂的方式讲解给读者,尽量避免晦涩的解读。为了方便读者自己实现算法,我们为每一个算法,都提供了详细完整的伪代码,这些伪代码可以帮助读者自己从0到1动手实现相应的算法。在第8章,我们简要回顾了单纯形法,并给出了伪代码和Python代码实现。第9章,我们介绍了求解最短路问题的Dijkstra算法及其实现。Dijkstra算法也是一个非常常用的基础算法。第10章到第17章,我们以理论+详细小案例+伪代码+复杂大案例+完整代码实现的方式,为读者介绍了Branch and Bound, Branch and Cut,Column Generation, Dynamic Programming,Branch and Price, Dantzig-Wolfe Decomposition, Benders Decomposition,Lagrangian Relaxation这8个经典且常用的精确算法。这些算法经常出现在运筹学领域各个期刊的文章中,以及在工业界的具体项目之中。为了便于读者理解,我们尽量避免复杂的数学推导,着重讲解基本原理和算法迭代步骤,真正意义上帮助读者从理论到实践,一步到位,无需到处寻找零散资料,做重复性的整合工作。
相信认真研读这本教材的读者,一定会大有收获。尤其是对刚入门的硕士生和博士生们,
可以凭借这本教材,系统的掌握本领域的精确算法,更好的胜任自己的科研工作。对于
已拓展/进阶版本的代码手册,虽然是配套书中的理论和代码的,但是没有这些,并不影响原书的学习。
这些代码是给读者进一步学习使用,在学习了书本的内容基础上,再学习这些,会对能力的增长有非常大的帮助。
本部分代码主要由本书作者完成。
为了保护书的销量,代码手册的代码的配套模型、理论、算法介绍都在出版社出版的书中。
但是要说明的是,本部分是作者自行售卖的,与出版社无关。本部分代码的版权归作者所有,之后如果出现任何版权问题,代码的原作者将追究法律责任。
另外,本书的代码,作者很有可能会在1年或者2年后全部开源。在此先跟各位读者说明一下。经从业的运筹优化算法工程师,本书也可以作为一本非常详尽的学习工具书。
内容简介
本部分内容基本全部是较拓展/进阶代码手册拓展拓展长的代码,不便放入书的正文中,因此我们将做成PDF提供给出版社,随书附赠给读者。
本部分附赠代码主要作者为本书作者,以及华中科技大学博士生黄楠同学、杉树科技算法工程师伍健、华中科技大学邓发珩同学。
再次对他们表示衷心的感谢!
第10章 | 分支定界算法 | 10.11 Java 调用CPLEX 实现分支定界算法求解VRPTW |
第11章 | 分支切割算法 | 11.5.3 Java 调用CPLEX 实现分支切割算法求解VRPTW 完整代码 |
第12章 | 拉格朗日松驰 | 12.7.2 Python 代码实现:版本1 |
_ | _ | 12.7.3 Python 代码实现:版本2 |
第13章 | 列生成算法 | 13.3.4 Java 调用CPLEX 实现列生成求解下料问题:官方文档示例代码解读 |
第17章 | Benders分解算法 | 17.4 Java调用CPLEX实现Benders 分解求解 FCTP(Fixed-cost transportation problem) |
17.7 Python 调用Gurobi 实现Benders分解求解FLP(Facility location problem) |
(这部分内容就不粘贴过来了,感兴趣可以参考原文)
微店购买链接支付定金+填写问卷
详细订购方式参考微信原文:【重新发布】|《运筹优化常用模型、算法及案例实战:Python+Java实现》 【代码手册】 开始预购啦!!!
https://www.wjx.cn/vj/rfWheKu.aspx
非常感谢各位读者的支持和鼓励!!!
感谢本书的各位校稿人。
(感谢老师等的内容还是 就放在书里吧,不在这里说了)
感谢运筹优化领域微信公众号“数据魔术师”给予我的莫大帮助。该公众号发布的优化算法介绍文章以及完整代码资料为我实现精确算法提供了非常有用的参考。特别的,在Branch and Bound的实现过程中,我参考了该公众号分享的部分代码。由衷感谢该公众号的运营者:华中科技大学管理学院秦虎教授以及他的团队。秦虎老师的团队发布的算法科普文章以及举办的精确算法系列讲座,犹如雪中送炭,为很多运筹领域的初学者提供了巨大帮助。
感谢伍健在DW-分解算法、拉格朗日松弛算法方面提供的资源。也非常感激在算法实现过程中,伍健对我诸多疑惑的耐心解答,同时也非常感谢伍健对这本书出版的大力支持。
感谢华中科技大学博士生黄楠同学和华中科技大学邓发珩同学。他们的代码对本书的完成提供了莫大帮助。
感谢运筹优化领域公众号“运筹OR帷幄”。该公众号发布的高质量的理论介绍文章、讲座预告等给予了我大量的信息,在拓宽视野,了解运筹领域交叉学科的发展现状等方面给了我莫大的帮助。
感谢本书中所有参考文献的作者,是你们的研究成果让我学到了许多新的知识,获得了不少新的启发。本书中部分内容参考或者翻译自这些文献,在此向这些研究者们致以崇高的 敬意。