目录

1.前言——我对算法的理解

2.算法的种类

3.算法原理总结(首段段末给出完整篇)

3.1 模拟退火算法SA

3.2 禁忌搜索TS与邻域搜索

3.3 粒子群算法PSO

3.4 遗传算法GA与差分进化算法DE

3.5 蚁群算法ACO/AS


智能优化算法,也叫启发式算法,元启发式算法等,都差不多。主要包括我们常提到的:粒子群算法PSO,遗传算法GA,模拟退火算法SA,禁忌搜索算法TS,蚁群算法AC,大邻域搜索算法VNS,自适应大邻域搜索ALNS等等。

之所以提到上面几种,是因为它们太经典了。

1.前言——我对算法的理解

尽管近些年智能优化算法层出不穷,每隔一阵就有新的算法出现。比如帝国竞争,文化算法,灰狼算法等等。我个人的观点是,算法这么多,没必要都学。除非你是对算法特别感兴趣,或者是计算机相关专业,必须要深究算法,那可以蹭热点或者开发新算法。但对于大多数人来说,之所以用算法,本质原因是为了解决问题,那么好好分析问题本身属性,解好问题更重要。当然行有余力的吸收多种算法的精华于一身,取长补短当然更好。

闲话不多说,开始正题。

接下来分为篇1和篇2,总结下一开始提到的几种经典算法的原理。原理是最最精华的部分,理解了原理,有一个更高层次的把控;也能更好地融合各种算法的优势;当然还可以更好的理解代码。个人感悟是理解了原理,代码debug运行几遍,就可以差不多掌握算法了。

2.算法的种类

开始之前,我们先概览下算法大家族,把算法分门别类下。按照不同的角度,大概可以分为这么几类。

算法按照主要的维度,可以分为:个体寻优和群体寻优两大类。

我个人感觉相同之处都是利用计算机强大的算力,尽可能搜索更多的范围,也就是遍及更多的可行域(这样找到最优解的可能性大一些);但是也不能一味的漫无目的地搜索,所以我们会参照一定的行动指南,比如目标函数下降最快;或是经验等等,让搜索更有效率,不过这样又会带来一个问题,就是容易陷入短视思维,也就是会陷入局部最优解。所以算法最精妙的原理是:在搜索尽可能多的可行域(穷举)和构思出一定的行动指南(贪婪)之间把握平衡点,最终寻得最优。当然,这里的最优,可能不是我们常规意义上的最优。而是,从搜索的方案当中选出最好的,是较好的满意的,不是最好的。我们说的智能优化指的是寻优,不断变优的意思。

3.算法原理总结(首段段末给出完整篇)

3.1 模拟退火算法SA

模拟退火,Simulated annealing,简称SA,是对贪婪搜索的一种改进算法,——完整介绍见这篇。

算法的核心在于:以一定的概率接受较差解。我们知道,一般迭代的思路是,每次都期望往更好的方向走,每一步都更好,也就是说接受更好的解,忽略更差解(只能前进,不能后退)。但这样容易陷入局部最优。所以我们有的时候退后一步,毕竟有时弯路反而更近嘛。以上图为例,目的是寻求最小值。贪心算法,会找到局部最优解B;而假如我们以一定的概率接受较差解,那么解空间有可能跑到右边,有可能找到全局最优解C。

现在我们用通俗的语言再来描述下:模拟退火,是仿照固体退火原理,是一种基于概率(“Metropolis接受准则”)的算法。先来复习下固体退火原理——将固体加温至充分高(加温时,固体内部粒子随温升变为无序状,内能增大),再让其徐徐冷却(徐徐冷却时粒子渐趋有序),在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。所以:模拟退火算法的基本思路是从一个较高的温度出发,伴随温度参数的不断下降,在解空间搜寻目标函数的全局最优解,以一定的概率跳出局部最优找到全局最优值。

那么模拟退火的核心是:温度怎么下降?以及以多大的概率接受较差解?以及在温度下降过程中,解空间如何变化?这三点是模拟退火的精髓,也影响着最优解的质量。也就是说,你要使用模拟退火的话,这三点必须设计好或者设计得很巧妙。

一般来说,也就是说模拟退火最基础原始的版本中,温度下降通过一个介于0-1的系数来实现,也就是温度下降系数*当前温度,就是下一时刻的温度;接受的概率是仿照固体退火原理实现的,固体热力学定理中,温度为T时,出现能量差为dE的降温概率是,可以表示为:,这里k是一个常数,因为温度总是降低的,内能在降低,能量差为正,指数部分是负,因此保证了两点:(1)概率必定是介于-之间,即0-1之间;(2)温度不断在降低,因此指数部分分母在减小,指数部分在减小,那么接受较差解的概率在不断缩小。这两点保证了接受概率的合理性,以及初始接受较差解的可能性大,后面接受较差解的可能性越来越小,和认知也是一致的,初始想要遍及尽可能多的可行域,后面要保证算法收敛。也就是说,概率影响着解空间的变化。所以又回到一开始的部分,概率设计很重要。其实这种思路在很多改进型算法中也经常用。

简单来说就是判断当前解是否比原来的解,若新解函数值比原来的解更好,那么以1的概率接受它;若比原来的解,那么以p的概率接受它,p的取值与当前解,新解和控制参数t有关。

3.2 禁忌搜索TS与邻域搜索

TSLocal Search(LS)的扩展,是一种全局逐步寻优的全局性邻域搜索算法。传统的LS是通过迭代,不断搜寻邻域中更优的解来替换当前解,实现优化,该方式容易陷入局部最优。TS是模仿人类的记忆功能,在搜索过程中标记已经找到的局部最优解及求解过程,并于之后的搜索中避开它们——完整介绍见这篇:禁忌搜索(TS——Tabu Search)与邻域搜索基础知识。

算法通过禁忌策略实现记忆功能,通过破禁准则继承LS的强局部搜索能力。种种机制的配合,使得TS一方面具备高局部搜索能力,同时又能防止算法在优化中陷入局部最优。

主要的思想是设置禁忌列表,避免陷入局部最优。所以禁忌表的设计是关键,禁忌对象和禁忌长度是设计的核心,直接影响着算法的效率和性能。

3.3 粒子群算法PSO

3.4 遗传算法GA与差分进化算法DE

种群搜索算法,比较常见,用的也比较多。主要步骤是,交叉,变异,是仿照自然界遗传的思路设计的。核心在三个地方,编码&解码,交叉(算子),变异(算子)。它们的设计好坏直接影响着算法的性能——完整介绍见这篇。

说到这里,不得不提一下,差分进化算法——Differential Evolution,DE。因为它和遗传的步骤十分相似。它也是基于群体的启发式搜索算法,群中的每个个体对应一个解向量。(差分进化算法(Differential Evolution,DE)由Storn和Price于1995年首次提出。主要用于求解实数优化问题。该算法是一类基于群体的自适应全局优化算法,属于演化算法的一种,由于其具有结构简单、容易实现、收敛快速、鲁棒性强等特点,因而被广泛应用在数据挖掘、模式识别、数字滤波器设计、人工神经网络、电磁学等各个领域。1996年在日本名古屋举行的第一届国际演化计算(ICEO)竞赛中,差分进化算法被证明是速度最快的进化算法。——源于百度百科。)

包含,变异-交叉-选择,三个主要部分。对,你没看错,先变异,再交叉。注意这里的变异特指进行经过差分生成,交叉指的是父代(原来的个体)和子代(变异后的个体)进行交叉

差分说白了是用后面的序列值-前面的序列,从而得到一个新序列(这叫一阶差分。)常见的差分策略是随机选取种群中两个不同的个体,将其向量差缩放后与待变异个体进行向量合成。

其中,是三个随机数,区间为称为缩放因子,为一个确定的常数。表示第代。

3.5 蚁群算法ACO/AS

也是一种种群搜索算法。主要的思路是通过蚂蚁留下的信息素来指引下一步搜索,好的路线信息素会不断累积,会吸引蚂蚁向此聚集。但是蚂蚁不是完全朝好的方向走,这本质是为了避免短视,陷入局部最优。这主要通过两方面实现,第一是按照轮盘赌或者一定的概率朝信息素多的方向走;第二信息素会挥发——完整介绍见这篇。

本质还是在多样性和精确性之间谋取平衡。

这里分享一个很棒的开源库框架:GitHub - guofei9987/scikit-opt: Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Optimization Algorithm,Immune Algorithm, Artificial Fish Swarm Algorithm, Differential Evolution and TSP(Traveling salesman)

智能优化算法——篇1相关推荐

  1. 智能优化算法——篇2(邻域搜索大家族)

    目录 1.种群算法和邻域算法的区别与联系 2.算法原理总结 2.1 变邻域搜索算法VNS 2.2 自适应大邻域搜索算法ALNS 在篇1中我们提到,算法很多,但是最经典的有8种,分别是:遗传算法.禁忌搜 ...

  2. 多目标函数 matlab 粒子群_【LIBSVM】基于群智能优化算法的支持向量机 (SVM) 参数优化...

    前言 支持向量机 (Support Vector Machines,SVM) 有两个重要参数:一个是正则化系数(c),一个是核参数(g,高斯核函数).针对这两个参数的优化,在libsvm工具箱的基础上 ...

  3. 智能优化算法:海鸥算法原理及Matlab代码

    智能优化算法:海鸥算法原理及Matlab代码 文章导航 1. 算法原理 2. SOA算法流程 2.1 迁徙行为(exploration ability) 2.2 攻击行为(exploitation a ...

  4. 论文: 基于智能优化算法的测试数据生成综述

    缘由: 最近一直在看智能算法,然后进行了在测试函数上的实验,遇到问题. (1)测试函数 不是现实的问题,单纯的在测试函数 上进行一遍遍的比较,看不到具体的用途, 他的结果在我看来反应的 只是一个指标值 ...

  5. 智能优化算法:多目标粒子群优化算法(MOPSO)

    目录 一.粒子群优化算法(Particle Swarm Optimization,PSO) 二.多目标优化&Pareto支配 三.多目标粒子群优化算法(Multiple Objective P ...

  6. 智能优化算法合集 持续更新 收藏不亏∩ω∩

    近日看到了一篇论文,分类列举了当前已发展的智能优化算法,其体量令人惊讶...... 因研究方向相近,本文专栏后续更新这些智能优化算法的原理.步骤及实现代码(希望不断更) 欢迎各路大佬点赞收藏! 基于进 ...

  7. 智能优化算法:天牛须搜索算法

    往期内容: 智能优化算法(一):海鸥算法原理及Matlab代码 智能优化算法(二):海鸥算法之改进篇 智能优化算法(三):基于量子的鸽群优化算法 智能优化算法(四):基于Powell优化的鸽群优化算法 ...

  8. 数学建模——多目标规划模型(智能优化算法NSGA-II)

    摘要 本篇笔记对数学建模中常见的多目标规划问题提供了解法:在建立传统的多目标规划的常用模型的基础上,使用智能优化算法对多目标规划问题进行求解,通过Pareto Front直观展现非劣解的分布情况,以解 ...

  9. 智能优化算法(Ga,PSO,SA)高度模块化(可直接调用)python实现

    智能优化算法(Ga,PSO,SA)高度模块化(可直接调用)python实现 为啥做这篇文章 此篇文章基于本人数学建模实验课程的智能算法研究,老师要求用matlab实现一种优化算法分析,并且实现函数封装 ...

  10. 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章

    资料来源: <智能优化算法以及matlab实现>包子阳  余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...

最新文章

  1. 自动 Android* 应用测试
  2. 微生物组文献1采用FimH拮抗物选择性抑制尿路致病性大肠杆菌
  3. Core Animation1-简介
  4. 生产者消费者模式 php 【转】
  5. libc-glibc
  6. el表达式 if 和 if else 的写法
  7. 从WEB应用的角度,一个应用都需要维护一些不同作用范围的状态, 请问下面哪些状态作用域是WEB应用特有的:( )
  8. VMware Workstation虚拟机窗口小,无法显示内部系统全部桌面
  9. 蓝桥杯——输出米字形
  10. centos vim编辑器 第八节课
  11. pip install 出现报asciii码错误的解决
  12. 1.2Android系统移植的主要工作
  13. [UE4]IsValid方法妙用
  14. ICON源码复现(Implicit Clothed humans Obtained from Normals)
  15. 做人最大的无知,是错把平台当本事(深度好文)
  16. Vmware14安装苹果系统macos
  17. runtime从入门到精通(九)—— 万能界面跳转
  18. matlab将矩阵数据归一化到[0,255]
  19. JS前端图片压缩上传
  20. 第二章 Roboguide安装及注册步骤详解

热门文章

  1. 广州华龙展贸考场——科目三
  2. Aspose.Word 操作word表格的行 插入行 添加行
  3. Python百行代码随机生成姓名
  4. isupper函数和isdigit函数
  5. 红外接收hs0038NEC协议
  6. 如何优化网站的访问速度
  7. 【题解】SCOI-2010-连续攻击游戏
  8. 商家APP店内点餐开启有桌台点餐模式
  9. 数据库 - BC范式(BCNF)
  10. 360浏览器+7654联盟