首页 > 编程知识 正文

模拟退火算法与爬山法的不同,模拟退火算法的应用

时间:2023-05-03 08:19:02 阅读:178394 作者:61

算法总是在目前做出最好的选择。 也就是说,贪婪算法并不是从整体最优出发来考虑,而是在某种意义上只是局部最优的选择。 当然,我希望贪婪算法得到的最终结果也是整体最好的。 贪婪算法不能对所有问题得到整体最优解,但可以对许多问题产生整体最优解。 单源最短路径问题、最小生成树问题等。 在某些情况下,即使贪婪算法得不到整体最优解,最终结果也会成为最优解的良好近似。

在介绍模拟退火之前,先介绍爬山算法。 爬山算法是一种简单的贪婪搜索算法,该算法每次从当前解的邻域解空间中选择最优解作为当前解,直到达到局部最优解。

爬山算法实现简单,其主要缺点是陷入局部最优解,不一定能搜索到全局最优解。 如图1所示,假设将c点作为现在的解,登山算法搜索a点这个局部最佳解的话就会停止搜索。 因为在a点无论向那个方向移动多少都得不到更好的解。

图1

3 .模拟退火算法伪代码

代码/**j(y )状态y下的评估函数值(y ) I )表示当前状态(y ) I1 )表示新状态) r :用于控制降温速度) t :系统温度,系统初始应该处于一个高温状态(t 接受从//y(I )到(y ) I1 )的移动的else(/函数exp ) dE/T )的可能值的范围为(0,1 ),dE/T越大则exp ) dE/T )也为if ) exp ) de //降温退火,0r1。 r越大降温越慢r越小降温/**过大时,检索全局最优解的可能性越大,但检索的过程也越长。 如果r太小,搜索的过程会加快,但最终可能会达到局部最佳值*/i () ) ) )。

四. 使用模拟退火算法解决旅行商问题

旅行商问题(TSP,Traveling Salesman Problem ) )要求有n个城市,从其中一个问题出发,唯一横穿所有城市,回到出发的城市,寻求最短的路线。

旅行商问题就是所谓的NP完全问题,要正确解决TSP只能网罗所有的路径组合,其时间复杂度为o(n )! 请参阅。

使用模拟退火算法可以较快地确定TSP的近似最优路径。 (你可以使用遗传算法。 在下一篇文章中介绍。 )模拟退火解决TSP的思路:

1 .产生新的扫描路径p(I1 ),计算路径p ) I1 )的长度l ) p ) I1 )

2.L(P ) I1 ) ) l ) p ) I ) )的情况下,接受p ) I1 )作为新的路径,否则,以模拟退火的概率接受p ) I1 ),降低温度

3 .重复步骤1和2,直到满足终止条件

有很多方法可以生成新的导线测量路径,以下是其中的三种。

1 .随机选择两个节点,调换路径中这两个节点的顺序。

2 .随机选择两个节点,逆转路径上两个节点之间的节点顺序。

3 .随机选择3个节点m,n,k,将节点m和n之间的节点移动到节点k之后。

五. 算法评价

模拟退火算法是一种随机算法,不一定能找到全局最优解,能较快地找到问题的近似最优解。 如果参数设定得当,模拟退火算法的搜索效率高于穷举法。

http://www.cnblogs.com/heaad/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。