最优化——模拟退火算法

模拟退火算法

Metropoils接收准则

P = { 1 , E j ≤ E i e − E j − E i T E j ≥ E i P = \left\{ \begin{matrix} &1 ,\quad E_j\leq E_i\\ &e^{-\frac{E_j-E_i}{T}} E_j \geq E_i \end{matrix} \right. P={1,EjEieTEjEiEjEi

其中,P为转移概率,T为温度, E j : E_j: Ej:新状态下的能量, E i : E_i: Ei:当前状态下的能量

当新状态下的能量小于原来状态的能量,那么一定会跳出

如果新状态的能量比原来状态能量低,则需要进一步的概率判定,能量差值越高,跳出的概率就越低。

温度越高,跳出概率越高。

要想开始时全局搜索,后期局部搜索需要: 前期温度高,后期温度不断变小。

注:有点类似于PSO中的权重设置

算法步骤

  1. 设置初始参数,起始温度T,终止温度,冷却率 α \alpha α,单一温度的迭代次数,随机生成初始解w,并计算目标函数值f(w).
  2. 随机设置一个扰动值,用扰动值去更新原始解得到新解 w ′ w' w和其对应的目标函数值
  3. 如果新解函数值小于原始解,则新解被接收,否则需要用Metropoils准则去判断新解是否被接收。
  4. 完成2~3后迭代次数加1,判断此时是否达到单一温度下的迭代次数,如果达到执行下一步,否则继续转2
  5. 用冷却率去降低温度。判断当前温度是否达到最小温度,如果达到结束运算,否则重置迭代次数。转2。

应用

一元函数的优化

m i n f ( x ) = x s i n ( x ) , − 4 ≤ x ≤ 16 min \quad f(x) = xsin(x), -4\leq x \leq16 minf(x)=xsin(x),4x16

算法流程:

  1. 初始温度设置为1000度,终止温度为0.1度,单一温度迭代次数为100次,初始解是-4到16范围内随机浮点数,定义目标函数值为f(x) = xsin(x)
  2. 随机生成一个扰动值,使得当前解加上扰动值得到新解,如果新解超出自变量范围,则减去两倍的扰动值。
  3. 如果新解函数值小于原始解,则新解被接收,否则需要随机生成一个概率r,只有当r小于 e − Δ E T e^{-\frac{\Delta E}{T}} eTΔE时,新解才会被接收。
  4. 完成2~3后迭代次数加1,判断此时是否达到单一温度下的迭代次数,如果达到执行下一步,否则继续转2
  5. 用冷却率去降低温度。判断当前温度是否达到最小温度,如果达到结束运算,否则重置迭代次数。转2。

一元函数和多元求解过程差别不大,就不赘述了。

TSP问题

又是这个辣个男人!他又回来辣!

算法流程:

  1. 初始温度设置为100*城市数量度,终止温度为0.1度,单一温度迭代次数为100次,初始解就是顺序访问所给出的城市坐标。定义的目标函数值为初始解每两个相邻城市距离之和开根号。(注意:包括最后一个城市和第一个城市的相邻距离),算出初始解的函数值。
  2. 随机挑选两个城市,将他们的访问顺序互换生成一个新解。算出新解的函数值。
  3. 如果新解函数值小于原始解,则新解被接收,否则需要随机生成一个概率r,只有当r小于 e − Δ E T e^{-\frac{\Delta E}{T}} eTΔE时,新解才会被接收。
  4. 完成2~3后迭代次数加1,判断此时是否达到单一温度下的迭代次数,如果达到执行下一步,否则继续转2
  5. 用冷却率去降低温度。判断当前温度是否达到最小温度,如果达到结束运算,否则重置迭代次数。转2。

备注:在查看老师给出的实例代码时发现了一个错误,在计算相邻城市距离之和时,在加入最后一个城市到第一个城市的距离平方之前已经将原来的求和结果开方,这种做法并不正确。应当一起求和之后开方。

总结

从上面两个例子我们可以看出,模拟退火本质就是双层循环,第一层遍历到最小温度,第二层遍历完当前确定温度下的迭代次数。模拟退火算法是一种随机算法,并不一定能找到全局的最优解,可以比较快的找到问题的近似最优解。 如果参数设置得当,模拟退火算法搜索效率比穷举法要高。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值