启发式算法

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.返回第二步,继续循环,直到蚂蚁数量迭代完成。




 

posted @   Q星星  阅读(1009)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示