之前做特征选择,实现过基于群智能算法进行最优化的搜索,看过一些群智能优化算法的论文,在此做一下总结。

最优化问题

  在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。

  工程设计中最优化问题(optimalization problem)的一般提法是要选择一组参数(变量),在满足一系列有关的限制条件(约束)下,使设计指标(目标)达到最优值。因此,最优化问题通常可以表示为数学规划形式的问题。进行工程优化设计时,应将工程设计问题用上述形式表示成数学问题,再用最优化的方法求解。这项工作就是建立优化设计的数学模型。

  
  最优化问题分为函数优化问题和组合优化问题两大类,其中函数优化的对象是一定区间的连续变量,而组合优化的对象则是解空间中的离散状态。其中典型的组合优化问题有旅行商(Traveling salesman problem,TSP)问题、加工调度问题(Scheduling problem,如Flow-shop,Job-shop)、0-1背包问题(Knapsack problem)、装箱问题(Bin packing problem)、图着色问题(Graph coloring problem)、聚类问题(Clustering problem)等。

最优化算法

根据自己对最优化的理解,采用最优化算法解决实际问题主要分为下列两步:

  • 建立数学模型。对可行方案进行编码(变量),约束条件以及目标函数的构造。
  • 最优值的搜索策略。在可行解(约束条件下)搜索最优解的方法,有穷举、随机和启发式搜索方法。

最优化算法有三要素:变量(Decision Variable)、约束条件(Constraints)和目标函数(Objective function)。最优化算法,其实就是一种搜索过程或规则,它是基于某种思想和机制,通过一定的途径或规则来得到满足用户要求的问题的解。

优化问题相关算法有如下分类:

精确算法(绝对最优解)

精确算法包括线性规划、动态规划、整数规划和分支定界法等运筹学中的传统算法,其算法计算复杂性一般很大,只适合于求解小规模问题,在工程中往往不实用。

启发式算法(近似算法)

  启发式方法指人在解决问题时所采取的一种根据经验规则进行发现的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案。

领域搜索算法。从任一解出发,对其领域的不断搜索和当前解的替换来实现优化。根据搜索行为,它又可分为局部搜索法和指导性搜索法。

  • 局部领域搜索法(也称爬山法)。以局部优化策略在当前解的领域中贪婪搜索,如只接受优于当前解的状态作为下一当前解的爬山法;接受当前邻域中的最好解作为下一当前解的最陡下降法等。

  • 指导性搜索法。利用一些指导规则来指导整个解空间中优良解的探索,如SA、GA、EP、ES和TS等.

个体启发(寻找相对最优)

特点:每次输出的是相同的。从一个解开始,寻找最优,易陷入局部最优。

爬山算法

算法思想:从当前的节点开始,和周围的邻居节点的值进行比较。如果当前节点是最大的,那么返回当前节点,作为最大值(即山峰最高点);反之就用最高的邻居节点替换当前节点,从而实现向山峰的高处攀爬的目的。

其实就是,在初始值的附近,找到最大的一个。

  • 优点

    • 容易理解,容易实现,具有较强的通用性;
    • 局部开发能力强,收敛速度很快
  • 缺点

    • 全局开发能力弱,只能搜索到局部最优解;
    • 搜索结果完全依赖于初始解和邻域的映射关系。

禁忌算法(Tabu Search,TS)

基本思想:基于爬山算法的改进,标记已经解得的局部最优解或求解过程,并在进一步的迭代中避开这些局部最优解或求解过程。局部搜索的缺点在于,太过于对某一局部区域以及其邻域的搜索,导致一叶障目。为了找到全局最优解,禁忌搜索就是对于找到的一部分局部最优解,有意识地避开它,从而或得更多的搜索区域

  • 特点:

    • 避免在搜索过程中的循环
    • 只进不退的原则,通过禁忌表实现
    • 不以局部最优作为停止准则
    • 邻域选优的规则模拟了人类的记忆功能
  • 禁忌表:用于防止搜索出现循环

    • 记录前若干步走过的点、方向或目标值,禁止返回
    • 表是动态更新的
    • 表的长度称为Tabu-Size
  • 禁忌表的主要指标(两项指标)

    • 禁忌对象:禁忌表中被禁的那些变化元素
    • 禁忌长度:禁忌的步数
  • 禁忌对象(三种变化)

    • 以状态本身或者状态的变化作为禁忌对象
    • 以状态分量以及分量的变化作为禁忌对象
    • 采用类似的等高线做法,以目标值变化作为禁忌对象
  • 禁忌长度:可以是一个固定的常数(T=c),也可以是动态变化的,可按照某种规则或公式在区间内变化。

    • 禁忌长度过短,一旦陷入局部最优点,出现循环无法跳出;
    • 禁忌长度过长,候选解全部被禁忌,造成计算时间较大,也可能造成计算无法继续下去。

参考:

  1. 禁忌搜索算法(Tabu Search)
  2. 禁忌搜索算法详解

贪婪算法

从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到算法中的某一步不能再继续前进时,算法停止。

基本都要先排序,从排序的开始那个依次判断,符合就留下不符合就去掉。

模拟退火(simulated annealing,SA)

模拟退火算法作为局部搜索算法的扩展,在每一次修改模型的过程中,随机产生一个新的状态模型,然后以一定的概率选择邻域中能量值大的状态.这种接受新模型的方式使其成为一种全局最优算法,并得到理论证明和实际应用的验证.SA虽然在寻优能力上不容置疑,但它是以严密的退火计划为保证的,具体地讲,就是足够高的初始温度、缓慢的退火速度、大量的迭代次数及同一温度下足够的扰动次数。

用兔子的故事来说:兔子喝醉了。他随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,他渐渐清醒了并朝他踏过的最高方向跳去。这就是模拟退火。

其实就是,先用初始值进行随机更新,记录每次更新的值,最后取历史记录中最大的值。

参考:模拟退火算法

群体智能(全局最优)

类别:

  • 粒子群算法(PSO)
  • 蚁群算法(ACO)
  • 人工蜂群算法(ABC)
  • 人工鱼群算法(AFSA)
  • 混洗蛙跳算法(SFLA)
  • 烟花算法(FWA)
  • 细菌觅食优化(BFO)
  • 萤火虫算法(FA)

特点:

  • 全局寻优
  • 每次的解都不同
  • 时间较长

智能计算包括:

  • 进化算法(EC),如遗传算法。
  • 模糊逻辑
  • 群智能(SI)算法
  • 人工免疫系统(AIS)
  • 人工神经网络(ANN)

参考:

  1. 最优化问题及其分类
  2. 遗传算法
  3. 《MATLAB神经网络30个案例分析》的13个案例中的GA优化SVM参数
  4. 手把手教你实现SVM算法(一)
  5. 遗传算法学习笔记(一):常用的选择策略
  6. 粒子群算法介绍(讲解的很清晰,将PSO的算法原理、算法特点以及参数的设置)
  7. 群体智能简介ppt(粒子群和人工蚁群优化)
  8. 优化算法分类

最优化算法——常见优化算法分类及总结相关推荐

  1. 算法组合 优化算法_算法交易简化了风险价值和投资组合优化

    算法组合 优化算法 Photo by Markus Spiske (left) and Jamie Street (right) on Unsplash Markus Spiske (左)和Jamie ...

  2. 【深度学习】常见优化算法

    本文介绍常见的一阶数值优化算法,这些方法在现代神经网络框架(tensorflow, caffe, torch)中已经是标准配置. 问题 设系统参数为 ω \omega ω.对于样本 i i i,其代价 ...

  3. 【推荐算法】常见优化算法总结(BGD、SGD、Momentum、Nesterov、Adagrad、AdaDelta、Adam)

    文章目录 前言 BGD SGD Momentum Nesterov Adagrad AdaDelta Adam 前言 对深度学习中常见优化器进行总结,包括BGD.SGD.Momentum.Nester ...

  4. 深度学习常见优化算法,图解AdaGrad、RMSProp,Adam

    1. AdaGrad AdaGrad算法是梯度下降法的改进算法,其优点是可以自适应学习率.该优化算法在较为平缓处学习速率大,有比较高的学习效率,在陡峭处学习率小,在一定程度上可以避免越过极小值点.在S ...

  5. 一小部分机器学习算法小结: 优化算法、逻辑回归、支持向量机、决策树、集成算法、Word2Vec等...

    优化算法 先导知识:泰勒公式 \[ f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \] 一阶泰勒展开: \[ f(x)\approx ...

  6. louvian算法 缺点 优化_机器学习中的优化算法(1)-优化算法重要性,SGD,Momentum(附Python示例)...

    本系列文章已转至 机器学习的优化器​zhuanlan.zhihu.com 优化算法在机器学习中扮演着至关重要的角色,了解常用的优化算法对于机器学习爱好者和从业者有着重要的意义. 这系列文章先讲述优化算 ...

  7. matlab如何调用优化算法,MATLAB优化算法(一)

    1.线性规划 [x,fval]=linprog(c,A,b,Aeq,Beq,VLB,VUB) 用于解决 min(z)=cX%%求满足条件的X与已定系数c乘积之和的最小值 s.t. AX<=b   ...

  8. 深度学习最常用的算法:Adam优化算法

    深度学习常常需要大量的时间和机算资源进行训练,这也是困扰深度学习算法开发的重大原因.虽然我们可以采用分布式并行训练加速模型的学习,但所需的计算资源并没有丝毫减少.而唯有需要资源更少.令模型收敛更快的最 ...

  9. 智能优化算法——灰狼优化算法(PythonMatlab实现)

    目录 1 灰狼优化算法基本思想 2 灰狼捕食猎物过程 2.1 社会等级分层 2.2 包围猎物

  10. 【智能优化算法-野狗优化算法】基于野狗优化算法求解单目标优化问题附matlab代码

    1 内容介绍 非洲野狗主要生活在非洲的干燥草原和半荒漠地带,活跃于草原.稀树草原和幵阔的干燥灌木丛.它们通常群居,领土范围大小在200到2000平方公里之间,通过叫声进行定位.采取群体合作方式猎杀中型 ...

最新文章

  1. 多个文件中的数据处理,输出自己想要是数据
  2. matlab自适应逆控制,基于matlab仿真模块的自适应有源噪声逆控制研究
  3. python基础知识资料-Python基础知识快速学习系列视频课程
  4. Windows Azure Marketplace增加对六种语言和HTML5应用程序的支持
  5. 开启事物_《原神》全新角色甘雨登场 「浮生孰来」活动祈愿开启_新闻资讯_最新手游时评_原创手游资讯...
  6. AT2070-[ARC061D]3人でカードゲーム/Card Game for Three【计数,组合数学】
  7. PRML-系列一之1.3~1.4
  8. 参数过滤mongodb过滤查询键值
  9. 微波遥感SNAP(二)——基于Sentinel-1雷达数据反演矿区地表形变
  10. Java NIO 之 I/O基本概念(二)
  11. @Value注入static属性
  12. cb使用msagent
  13. .Net Core过滤器分类
  14. MicroPython之ADS1115+平滑滤波NTC温度采集
  15. OpenResty学习——第七章 Web开发实战2——商品详情页
  16. 数据库-进阶6-连接查询
  17. django中models的filter过滤方法
  18. 简单计算机英语口语对话视频,优秀简短的英语口语对话
  19. org.apache.commons.codec.binary.Base64包需要下载的jar包依赖
  20. 谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线

热门文章

  1. s40之演变v1~v3
  2. 博客园2013年5月份第2周源码发布详情
  3. java 学习资料 分享
  4. 反恐精英代码_知名网游源代码泄漏 ,外挂潮将来?
  5. python邮件发送 STMP
  6. 计算机类和鼠标类是什么关系,什么是机械鼠标和光学鼠标?两者有什么区别?...
  7. SMT Kingdom v8.5 地震解释软件\
  8. select和epoll
  9. 超链接小点html,html超链接取消鼠标点指显示小手
  10. SLF4J user manual