优化算法1:模拟退火算法思想解析
2016-09-02 18:28
260 查看
1.算法简介
模拟退火算法得益于材料的统计力学的研究成果。统计力学表明材料中粒子的不同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过程被称为退火),粒子就可以在每个温度下达到热平衡。当系统完全被冷却时,最终形成处于低能状态的晶体。
如果用粒子的能量定义材料的状态,Metropolis 算法用一个简单的数学模型描述了退火过程。假设材料在状态i之下的能量为E(i),那么材料在温度T 时从状态i进入状态j 就遵循如下规律:
(1)如果E( j) ≤ E(i),接受该状态被转换。
(2)如果E( j) > E(i),则状态转换以如下概率被接受:
eE(i)−E(j)KT其中 K 是物理学中的波尔兹曼常数,T 是材料温度。
总结:
(1)在某一个特定温度下,进行了充分的转换之后,材料将达到热平衡。
(2)当温度降至很低时,材料会以很大概率进入最小能量状态。
2.模拟退火思想最小值寻优问题
假设目标函数为minf(x1,x2,...,xn)=∑i=1mg(x1,x2,...,xn)要求得这个优化问题的最优解,必须:
给定一个初始温度T0,并初始化一个初始解x(0),并由x(0)生成下一个解x′,是否接受x′作为一个新解x(1)依赖于一个概率密度函数(接受新解的概率),若新解大于旧解则以概率1接受新解,若新解小于旧解这个概率则以概率密度函数计算值(通常小于1)接受。
泛泛地说,对于某一个温度Ti和该优化问题的一个解x(k),可以生成x′。接受x′作为下一个新解x(k +1)为一定的概率。在温度Ti下,经过很多次的转移之后,降低温度Ti,得到 Ti<Ti+1 。在Ti+1 下重复上述过程。因此整个优化过程就是不断寻找新解和缓慢降温的交替过程。最终的解是对该问题寻优的结果。
我们注意到,在每个i T 下,所得到的一个新状态x(k +1)完全依赖于前一个状态x(k),可以和前面的状态x(0),…, x(k −1)无关,因此这是一个马尔可夫过程。
如果温度下降十分缓慢,而在每个温度都有足够多次的状态转移,使之在每一个温度下达到热平衡,则全局最优解将以概率1 被找到。因此可以说模拟退火算法可以找到全局最优解。
在模拟退火算法中应注意以下问题:
(1)理论上,降温过程要足够缓慢,要使得在每一温度下达到热平衡。但在计算机实现中,如果降温速度过缓,所得到的解的性能会较为令人满意,但是算法会太慢,相对于简单的搜索算法不具有明显优势。如果降温速度过快,很可能最终得不到全局最优解。因此使用时要综合考虑解的性能和算法速度,在两者之间采取一种折衷。
(2)要确定在每一温度下状态转换的结束准则(实即接受概率计算方法)。实际操作可以考虑当连续m 次的转换过程没有使状态发生变化时结束该温度下的状态转换。最终温度的确定可以提前定为一个较小的值Te,或连续几个温度下转换过程没有使状态发生变化算法就结束。
(3)选择初始温度和确定某个可行解的邻域的方法也要恰当。
3.算法步骤
(1)目标函数确定(即代价函数确定)
(2)寻找解空间,并给出一个较好的初始解(Monte Carlo方法),选择初始温度(通常选择为1)
(3)新解的产生:2变换法或者3变换法
(4)代价函数差(新解与旧解之差)
(5)接受准则(接受新解的概率计算法则)
(6)降温:利用选定的降温系数α 进行降温即:T ←αT ,得到新的温度,如取α =0.999
(7)结束条件:用选定的终止温度e = 1030,判断退火过程是否结束。若T < e,算法结束,输出当前状态(即得到的最优解)。
模拟退火算法得益于材料的统计力学的研究成果。统计力学表明材料中粒子的不同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过程被称为退火),粒子就可以在每个温度下达到热平衡。当系统完全被冷却时,最终形成处于低能状态的晶体。
如果用粒子的能量定义材料的状态,Metropolis 算法用一个简单的数学模型描述了退火过程。假设材料在状态i之下的能量为E(i),那么材料在温度T 时从状态i进入状态j 就遵循如下规律:
(1)如果E( j) ≤ E(i),接受该状态被转换。
(2)如果E( j) > E(i),则状态转换以如下概率被接受:
eE(i)−E(j)KT其中 K 是物理学中的波尔兹曼常数,T 是材料温度。
总结:
(1)在某一个特定温度下,进行了充分的转换之后,材料将达到热平衡。
(2)当温度降至很低时,材料会以很大概率进入最小能量状态。
2.模拟退火思想最小值寻优问题
假设目标函数为minf(x1,x2,...,xn)=∑i=1mg(x1,x2,...,xn)要求得这个优化问题的最优解,必须:
给定一个初始温度T0,并初始化一个初始解x(0),并由x(0)生成下一个解x′,是否接受x′作为一个新解x(1)依赖于一个概率密度函数(接受新解的概率),若新解大于旧解则以概率1接受新解,若新解小于旧解这个概率则以概率密度函数计算值(通常小于1)接受。
泛泛地说,对于某一个温度Ti和该优化问题的一个解x(k),可以生成x′。接受x′作为下一个新解x(k +1)为一定的概率。在温度Ti下,经过很多次的转移之后,降低温度Ti,得到 Ti<Ti+1 。在Ti+1 下重复上述过程。因此整个优化过程就是不断寻找新解和缓慢降温的交替过程。最终的解是对该问题寻优的结果。
我们注意到,在每个i T 下,所得到的一个新状态x(k +1)完全依赖于前一个状态x(k),可以和前面的状态x(0),…, x(k −1)无关,因此这是一个马尔可夫过程。
如果温度下降十分缓慢,而在每个温度都有足够多次的状态转移,使之在每一个温度下达到热平衡,则全局最优解将以概率1 被找到。因此可以说模拟退火算法可以找到全局最优解。
在模拟退火算法中应注意以下问题:
(1)理论上,降温过程要足够缓慢,要使得在每一温度下达到热平衡。但在计算机实现中,如果降温速度过缓,所得到的解的性能会较为令人满意,但是算法会太慢,相对于简单的搜索算法不具有明显优势。如果降温速度过快,很可能最终得不到全局最优解。因此使用时要综合考虑解的性能和算法速度,在两者之间采取一种折衷。
(2)要确定在每一温度下状态转换的结束准则(实即接受概率计算方法)。实际操作可以考虑当连续m 次的转换过程没有使状态发生变化时结束该温度下的状态转换。最终温度的确定可以提前定为一个较小的值Te,或连续几个温度下转换过程没有使状态发生变化算法就结束。
(3)选择初始温度和确定某个可行解的邻域的方法也要恰当。
3.算法步骤
(1)目标函数确定(即代价函数确定)
(2)寻找解空间,并给出一个较好的初始解(Monte Carlo方法),选择初始温度(通常选择为1)
(3)新解的产生:2变换法或者3变换法
(4)代价函数差(新解与旧解之差)
(5)接受准则(接受新解的概率计算法则)
(6)降温:利用选定的降温系数α 进行降温即:T ←αT ,得到新的温度,如取α =0.999
(7)结束条件:用选定的终止温度e = 1030,判断退火过程是否结束。若T < e,算法结束,输出当前状态(即得到的最优解)。
相关文章推荐
- 【优化算法】大白话解析模拟退火算法
- 2013数据库大会:盖国强-Oracle优化器与算法案例解析
- KMP串匹配算法解析与优化
- 小生境思想在多目标优化算法中的运用
- 优化算法(模拟退火算法 与 遗传算法)
- 算法优化策略之“中途相遇”算法思想
- SSE图像算法优化系列一:一段BGR2Y的SIMD代码解析。
- [黑马程序员]03[c语言]算法设计中标记思想的优化,耶稣门徒问题,生成打印问题
- KMP算法代码实现和优化(不太能理解具体的过程和该算法思想)
- 优化算法系列-模拟退火算法(1)——0-1背包问题
- 算法解析之感想---单调队列优化多重背包思路
- 大数相乘问题--算法思想及Java实现解析(附详细注释)
- 深入解析堆排序的算法思想及Java代码的实现演示
- 全局优化算法:模拟退火算法
- 海量数据库的查询优化及分页算法方案 :转
- 海量数据库的查询优化及分页算法方案(转载)
- 收藏:海量数据库的查询优化及分页算法方案
- 海量数据库的查询优化及分页算法方案
- SQLSERVER海量数据库的查询优化及分页算法
- 海量数据库的查询优化及分页算法方案