模拟退火算法实现:求解中国31个城市TSP问题

您所在的位置:网站首页 模拟退火算法案例研究 模拟退火算法实现:求解中国31个城市TSP问题

模拟退火算法实现:求解中国31个城市TSP问题

2024-07-12 01:35| 来源: 网络整理| 查看: 265

最近在学习玻尔兹曼机,里面用到了模拟退火算法,经过一天的实验,总算顺利完成,本文打算记录这一过程,以作备忘。

本文内容如下:

1、实验环境

2、算法原理简介

3、TSP案例代码实现

4、运行结果解析

5、算法的优缺点分析

6、关于模拟退火算法改进的一些想法

一、实验环境

编程语言:R(R语言中求解模拟退火算法的函数有optim,sann等,其中sann在ConsPlan包中,本文基于模拟退火算法原理自行编写)

使用数据:中国31个城市的距离数据,详见附件

其他:无

二、算法原理简介

模拟退火算法是一种随机搜索算法,用来求解表面粗糙(含有非常多的局部最小点),无法微分求导的最优值的问题,由于它结合了一定的贪心策略和启发策略,因此比纯粹的随机搜索算法更容易找到最优解,它的基本思想是模拟金属退火的过程,大家可以想象要将两种金属融合到一起的(比如炼钢,需要将铁和其他微量金属:铜、锰等融合在一起),首先需要先将金属加热至高温融化,使其原子处于高速运动状态,此时各种金属原子会做布朗运动进行互相融合,然后在缓慢降温,最后达到稳定状态(收敛),内能最低(最优解),熵值最大。

这样解释,也许大家还是不太明白,我们回到函数求解场景上,假设有一个函数(非凸函数),它的最优解无法用常规的微分求导(比如梯度下降、牛顿法等)来求出,且它的函数值域上有很多局部最小点,这时候有什么办法来尽量避免求解到局部最小点,而找到一个最优解或者近似最优解呢,我们想到了一个办法,随机丢一个小球到函数的值域空间上(即随机取一个初始值),然后让小球随机晃动,初始的时候温度较高,小球会晃动剧烈,这时小球会更有机会掉入周围更低的坑(函数值更小)中,从而避免掉入一个局部的小坑中,然后在逐步降温,小球晃动减少,最终收敛到一个比较理想的坑中(坑比较深,因此晃动不出来),从而找到最优解或者近似最优解。

从上述原理可以看出,模拟退火算法的关键在于温度的选取、降温过程的控制以及小球该如何做晃动运动(更新迭代策略),下面总结一下我的个人经验

1.1 更新迭代策略

前面我们说过模拟退火算法是一种随机搜索算法,它的随机性体现更新迭代过程中,即在小球当前位置做随机扰动,如果小球晃动到一个比之前更低的点上(值比之前的小),则将当前位置更新为最新晃动位置,如果小球晃动到一个比之前更高的点上(值比之前的大),则以一定的概率更新为最新晃动位置(这个概率服从玻尔兹曼分布),否则回到之前的点上继续晃动。

从上述描述可以看出,更新迭代策略具有一定贪心和启发性在里面。

1.2 

上面更新策略提到一个概率分布,即玻尔兹曼分布,它的概率分布公式简化形式如下:

P=exp(-(f(x1)-f(x0))/T) 其中f(x1)为晃动后的值,f(x0)为晃动前的值,T即为温度 > exp(-10/10) [1] 0.3678794 > exp(-10/100) [1] 0.9048374 > exp(-10/5) [1] 0.1353353 > exp(-10/1) [1] 4.539993e-05 > exp(-1/10) [1] 0.9048374 > exp(-5/10) [1] 0.6065307 > exp(-100/100) [1] 0.3678794 > exp(-10/90) [1] 0.8948393 > exp(-10/1) [1] 4.539993e-05 >

从上可以看出,在差值不变的情况下,温度越高,更新迭代概率越大,在温度一定的情况下,差值绝对值越大,概率越小,这正是我们所期望的,因此关于温度的选择应该与差值的分布保持一致,温度过低会导致晃动能力太差,更容易收敛于局部最小点,温度过大,如果温度下降不快,则不容易收敛,始终处于随机跳动状态。

1.3 降温控制

目前有三种降温策略(指数exp,对数log,倒数rec),详情如下:

降温速度.png

降温.png

很明显,指数法降温过程整体比较平稳,对数法前期降温比较明显,但后期下降非常缓慢,倒数法则降温迅速,至于选取哪种方式与具体的场景有关,比如古代炼剑,不同的淬火方式,对剑的任性影响很大,需要根据用途,不断的尝试才能找到合适的。

其他有关模拟退火的详细介绍,请读者自行百度,知乎上有很多大牛的解释很精辟。

三、TSP案例代码实现

1、TSP问题描述

TSP.png

本文需要求解中国31个城市的TSP问题,代码具体如下:

2、原始数据读取

tsp


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3