找回密码
 立即注册
查看: 318|回复: 0

干货 | 想学习优化算法,不知从何学起?

[复制链接]
发表于 2023-5-21 13:36 | 显示全部楼层 |阅读模式
大师好呀!
我是你们好久不见的帅气可爱的小编
不知道你萌是不是时常面临着这样的问题
下定决心想要学习优化算法


奈何,资料太多太杂
更无人指路,底子无从学起
看书?


看论文??



看代码???



最后最后还是放开了手
不想再爱过头,成了痛。


哈哈哈打趣就此打住
那么
就没有好法子学习优化算法了吗?
当然不是辣
今天就跟着小编法式一起学习!


走呀!!!
<hr/>先说两点

  • 本文面向的是刚入门学习算法的小白。
  • 本文介绍的是启发式算法的学习大纲,基于本公众号上的学习资料。

    为什么先学启发式算法呢?因为启发式算法不需要运筹学的基础,只要具备必然的思维能力都能很快上手学习。
  • 学习算法需要必然的编程基础,要能看懂C++/JAVA的代码。

    当然,语言层面的常识也不需要太深,毕竟算法更多的是在于思想和架构。

基础篇



公众号介绍的启发式算法主要分为两类:邻域搜索类和群体仿生类。常用的也基本上是这两类。
每一类都介绍了非常经典的一些算法,大师基础必然要好好打扎实。学习挨次参考如下。

邻域搜索类


  • 干货|迭代局部搜索算法(Iterated local search)探幽(附C++代码及注释)
  • 干货 | 用模拟退火(SA, Simulated Annealing)算法解决旅行商问题
  • 干货 | 变邻域搜索算法(Variable Neighborhood Search,VNS)超详细一看就懂
  • 干货 | 变邻域搜索算法(VNS)求解TSP(附C++详细代码及注释)
  • 干货 | 变邻域搜索算法解决0-1背包问题(Knapsack Problem)代码实例

群体仿生类



  • 干货 | 遗传算法(Genetic Algorithm) (附代码及注释)
  • 干货 | 遗传算法(Genetic Algorithm) Java 详细代码及注释
  • 干货 | 嘿!你和遗传算法的距离也许只差这一文(附C++代码和详细代码注释)
  • 干货|十分钟快速get蚁群算法(附代码)
  • 干货 | 【算法】粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解
  • 干货 | 人工鱼群算法 超详细解析附JAVA代码


进阶篇



学习完了上面的基础篇,相信大师已经对邻域搜索和群体进化等有了一个清晰的认识,再接再厉,继续学习更复杂的算法框架。学习挨次参考如下。
邻域搜索类


  • 干货|十分钟快速复习禁忌搜索(c++版)
  • 干货 | 到底是什么算法,能让人们如此绝望?
  • 干货 | 自适应大邻域搜索(Adaptive Large Neighborhood Search)入门到精通超详细解析-概念篇
  • 代码 | 自适应大邻域搜索系列之(1) - 使用ALNS代码框架求解TSP问题
  • 代码 | 自适应大邻域搜索系列之(2) - ALNS算法主逻辑布局解析
  • 代码 | 自适应大邻域搜索系列之(3) - Destroy和Repair方式代码实现解析
  • 代码 | 自适应大邻域搜索系列之(4) - Solution定义和打点的代码实现解析
  • 代码 | 自适应大邻域搜索系列之(5) - ALNS_Iteration_Status和ALNS_Parameters的代码解析
  • 代码 | 自适应大邻域搜索系列之(6) - 判断接受准则SimulatedAnnealing的代码解析
  • 代码 | 自适应大邻域搜索系列之(7) - 局部搜索LocalSearch的代码解
  • 自适应大邻域 | 用ALNS框架求解一个TSP问题 - 代码详解
  • Greedy Randomized Adaptive Search 算法超详细解析,附代码实现TSP问题求解
群体仿生类


  • 基于MPI的并行遗传算法
应用篇



主要介绍应用前面所学的框架,来求解各类问题,包罗如何设计算子,如何创新算法框架等等。

  • 干货 | 十分钟掌握禁忌搜索算法求解带时间窗的车辆路径问题(附C++代码和详细代码注释)
  • 论文拾萃 | 基于树暗示法的变邻域搜索算法求解考虑后进先出的取派货旅行商问题(附C++代码和详细代码注释)
  • 干货|变邻域搜索(VNS)算法求解Max-Mean Dispersion Problem(附代码及详细注释)
  • 遗传算法求解混合流水车间调剂问题(附C++代码)
小结


好了,以上的学习过程概略就是这样,小编差不多也是按照这个历程走过来的。最后再多说几句,启发式算法我感觉更注重是代码的能力吧。
很多人学习启发式算法,光是纠结理论而不愿动手去写代码,就容易陷入牛角尖死胡同。在启发式的世界里,没有绝对这一说,很可能你这个算法框架对于一个问题效果很好,但是另一个问题效果却奇差,这都是有可能的。
还有,代码实现也长短常重要的,就拿VRPTW这类问题来说,同一份伪代码,实现同样的效果,分歧人的算法运行时间可能就差几十倍甚至几百倍都有的。为什么呢?因为在搜索的过程很多人没有做去重优化。导致时间大幅度上升。这些都是需要靠代码和实践经验得出来的。
所以但愿大师千万不要眼高手低,小编之所以敢说这样的话,是写了无数个算法代码的心得体会,绝不是螃蟹生儿子--虾BB哦。
最后的最后,祝大师学有所成。

END
秦虎传授的联系方式为微信号:43340630,更多新文章请存眷微信公众号:数据魔术师

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-29 15:23 , Processed in 0.101455 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表