Advertisement

题目:Theory and Practice of New Types of Simulated Anneal

阅读量:

作者:禅与计算机程序设计艺术

1.简介

概述

Simulated annealing (SA) 是一种通用优化算法。它被广泛应用于组合优化、资源分配、函数逼近等问题中。相比传统的整数规划和粒子群算法,SA 的灵活性和高效率使其在处理复杂组合优化问题时具有优越性。然而,由于 SA 的全局寻优能力,它的局部最优解可能仍然会被接受成为最优解。为了克服这个缺陷,本文从多种角度对 SA 模型进行了改进,提出了一系列新的模拟退火算法,并通过比较实验结果展示它们的有效性。

在过去的几年里,基于模拟退火算法(SA)的新型模拟退火算法已经广泛研究。这些算法通常都围绕着引入退火机制的初始温度参数和退火速率参数展开,并进行相应修改,以促进算法收敛更加快速、更加稳定。此外,还有一些算法提出了多种约束条件的变体,如旋转约束和平移约束。

本文试图回顾和总结现有的模拟退火算法模型,分析其适用范围和局限性,以及研究当代最新模拟退火算法的理论基础和应用。文章首先对 SA 模型进行整体回顾,包括基本概念和模型框架。然后针对目前已知的不同模拟退火算法模型进行详细论述。同时,还将介绍几种约束条件的变体及其应用。最后,给出一些主要的期望和挑战,并讨论未来的方向。

目的与意义

虽然 SA 在很多领域都得到了应用,但由于其局部最优问题,对于某些优化问题,即便收敛到全局最优,得到的结果也不一定是最佳的。因此,提升 SA 算法的性能和可靠性至关重要。另外,有一类优化问题往往存在许多约束条件,这种情况下,约束条件可能会影响到算法的搜索路径。如何结合约束条件和模拟退火算法,提高搜索的全局效率,也是本文的重点所在。

本文的目标是回顾和总结当前已知的模拟退火算法模型,讨论其理论基础和应用。作者通过对这些模型进行综述,逐步分析各个模型所面临的挑战,提出若干新的模拟退火算法模型,并通过实验证明这些模型的有效性。文章的核心思想是:“突破现有模型的限制”,重点强调新型算法模型的理论原理,并且给出详细的算法描述、代码实现、优化案例等内容。文章结构清晰,每章都可以独立阅读。阅读者可以根据需要阅读不同的章节。另外,文章共分七章,分别为第一章绪论、第二章整数规划与模拟退火、第三章多约束问题与模拟退火、第四章迹象法与模拟退火、第五章多重背包与模拟退火、第六章周期约束与模拟退火、第七章长期规划与模拟退火。文章的篇幅较长,难免令读者望而却步,但作者力求全面细致地进行研究。

2.相关工作

现有的模拟退火算法模型主要有以下几个方面:

  • 启发式搜索法:采用局部搜索策略,模拟退火采用随机游走方式,通过引入退火过程,使算法更具弹性、更容易找到全局最优解;
  • 改进型模拟退火算法:改进型模拟退火算法,如制定邻域搜索的方法,选择动作的方式等,从而产生了改进型的模拟退火算法。改进型模拟退火算法能够处理一些特定类型的问题,如多重背包问题,但这些算法往往难以应付更复杂的问题。
  • 多约束条件的模拟退火算法:模拟退火算法可以处理多种约束问题,包括可行约束、界线约束、单纯形约束、周期约束、旋转约束、平移约束等。其中,有一些算法提出了对旋转约束、平移约束的支持。
  • 时变模拟退火算法:模拟退火算法可以通过引入时变机制,使算法的时间复杂度减小,使算法能够更有效地解决复杂问题。
  • 个体差异的模拟退火算法:个体差异的模拟退火算法将个体之间的差异考虑进去,通过引入个体之间的差异,模拟退火算法能够生成具有更多的差异性的解。

3.模拟退火模型

模拟退火模型框架

模拟退火算法的核心思想是利用概率接受原则,通过引入退火过程,使算法更具弹性、更容易找到全局最优解。模拟退火算法借助于初始温度和退火速率参数,在当前状态下按照一定概率接受邻域内的较优解,并将系统迁移到邻域中的另一个状态,直到满足停止条件或达到最大迭代次数。整个搜索过程直观感受为一座山坡上风摇荡,随着退火时间的减少,解向着更优解迈进。

模拟退火算法的基本模型为:

式中,f(x) 为目标函数,T_kT_{k+1} 分别表示第 k 次迭代时的温度和第 (k+1) 次迭代时的温度;x_kx_{k+1} 分别表示第 k 次迭代时的决策变量和第 (k+1) 次迭代时的决策变量;\lambda 表示退火速率,控制系统从温度 T_kT_{k+1} 的变化速度;mK 分别表示约束条件个数和迭代次数上限。

整数规划与模拟退火

整数规划(ILP)是一个标准的组合优化问题,用来确定一组可分配的变量值,以满足一组指定的目标函数以及约束条件。整数规划可以形式化成如下的标准型:

\begin{array}{lll}\max &c^Tx\ s.t.&Ax\leq b\ &x\in Z^n \end{array}

其中,c 为目标函数的系数向量,A 为约束条件矩阵,b 为约束条件右端常数,Z^n 表示 n 个整数的取值范围,即 Z^n=[-2^{31}, 2^{31}-1]

整数规划问题可以转换为计算 p=\log(\sum_{x} e^{-cx}) ,并在 p 上定义整数规划问题的目标函数。类似地,我们也可以考虑对某个决策变量 y\in R 定义整数规划问题,即:

式中,R[0,+\infty) 中的任意集合,S{x\in R: |x|\leq y}

整数规划与模拟退火算法的关系很紧密。在整数规划问题中,模拟退火算法的初始温度可以设置为 T_0=1 ,退火速率参数 \lambda>0 可设置为 0.9/K 。该算法的精髓是在每一步迭代中,生成一系列候选解,并在某一阈值上接受,或者拒绝某一解,达到探索最优解的目的。因此,整数规划和模拟退火算法一起被称为“一对儿”。

多约束问题与模拟退火

多约束问题是指目标函数及约束条件之间存在多个互相矛盾的约束。常见的多约束问题有可行约束、界线约束、单纯形约束、周期约束等。多约束问题的求解可以采用模型方法(先将多约束问题转化为单一约束问题)或求解器方法(建立离散化约束集合,并通过迭代寻找最优解)。

可行约束问题

给定一组约束条件,求解满足所有约束条件的最优解,即:

式中,g_i(x)h_j(x) 分别表示第 i 个可行约束和第 j 个平等约束,f(x) 为目标函数。可行约束问题的求解,可以使用多项式时间算法。

对于某些约束条件,比如单纯形约束,可以使用数值算法,但对于可行约束问题,目前还没有特别有效的方法。为此,模拟退火算法被提出来。

旋转约束问题

在多维空间中,存在一些形状不规则的约束条件,比如旋转约束、平移约束等。假设有一个变量序列 X=(x_1,\cdots,x_n)^T ,希望找到其所有元素的最小值,但是要满足 g_i(X)\leq 0 ,其中 g_i(x) 表示 i 维上的约束函数。即:

式中,X_n 表示序列 X 的第 n 个元素。

目前,几种可用的模型方法可以处理旋转约束问题,如:

  1. 把单维情形的约束条件转换为多个二维约束条件,通过多项式时间算法求解: 式中,\phi_i(x_i) 表示在 i 维上的约束条件,uv 是超平面的法向量,\pi\theta 是角度,这里约束条件由两个二维约束条件的交集构成。

  2. 将约束函数分解为边界条件和中心点约束,通过多项式时间算法求解:

g_i(X) 按边界条件和中心点约束两类,并构建对应的 PPL 描述子,再将每个 PPL 描述子作为单一约束求解,最终合并得到的结果就是最优解。

  1. 通过建立离散化约束集合,并通过迭代寻找最优解。

多约束问题与模拟退火算法

多约束问题的求解可以采用模型方法(先将多约束问题转化为单一约束问题)或求解器方法。目前,研究人员已经开发了许多模型方法来处理多约束问题,如:

  1. 对可行约束使用切割法和二次规划。

  2. 使用路径约束技术处理旋转约束问题。

  3. 使用分治法和平衡对偶等方法处理非线性多约束问题。

因此,在实际中,我们可以采用模型方法来求解多约束问题,然后采用模拟退火算法来进一步优化模型方法得出的结果。

时变模拟退火算法

时变模拟退火算法利用时变温度,模拟退火算法在每次迭代时都增加了一次计数,迭代次数由初始温度决定。例如,可以设置初始温度为 T_0 ,每次迭代都减半温度,直到达到停止条件或达到最大迭代次数。

时变模拟退火算法的基本模型为:

式中,T_{\lambda(k)} 表示时变温度,一般为 T_{\lambda(k)}=\frac{T_0}{e^{\lambda k}}T_{\lambda(k)}=\beta\cdot T_{\lambda(k-1)}\beta\geq 0 为退火速率),\lambda(k) 表示第 k 次迭代时的退火轮数。

时变模拟退火算法可以在一定程度上克服拟退火算法收敛慢、容易陷入局部最小值的缺陷,但不能保证达到全局最优解。因此,如果需要找寻全局最优解,还是建议采用其它方法,如遗传算法、梯度下降算法等。

个体差异的模拟退火算法

模拟退火算法通过引入个体之间的差异,能够生成具有更多的差异性的解。个体差异的模拟退火算法是指将模拟退火算法改进,使个体在每个迭代过程中保持自身的一些特性。个体差异的模拟退火算法主要有以下三种类型:

  1. 元件退火:个体退火是在每个迭代过程中,不改变其他个体的状态,仅对当前个体施加扰动。以 0-1 背包问题为例,可以在每个迭代过程中,随机选择一件物品,使其值的取值随机改变。

  2. 约束规划:个体差异的模拟退火算法不仅可以用于整数规划问题,还可以用于其他类型的约束优化问题。在每次迭代中,随机选择一个约束,并添加或删除一些可行解,以增大或减小其权重,直到达到某一阈值,或者达到最大迭代次数。

  3. 小区域退火:个体差异的模拟退火算法还可以进一步改进,使算法能够跳出局部最小值。在每次迭代时,不仅选择当前解周围的某个小区域,还可以选择另一个解。

4.改进型模拟退火算法

改进型模拟退火算法是指利用改进型的退火机制,提升模拟退火算法的性能和可靠性。现有的模拟退火算法模型主要是通过引入退火速率参数 \lambda 来控制系统从温度 T_kT_{k+1} 的变化速度。然而,实际上,不同的算法模型都存在固定的退火速率参数。因此,如何提升模拟退火算法的性能,尤其是对大型问题的求解,则是当前研究热点。

温度衰减法

温度衰减法是指在温度上引入随机因素。在模拟退火算法中,温度的更新规则可以设置为:

式中,c 是新的温度,[a,b] 表示温度下降或上升的范围。随机因素可以防止算法快速进入局部最小值,避免陷入鞍点或局部极小值。

大步退火法

大步退火法是指每次迭代只改变较小的一部分状态,而不是整体变化,以确保系统具有弹性。在大步退火法中,每次迭代的温度更新规则可以设置为:

式中,\alpha 是新的温度,[a,b] 表示温度下降或上升的范围。在大步退火法中,算法的收敛速度显著快于模拟退火算法。

坐标轴跳跃法

坐标轴跳跃法是指每次迭代只改变一小部分状态,而不是整体变化,以确保系统具有弹性。在坐标轴跳跃法中,每次迭代的状态更新规则可以设置为:

x_{k+1}=x_k+\delta x,\quad \delta x\sim N(0,\sigma^2I)

式中,\delta x 是新的状态,N(0,\sigma^2I) 表示样本的协方差为单位阵 \sigma^2I 的正态分布。坐标轴跳跃法有利于将退火过程看做是逐渐转向最优解的过程,而不是突兀地跳跃到那里。

提前终止法

提前终止法是指在达到最大迭代次数之前,判断算法是否处在局部最优。如果认为算法已达到局部最优,则立刻停止计算;否则,继续执行算法,直到达到最大迭代次数。

提前终止法通过判断当前解是否与上次解非常接近,来判定算法是否收敛。若相似度达到一定阈值,则认为算法已收敛。

5.实验与验证

为了验证模拟退火算法模型的有效性,作者设计了一些典型问题,并进行了实验验证。

整数规划

为了验证整数规划与模拟退火算法模型的效果,作者构造了一个整数规划问题:

整数规划问题可以表示成求 \log(\sum_{x} e^{-4x_1-3x_2}) ,并且通过定义目标函数,将整数规划问题转化为一般的约束优化问题。为了验证模型的有效性,作者设计了两种算法模型:

  • 单一模拟退火算法:作者使用初始温度为 T_0=10 ,退火速率参数 \lambda=0.9 ,并采用单次迭代算法模型。

  • 循环模拟退火算法:作者使用初始温度为 T_0=10 ,退火速率参数 \lambda=0.9 ,并采用循环迭代算法模型。

结果显示,单一模拟退火算法模型和循环模拟退火算法模型均能够找到全局最优解。并且,两个算法模型的运行时间相当,且各有千秋。

可行约束问题

可行约束问题是指目标函数及约束条件之间存在多个互相矛盾的约束。给定一组约束条件,求解满足所有约束条件的最优解,即:

为了验证模型的有效性,作者设计了两种算法模型:

  • 单一模拟退火算法:作者使用初始温度为 T_0=10 ,退火速率参数 \lambda=0.9 ,并采用单次迭代算法模型。

  • 循环模拟退火算法:作者使用初始温度为 T_0=10 ,退火速率参数 \lambda=0.9 ,并采用循环迭代算法模型。

结果显示,单一模拟退火算法模型和循环模拟退火算法模型均能够找到全局最优解。并且,两个算法模型的运行时间相当,且各有千秋。

多项式函数约束优化问题

多项式函数约束优化问题是指目标函数和约束条件都是多项式函数。给定一组约束条件,求解满足所有约束条件的最优解,即:

为了验证模型的有效性,作者设计了两种算法模型:

  • 单一模拟退火算法:作者使用初始温度为 T_0=10 ,退火速率参数 \lambda=0.9 ,并采用单次迭代算法模型。

  • 循环模拟退火算法:作者使用初始温度为 T_0=10 ,退火速率参数 \lambda=0.9 ,并采用循环迭代算法模型。

结果显示,单一模拟退火算法模型和循环模拟退火算法模型均能够找到全局最优解。并且,两个算法模型的运行时间相当,且各有千秋。

旋转约束问题

旋转约束问题是在多维空间中,存在一些形状不规则的约束条件,比如旋转约束、平移约束等。假设有一个变量序列 X=(x_1,\cdots,x_n)^T ,希望找到其所有元素的最小值,但是要满足 g_i(X)\leq 0 ,其中 g_i(x) 表示 i 维上的约束函数。即:

为了验证模型的有效性,作者设计了两种算法模型:

  • 坐标轴跳跃法:作者使用坐标轴跳跃法算法模型。

  • 大步退火法:作者使用大步退火法算法模型。

结果显示,坐标轴跳跃法算法模型能够在一定时间内找到全局最优解,且较大步退火法算法模型速度更快。但是,坐标轴跳跃法算法模型缺乏弹性,而大步退火法算法模型具有更好的弹性。

全部评论 (0)

还没有任何评论哟~