启发式算法

启发式算法总结 粒子群算法 基本思想     正如简介所描述的那样,粒子群算法是模拟群体智能所建立起来的一种优化算法,像后面我向大家介绍的蚁群算法也属于这类算法,粒子群算法可以用鸟类在一个空间内随机觅食为例,所有的鸟都不知道食物具体在哪里,但是他们知道大概距离多远,最简单有效的方法就是搜寻目前离食物最近的鸟的周围区域。     所以,粒子群算法就是把鸟看成一个个粒子,并且他们拥有位置和速度这两个属性,然后根 阅读详情

本篇主要介绍一些启发式算法,包括粒子群算法,模拟退火算法,遗传算法。这些启发式的算法也是解决最优化问题的途径之一。

粒子群算法(PSO)

粒子群算法的思想是,粒子群算法是通过模拟鸟群捕食行为设计的一种群智能算法。区域内有大大小小不同的食物源,鸟群的任务是找到最大的食物源(全局最优解),鸟群的任务是找到这个食物源。鸟群在整个搜寻的过程中,通过相互传递各自位置的信息,让其他的鸟知道食物源的位置最终,整个鸟群都能聚集在食物源周围,即我们所说的找到了最优解,问题收敛。

假设pbestp_{best}pbest​是当前粒子的最优解,gbestg_{best}gbest​是全局最优解,vvv表示粒子的速度,xxx表示粒子当前的位置。
vi=αvi+c1r1(pbesti−xi)+c2r2(gbest−xi)xi=xi+viv^i=\alpha v^i+c_1 r_1(p_{best}^i-x^i)+c_2r_2(g_{best}-x^i) \\ x^i = x^i+v^ivi=αvi+c1​r1​(pbesti​−xi)+c2​r2​(gbest​−xi)xi=xi+vi
其中,viv^ivi表示粒子iii的速度,c1,c2c_1,c_2c1​,c2​是加速超参,α\alphaα是惯性超参,r1,r2r_1,r_2r1​,r2​是0到1之间的随机数。
其学习流程如下:
在这里插入图片描述
通过速度更新公式我们可以看出,若需要算法快速收敛,我们需要将加速度常数调大。但是这么做可能会导致算法出现“早熟”。若把惯性权重调大,可增加粒子探测新位置的“积极性”,避免过早陷入局部最优,但也会降低算法的收敛速度。对于有些改进算法,在速度更新公式最后一项会加入一个随机项,来平衡收敛速度与避免“早熟”。并且根据位置更新公式的特点,粒子群算法更适合求解连续优化问题。

粒子群算法虽然自提出以来就吸引了大量学者的目光,但粒子群算法也存在诸多弊端,如局部搜索能力差,容易陷入局部极值,搜索精度低等。针对这些问题,粒子群算法有如下三类的改进方向:

改变粒子关系的拓扑结构:

我们之前说粒子群设计玄妙之处在于它保留了全局最优位置和粒子已知的最优位置两个信息。然而历史最优位置(为方便我们称为位置A)和粒子已知的全局最优位置(为方便我们称为位置B)我们可以稍加改动。最经典的改进为master-slave算法。首先,我们可以将问题分解为诸多的master粒子和slave粒子,根据适应值的不同挑选master粒子。每个master粒子下有不同数量的slave粒子,master粒子1所在区域的位置A1为master和slave所有粒子的历史最优位置。同理,我们可以得到对应的A2和A3等粒子的最优位置,对比不同最优位置的数值,得出全局最优位置B。这种算法的好处是,如果master粒子1所属粒子陷入局部最优或者无法找寻到最优解的情况,master粒子2、master粒子3及其它master粒子所在区域仍继续搜寻,一定程度上保证了解的最优性。

master社区粒子的位置A为master社区和slave社区所有粒子的最优过去位置。而slave社区粒子的位置A仅仅为该slave社区所有粒子的最优过去位置。这样,当划分出多个slave社区时,即使有一个slave社区粒子收敛陷入局部最优,仍能保证master社区粒子有较大的概率跳出这个局部最优位置。

在这里插入图片描述

引入新的机制:
通过引入新的控制粒子的机制来加快收敛速度,并且避免陷入局部最优。这类改进方法的一个例子为捕猎算法。在粒子群算法计算中,当出现收敛趋势时,将会有大量的低速度粒子聚集。这些低速的聚集粒子并不会加速算法收敛也不会探测新的位置增加跳出局部最优的概率。所以我们称这些粒子为“懒惰粒子”。在迭代过程中,这些“懒惰粒子”仍会占用计算量。于是,如果能加入一种删除机制,删除这些“懒惰粒子”并生成出一些活跃的粒子,那么就可以在加快计算速度的同时减少收敛陷入局部最优的概率。这里引入了老鹰捕食兔子的机制,删除老弱病残的“懒惰”兔子,并增加新的“活跃”兔子。

耦合其他算法:
由于不同的算法有不同的优点,如何将不同算法耦合以克服算法自身缺陷一直是研究的热点。目前进行耦合计算的热点算法有模拟退火,蚁群算法,遗传算法等等。

参考
https://www.zhihu.com/question/23103725

模拟退火算法

梯度下降法或者梯度上升法是贪心算法,迭代到的最优点可能是局部最优或者是鞍点,模拟退火的方式以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。

  • 若J(Yt+1)J(Y_{t+1})J(Yt+1​)优于J(Yt)J(Y_t)J(Yt​),那么无条件的接受该移动
  • 否则,以exp(∣J(Yt+1)−J(Yt)∣∣k∗T)exp(\frac{|J(Y_{t+1})-J(Y_t)||}{k*T})exp(k∗T∣J(Yt+1​)−J(Yt​)∣∣​)的概率接受该移动。

遗传算法

遗传算法是根据“适者生存”,“优胜劣汰”的原则,模拟生物界自然选择和遗传机制的随机搜索算法。
遗传算法包括以下几个要素:
编码,适应度函数,遗传算子(选择,交叉,变异)

以求解问题为例:

函数 f(x) = x + 10sin(5x) + 7cos(4x) 在区间[0,9]的最大值。

编码:
可以选择实数编码,也可以选择二进制编码。但实数编码容易过早收敛,二进制编码需要的存储空间大,但稳定性高。这里选择二进制编码。

适应度函数: 遗传算法中,一个个体(解)的好坏用适应度函数值来评价,在本问题中,f(x)就是适应度函数。

选择:
选择操作是从前代种群中选择多对较优个体,一对较优个体称之为一对父母,让父母们将它们的基因传递到下一代,直到下一代个体数量达到种群数量上限。在选择操作前,将种群中个体按照适应度从小到大进行排列。采用轮盘赌选择方法(当然还有很多别的选择方法),各个个体被选中的概率与其适应度函数值大小成正比。轮盘赌选择方法具有随机性,在选择的过程中可能会丢掉较好的个体,所以可以使用精英机制,将前代最优个体直接选择。

交叉:
两个待交叉的不同的染色体(父母)根据交叉概率(cross_rate)按某种方式交换其部分基因。交叉有很多种方式:

  • 单点交叉:指在个体编码串中只随机设置一个交叉点,将染色体分成两部分,子代染色体的左右两侧分别来自于父母染色体。
  • 多点交叉:在个体编码串中随机设置了两个/多个交叉点,然后再以间隔交换的方式进行部分基因交换。
  • 均匀交叉:两个配对个体的每个基因座上的基因都以相同的交叉概率进行交换,从而形成两个新个体。

变异:

  • 基本位变异(Simple Mutation):对个体编码串中以变异概率、随机指定的某一位或某几位仅因座上的值做变异运算。
  • 均匀变异(Uniform Mutation):分别用符合某一范围内均匀分布的随机数,以某一较小的概率来替换个体编码串中各个基因座上的原有基因值。(特别适用于在算法的初级运行阶段)
  • 边界变异(Boundary Mutation):随机的取基因座上的两个对应边界基因值之一去替代原有基因值。特别适用于最优点位于或接近于可行解的边界时的一类问题。
  • 非均匀变异:对原有的基因值做一随机扰动,以扰动后的结果作为变异后的新基因值。对每个基因座都以相同的概率进行变异运算之后,相当于整个解向量在解空间中作了一次轻微的变动。
  • 高斯近似变异:进行变异操作时用符号均值为ppp的平均值,方差为p2p^2p2的正态分布的一个随机数来替换原有的基因值。

参考:
https://www.zhihu.com/question/23293449
https://blog.youkuaiyun.com/weixin_30239361/article/details/101686764

常用启发式算法 总之,粒子群优化算法是一种简单高效的群体智能优化算法,通过模拟鸟群觅食行为,利用粒子群体的协作搜索,实现了对连续和离散优化问题的求解。总之,遗传算法是一种通用的启发式搜索算法,借鉴了生物进化的思想,通过模拟选择、交叉、变异等过程,实现了解的进化和优化。总之,蚁群算法是一种灵活高效的启发式优化算法,通过模拟蚂蚁群体的集体智能行为,实现了对组合优化问题的求解。在算法中,每个粒子代表问题的一个可能解,粒子在搜索空间中移动,通过个体最优位置(pbest)和全局最优位置(gbest)来更新自己的速度和位置。 阅读详情

相关推荐

超启发式算法(hyper heuristic)

简介 超启发式算法是新近提出的一类解决复杂优化问题的概念模型。该模型主要通过一种高层次启发式策略(High-level Heuristic,简称 HLH)管理和操纵一系列低层次启发式(Low-level Heuristics,简称 LLH)方法以实现在解空间中的寻优,其框架如图 1-2 所示。 作为一种有效的搜索方法,超启发式算法可以自动选择、组合或生成多个简单的 LLH 方法以解决复杂的优化问题。由于其具有较好的寻优性能,超启发式算法成为当前智能计算领域的研究热点之一。 LLH 策略与方法 作为超启

a999999123的博客 7354

常用的启发式算法

什么是启发式算法 启发式算法一般用于解决NP-hard问题,其中NP是指非确定性多项式。 例如,著名的推销员旅行问题(Travel Saleman Problem or TSP):假设一个推销员需要从南京出发,经过广州,北京,上海,…,等 n 个城市, 最后返回香港。 任意两个城市之间都有飞机直达,但票价不等。假设公司只给报销 C 元钱,问是否存在一个行程安排,使得他能遍历所有城市,而且总的路...

flysening的博客 9万+

启发式算法(Heuristic Algorithm)

启发式算法(Heuristic Algorithm)是一类用于解决复杂问题的算法,通过利用问题的某些特征和经验规则,在可接受的时间范围内找到较好的近似解。启发式算法不保证找到最优解,但通常可以在合理的计算时间内获得可行且质量较高的解。

MrLi的博客 1605

启发式算法(heuristic)

WHY: 1.有时候最优解是难以找到,甚至是无法找到的,此时我们希望去找一个逼近最优解的解。 2.有时非最优解也可接受。 WHAT: 我认为启发式算法称为「探索式算法」or「经验学习法」更加合适。 有一些不错的说法: 启发式一般又称人工智能算法或全局优化算法。 启发式算法是指具有自学习功能,可利用部分信息对计算产生推理的算法。 … ps:这部分可见:什么是启发式算法(heuristic algorithm) 朗文对heuristic的解释是:The use of experience and pract

干就完了!!! 8579

【AI知识点】启发式算法(Heuristic Algorithms)

启发式算法(Heuristic Algorithms) 是一种基于经验、直觉和局部优化的求解问题的算法,尤其适用于解决计算复杂度高、规模庞大的问题。它们通过简化问题、局部搜索和快速近似,提供了一种在短时间内获得“足够好”解的途径。虽然启发式算法无法保证全局最优解,但它们在实际应用中广泛使用,特别是在优化问题、任务调度和机器学习等领域。

AI完全体 3032

启发式算法教程(个人总结版)

6.1 启发式算法的发展方向随着计算技术的发展,启发式算法在实际应用中展现出越来越强的求解能力和广泛的应用前景。混合启发式算法:将多种启发式算法结合,发挥各算法优势,提高求解效果。智能自适应算法:引入智能自适应机制,根据问题特性动态调整参数,提高算法适应性和求解效果。并行计算:利用并行计算技术,加速启发式算法的求解过程,提高计算效率。6.2 新兴启发式算法介绍新兴启发式算法在优化求解领域展现出新的潜力,如量子启发式算法和深度强化学习算法。量子启发式算法。

年糕的博客 5874

启发式算法(Heuristic)概述

启发式算法(Heuristic)概述 一个启发式的例子。 驾驶汽车到达某人的家,写成算法是这样的:沿167 号高速公路往南行至Puyallup;从South Hill Mall 出口出来后往山上开 4.5 英里;在一个杂物店旁边的红绿灯路口右转,接着在第一个路口左转;从左边褐色大房子的车道进去,就是North Cedar 路714 号。 用启发式方法来描述则可能是这样:找出上一次我们寄给你的信,照着信上面的寄出地址开车到这个镇;到了之后你问一下我们的房子在哪里。 这里每个人都认识我们——肯定有人会很愿意帮

weixin_42937223的博客 9169

告别龟速下载!保姆级教程:用离线包5分钟搞定Arduino IDE的STM32开发环境(附最新库文件)

本文提供了一套完整的Arduino IDE离线配置方案,帮助开发者5分钟快速搭建STM32开发环境。通过详细的板支持包安装指南、文件校验方法和常见问题解决方案,彻底解决GitHub下载慢的问题,提升开发效率。

weixin_26802933的博客 364

浅析超启发式算法(hyper heuristic)

在介绍超启发式算法前,先来简单聊一聊启发式算法。为解决NP难问题(精确求解非常困难,但验证结果十分简单,例如旅行商问题就是一个典型的NP难问题),启发式算法应运而生。据我所知,启发式算法中有基于种群的遗传算法GA、生物地理学算法BBO;有基于个体的粒子群算法PSO、蚁群算法ACO;还有很多名字奇形怪状,但都跟前面几种算法万变不离其宗的诸如花粉算法FPA、蝙蝠算法、猫群算法、鸡群算法、肾算法,巴拉巴...

Gavin的专栏 1万+

第十一届全国大学生GIS应用技能大赛——广西区域发展布局示意图

我们需要制作一幅广西区域发展布局示意图,最终成图参考“数据”文件夹中的广西区域发展布局示意图.png。地图使用的投影坐标系是 Asia_North_Albers_Equal_Area_Conic,其中地理坐标系是China_Geodetic_Coordinate_System_2000,中央经线东经 105°,标准纬线是北纬 25°和北纬 47°,出图比例尺 1:4,780,000。

@HNUSTer的博客 7799

保姆级教程:用ROS2 Humble + Gazebo Classic 从零搭建一个能键盘控制的差分AGV模型

本文提供了一份详细的ROS2 Humble与Gazebo Classic教程,指导用户从零开始搭建一个键盘控制的差分AGV模型。内容涵盖环境配置、Xacro文件设计、Gazebo仿真集成以及键盘控制实现,特别针对常见问题提供解决方案,帮助开发者快速掌握ROS2机器人仿真技术。

weixin_30387423的博客 168

什么是启发式算法(heuristic algorithm)?

heuristic algorithm的通俗解释

changjiongjiong的博客 7万+

400G光模块测试全攻略:从PCS层到CMIS合规的避坑指南

本文为网络设备测试工程师和光通信研发人员提供了一份详尽的400G光模块测试实战指南。文章深入剖析了从PCS层信号完整性、FEC容限到CMIS管理接口合规性测试的全流程,并分享了ANLT协议分析、SerDes眼图调试以及系统级流量压力测试中的核心技巧与常见避坑点,旨在帮助读者构建一套高效、精准的测试体系,确保高速光模块的可靠性与性能。

weixin_29300931的博客 211

【有啥问啥】什么是启发式算法(Heuristic Algorithm)?

启发式算法是一类在解决复杂问题时利用经验规则和启发式信息进行搜索的算法。这些算法并不保证找到最优解,但在很多情况下能找到一个较好的解,且计算效率较高。启发式算法广泛应用于组合优化、人工智能、搜索问题等领域。

Chauvin的博客 4416

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

【OpenClaw从入门到精通】第15篇:国产芯片适配实战——昇腾/龙芯/天数智芯全流程跑通(2026实测版)

2026年国产芯片AI适配迎来爆发期,OpenClaw作为轻量化本地AI智能体,已实现华为昇腾、龙芯、天数智芯等主流国产平台的全流程适配。本文基于实测数据,从背景解析、核心原理、算法优化、实操部署四个维度,详细讲解OpenClaw在香橙派昇腾开发板、龙芯3B6000M、天数彤央TY1200及联想开天X7h的部署流程,同时提供统一工具玄武CLI的使用指南。文中包含完整代码、执行结果、避坑技巧及虚拟实战案例,兼顾新手入门与进阶提升,帮助读者快速掌握国产芯片上的本地AI部署能力,实现数据隐私保护与低成本AI落地。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1008

启发式算法 Heuristic

  Heuristic :   【科斯林】   a heuristic computer program uses rules based on previous experience in order to solve a problem , rather than using a mathematical procedure.   一个启发式的计算机程序使用基于先前经验的规则去...

ahui2015的博客 787

lammps原子组速度的计算方法

在lammps摩擦、冲击、压痕等模拟过程中,涉及到某个原子组的整体移动,如果要输出这个原子组的整体移动速度,可以使用vcm()函数。下面是一个具体的使用案例,金刚石球在盒子内移动,输出移动过程中金刚石球在x方向的质心速度。vcm()是lammps自带的一个函数,返回原子组质心在设定方向的速度。其中,ID为group-ID,dim为方向,可设置x、y或者z方向。大家好,我是小马老师。

lammps_jiayou的博客 343

启发式算法 (Heuristic Algorithms)

一个由 m 个粒子 (Particle) 组成的群体 (Swarm) 在 D 维空间中飞行,每个粒子在搜索时,考虑自己历史搜索到的最优解和群体内 (或邻域内) 其他粒子历史搜索到的最优解,在此基础上进行位置 (状态,也就是解) 的变化。算法的整个思想来源于达尔文的进化论,其基本思想是根据问题的目标函数构造一个适应度函数 (Fitness Function),对于种群中的每个个体 (即问题的一个解) 进行评估 (计算适应度),选择,交叉和变异,通过多轮的繁殖选择适应度最好的个体作为问题的最优解。

木牛的博客 661

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

超启发式算法Hyper heuristic

超启发式算法

每天进步一点点! 1841

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: svm手写推导
下一篇: 最优化方法小结
一只小菜狗:D
博客等级 码龄7年 4658粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值