基于模拟退火的全局优化算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- 3. 0 - 0. 5837 - 6. 5201 4090
- 1. 9816 2. 5000
1. 0 - 0. 5837 - 6. 5201 3678
t 0,衰减函数 ,终值 (停止准则 )及 Mapko b链长度 Lk .
( 2) 参数 t = tk 时 ,按照如下过程作 Lk 次试探搜
索:
1) 根据当前解 xk 的性 质产生一随机 向量 [ 2] zk
(对于连续变量 )或随机偏移量 m′(对于离散变量 ) , 从而得到一当前解邻域的新的试探点 x′k:
( 1) 对大量初始解执行算法 ,再从中选优 ; ( 2) 引入更复杂的邻域结构 ,使算法能对解空间 的更大范围进行搜索 ; ( 3) 改变局部搜索算法只接受优化解迭代的准 则 ,在一定限度内接受恶化解。 前两种方案既不能从数学上严格保证达到全局 最优 ,而且求解过程冗长 ,不便于工程的实际应用。第 三种方案需要引入新的接受准则 ,得到了一种具有全 局寻优的方法— — 模拟退火算法。笔者将对模拟退火 算法进行改进 ,并结合工程实际应用说明 ,模拟退火 算法能够有效地解决连续变量和离散变量的全局寻 优问题。
摘 要: 针对优化问题中的多极值的现象 ,提出了基于有记忆模拟退火的全局优化算法。并针对不同的 设计变量 ,采用了不同的邻域产生方法。 在分析算法性能的基础上 ,分别对连续变量 和离散变量优化问 题的工程实例进行了求 优 ,结果表明该算法具有较高的计算精度和适应性。 关键词: 模拟退火 ;全局优化 ;邻域 中图分类号: O 224; T P18 文献标识码: A 文章编号: 1001-7437( 2001) 02-33-05
f (xk ) tk
f ( x′k )
, 否则
( 2)
如果 Z≤ P ,则接受新解 , xk= x′k , f ( xk ) = f ( x′ k ) ,否则
当前解不变。
3) 试探搜索小于 Lk 次 ,返回步骤 1) ,否则进入 步骤 ( 3) .
( 3) 如果迭代终止条件满足 ,则算法结束 ,当前
m′ =
m′+ m′ -
n 当 m′> n 当 m′ <
0 , 0
n 为扩大位置值。
2. 3 有记忆的模拟退火算法
由于模拟退火算法在搜索过程中可以在一定程 度上接受部分恶化解 ,使得算法能够跳出局部最优
第 2期 李文勇等: 基于模拟退火的 全局优化算法 3 5
解作为近似全局最优解 ; 否则继续步 ( 4) .
( 4) 根据给定的温度衰减函数产生新的温度控
制参数 tk+ 1及 Mapkob 链长度 Lk+ 1 ,转入步 ( 2)进入 下一温度点的平衡点寻优。
从上述步骤可以看出模拟退火算法依据 ( 2)式描
述的 M etro polis准则接 受新解 ,因此除了接受优化 解外 ,还在一定限度内接受恶化解 ,这正是模拟退火
算法与局部搜索算法的本质区别所在。 开始时 t 值 大 ,可能接受较差的恶化解 ; 随着 t 的减小 ,则只能接 受较好的恶化解 ; 最后在 t 值趋于零值时 ,就不再接 受恶化解了。 从而使模拟退火算法能从局部最优的
“陷阱”中跳出 ,最后得到全局最优解。
2 关于算法的一些补充
2. 1 冷却进度表的选取 [ 1]
1 模拟退火算法
模拟退火算法源于对固体退火过程的模拟 ,用一
组称为冷却进度表的参数控制算法的进程 ,使算法在
控制参数 t 徐徐“降温”并趋于零时 ,最终求得组合优
化问题的相对全局最优解。 其中优化问题的一个解 i
及其目标函数 f ( i )分别与固体的一个微观状态 i 及
其能量 Ei 相对应。 令随算法进程递减的控制参数 t
化问题的约束方程 ,从而修改目标函数所对应的能量
函数。 公式如下:
m
∑ H( x ) = f ( x ) + Rj max [ 0, gj ( x ) ]2 + j= 1
l
∑ Rk [hk ( x ) ]2
( 4)
k= 1
其中 gj ( x ) —— 不等式约束 ,
hk ( x )—— 等式约束 ,
计变量 , r 为 0- 1的随机值 , q定义为连续变量的自适
应随机因子 ,它根据设计变量的取值范围而改变。试验
计算表明 q对算法的全局收敛有较大的影响。
对于离散变量而言 ,设 X 为离散变量的取值序
列 , m 为当前解的离散位置。 本文采用在当前离散位 置的基础上随机产生一位置增值 m′,则
x′ ki = X (m + m′) ,
2. 2 邻域的产生方法
连续变量存在无数个状态 ,邻域的产生方法应该
保证算法的迭代能达到变量的所有状态。本文采用的
是产生随机向量 zk 的方法 ,即根据当前解的性质产
生设计变量的增值向量:
x′ki = xki + z ki ,其中 z ki = r 2 q - q
表示了连续变量的邻域结构 , i 表示当前解的第 i 个设
研究 .
3 4 桂林电子工业学院学报 2001年 6月
算出在给定当前迭代点 xk 和温度 tk 下与 Met ropoli s
接受准则相对应的转移概率 [1 ] P ,
1, 当 f ( x′k ) ≤ f ( xk )
P=
exp
少计算量 , t0 不宜取得过大 ,而应与其它参数进行折 中优化选取。
2. 1. 2 控制参数 t 的衰减函数
一个常用的控制参数衰减函数是:
tk+ 1 = T tk , k = 0, 1, 2,… .
( 3)
T是一个 接近 1的常数 , 它的取值决 定了降温的过
程。 小的衰减量可能导致算法进程迭代次数的增加 , 从而使算法进程接受更多的变换 ,访问更多的邻域 , 搜索更大范围的解空间 ,返回更高质的最终解。 同时 由于在 tk 值上已经达到准平衡 ,则在 tk+ 1时只需少量 的变换就可达到准平衡。 这样就可选取较短长度的 M apkob链来减少算法时间。 2. 1. 3 Ma pkob链长度 Lk
解。然而 ,对于多极值的工程问题 ,该算法就很难保证 最终的局部最优解正好就是整个搜索过程中曾经到
达过的最优解。因此 ,若给算法增加一个“记忆器” ,使 之能够记住搜索到过的最好结果 ,无疑会在许多情况 下提高算法所得解的质量。
有记忆的模拟退火算法可描述如下: 设置记忆变 量 x* 和 f ( x* ) ,分别用于记忆当前遇到的最优解和 最优目标函数值。 开始时令 x* 和 f ( x* )分别等于初 始解 x0 和目标函数值 f ( x 0 ) ; 以后在每次接受一个 新 搜索解时 ,其目标函数值 f ( xk )就与 f ( x* )比较。 若 f ( xk )优于 f ( x* ) ,则将 xk 和 f ( xk )分别取代 x* 和 f ( x* ) ; 最后算法结束时 ,再从当前解与记忆变量 x* 中选出较优者为算法的近似全局最优解。
策略。只有在初始的大范围搜索阶段找到全局最优解
所在的区域 ,才能逐渐缩小搜索的范围 ,最终求出全 局最优解。 模拟退火算法是通过控制参数 t 的初值 t0 和其衰减变化过程来实现大范围的粗略搜索与局部
的精细搜索。 经验法则要求只有足够大的 t0 才能满 足算法要求。 在问题规模较大时 ,过小的 t0 往往导致 算法难以跳出局部陷阱而达不到全局最优。但为了减
担当固体退火过程中温度 T 的角色 ,则对于 t 的每一
取值 ,算法采用 Met ropo li s接受准则 ,持续 进行“产
生新解 - 判断 - 接受 /舍弃”的迭代过程而达到该“温
度”下的“平衡点”。 具体步骤如下 [1 ]:
( 1) 给定冷却进度表参数及迭代初始解 x 0以及
f ( x 0) .其中冷却进度表参数包括: 控制参数 t 的初值
冷却进度表是一组控制算法进程的参数 ,它的合
理选取是保证算法在有限时间内返回问题的近似最
优解 ,即保证算法的全局收敛性和效率。 本文的冷却 进度表参数参考文献 [ 1 ]的经验法则来进行选取。
2. 1. 1 控制参数 t 的初值 t0 求解全局优化问题的随机搜索算法一般都采用
大范围的粗略搜索与局部的精细搜索相结合的搜索
x′k =
xk + zk , 对于连续变量 X ( m + m′) , 对于离散变量
( 1)
其中 X 为离散变量的取值序列 , m 为当前解的离散
位置。
2) 产生一个在 ( 0, 1)上均匀分布的随机数 Z,计
收稿日期: 2001- 03- 23 基金项目: 电科院基金资助项目 (编号: D J7. 3. 9. 2) 作者简介: 李文勇 ( 1976-) ,男 ,河南南阳人 ,桂林电子工业学院机电与交通工程系助 教 , 硕士 , 主要从事电子机械与现代设计方法等方 面的
m′为 - qL~ qL 的随机整数 , qL 为离散变量的自适应
随机因子。 则 m′表示了离散变量的邻域结构。
本文同时在迭代时采用了扩大战果的方法。对于
连续变量 ,如果上次搜索的新点被接受 ,则本次随机
向量 zk+ 1 = zk* λ,λ为扩大倍数。而对于离散变量 ,如
果上次搜索的新点被接受 ,则本次离散位置增值
M apkob链长度的选取原则是: 在控制参数 t 的 衰减函数已选定的前提下 , Lk 应选的在控制参数 t 的 每 一取值 上能够 达到 准平衡。 经验准 则采用 L-= 100n, n 为问题规模。 2. 1. 4 算法停止准则
合理的停止准则既能保证算法收敛于某一近似 解 ,又能使最终解具有一定的全局性。 本文从考虑算 法效率的角度上 ,选取了双重标准。 即迭代在若干个 ( S )相继的 M apkob链中解无任何变化 ,或者达到控 制参数 t 的终值 tf ,算法都将终止。
引言
大多数工程优化问 题中 ,其目标函数都是非凸 的 ,存在许多局部最优解。 但是目前常用的数学规划 方法 ,尤其是非线性规划方法是一种局部搜索算法 , 它们在进行优化计算时 ,往往得不到全局最优解。 其 迭代过程为持续地在当前解的邻域中搜索比当前解 更优的解 ,则取代当前解继续搜索 ;否则算法终止 ,当 前解作为问题的最优解。这种局部搜索算法最终解的 质量往往取决于初始解的选取。 为了改善算法性能 , 可以采用下面几种途径:
第 21卷 第 2期 2001年 6月
桂 林 电 子 工 业 学 院 学 报
JOURN AL OF GUIL IN IN STITUTE OF E LECTRONIC TECHNOLOGY
V o l. 21, N o. 2 Jun. 2001
基于模拟退火的全局优化算法
李文勇 , 李泉永
(桂林电子工业学院 机电与交通工程系 ,广西 桂林 541004)
图 1 例 1目标 函数曲线图
图 2 初值 x 0= 4. 0时算法有记忆搜索过程 (`+ ’ 表示记忆点 )
Hale Waihona Puke Baidu
表 1 算法求解例 1结果
模拟退火算法
梯度法 (局部寻优 )
初值 近似全局最 目标函数 搜索次数
优解
最优解 目标函数
- 5. 0 - 0. 5837 - 6. 5201 6784
- 4. 4009 14. 0789
2. 4 约束处理
一般的工程应用中 ,优化问题除了要求满足目标
函数最优外 ,还必须满足一组约束 ,因此解集中可能
包含一些不可行解。为此 ,可以采用两种处理方法: ①
算法的每次搜索的新设计点必须满足约束的限制 ;②
可允许算法包含不可行解 ,但通过目标函数加上罚函
数以惩罚不可行解的出现。本文采用方法②来处理优
R1 , R2 加权大数因子。
3 算法计算性能分析
下面以一具有多极值的算例来分析模拟退火算 法的计算性能。 例 1 mi n f ( x ) = 3* cos( 5x )+ 4* sin( 3x )+ x 2
s. t - 5. 0≤ x≤ 5. 0 从图 1函数曲线中可以看出有多处极小值。其中 全局最优点为 ( - 0. 5837, - 6. 5201) . 应用所提出的 有记忆的模拟退火算法求解该问题 ,计算结果如表 1 所示。 其中冷却进度表参数取为: t0= 10,T= 0. 95, Lk= 100, S= 5, tf = 0. 05, q= 0. 6. 图 2给出了当初值取 x 0= 4. 0时的算法有记忆 搜索过程。