启发式算法
1.启发式算法
百度百科:
启发式算法(heuristic algorithm)是相对于最优化算法提出的。一个问题的最优算法求得该问题每个实例的最优解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。现阶段,启发式算法以仿自然体算法为主,主要有蚁群算法、模拟退火法、神经网络等。
简单理解:
启发式算法就是例如遗传算法,模拟退火,各种群算法,蚁群,鱼群,粒子群,人工神经网络等模仿自然界或生命体行为模式的算法,一般又称人工智能算法或全局优化算法。
2.算法介绍
2.1遗传算法
模拟生物学中遗传学规律,在每一代中挑选出最优的去“繁殖”后代,以得到最优解。
算法步骤
1.对潜在问题进行编码,初始化基因组,并根据基因组随机初始化种群,并指定繁衍代数;
2.计算种群中每个个体的适应度,选择一定数量的留下,其它淘汰;
3.在留下的个体中,随机繁衍,对母基因进行交叉(极小概率变异),产生下一代;
4.跳转到第2步,继续循环,直到达到繁衍代数为止。
2.2模拟退火算法
模拟物体在加热后分子达到高度混乱的状态,然后慢慢冷却的过程。
算法步骤
1.初始化温度T
(充分大),温度下限Tmin
(充分小),初始解X,每个T迭代次数为L;
2.随机生成临时解域X_new;
3.设f(x)
函数来计算解的好坏,计算出f(X_new)-f(X)
;
4.如果f(X_new)-f(X)>0
,说明新解比原来的解好,则无条件接受,如果f(X_new)-f(X)<0,则说明旧解比新解好,则以概率exp((f(X_new)-f(x))/k*T)
接受X_new作为解。
5.如果当前温度小于Tmin
的时候,退出循环,输出结果;否则,降低当前温度,T=a*T,(0<a<1)
,跳转到第二步继续循环。
模拟退火是启发示算法的一种,也是一种贪心算法,但是它的搜索过程引入了随机因素。在迭代更新可行解时,以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以下图为例,假定初始解为左边蓝色点A,模拟退火算法会快速搜索到局部最优解B,但在搜索到局部最优解后,不是就此结束,而是会以一定的概率接受到左边的移动。也许经过几次这样的不是局部最优的移动后会到达全局最优点D,于是就跳出了局部最小值。
但在具体的实现中,这个一定概率应该怎么选择是一个值得深思的问题。太小了跳不出局部最优,太大了可能搜索过头。
2.3蚁群算法
一群蚂蚁,寻找路线,每一条路线都有信息素,运气好的蚂蚁走的最优路线,那么往返次数多,信息素越高,就是最优路径。
算法步骤
1.初始化蚂蚁数量、可行路段、每条路段距离、每条路段的初始信息素大小等信息;
2.设定蚂蚁的起点和终点;
3.蚂蚁从起点出发根据信息素浓度,有一定概率性地选择路段,浓度越高,概率越大,逐步到达终点;
4.在蚂蚁走过的路径上,根据每条路段的长度按照比例释放信息素,短的路段释放的信息素多,长的路段释放的信息素少;
5.对所有路段的信息素进行挥发;
6.返回第二步,继续循环,直到蚂蚁数量迭代完成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix