最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

智能优化搜索算法

IT圈 admin 32浏览 0评论

2024年4月11日发(作者:督香洁)

模拟退火算法

模拟退火(Simulated Annealing,简称SA)是一种通用概率算法,用来在一个大的

搜寻空间内找寻命题的最优解。

1、固体退火原理:将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随

温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最

后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T时趋于平衡

的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。

2、用固体退火模拟组合优化问题:将内能E模拟为目标函数值f,温度T演化成控制

参数t,即得到解组合优化问题的模拟退火算法——由初始解i和控制参数初值t开始,对

当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法

终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜

索过程。

3、退火过程:冷却进度表(Cooling Schedule)控制,包括控制参数的初值t及其衰减

因子Δt、每个t值时的迭代次数L和停止条件S。

4、模拟退火算法的模型 模拟退火算法可以分解为解空间、目标函数和初始解三部

分。

(1) 初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点), 每个T值的迭

代次数L

(2) 对k=1,……,L做第(3)至第6步:

(3) 产生新解S′

(4) 计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数

(5) 若Δt′<0则接受S′作为新的当前解,否则以概率exp(-Δt′/T)接受S′作为新的当

前解.

(6) 如果满足终止条件则输出当前解作为最优解,结束程序。 终止条件常取为连续若

干个新解都没有被接受时终止算法。

(7) T逐渐减少,且T->0,然后转第2步。 (降温)

5、模拟退火算法新解的产生和接受:

(1)由一个产生函数从当前解产生一个位于解空间的新解:为便于后续的计算和接受,

减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解

的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域

结构,因而对冷却进度表的选取有一定的影响。

(2)计算与新解所对应的目标函数差:因为目标函数差仅由变换部分产生,所以目标

函数差的计算最好按增量计算。

(3)判断新解是否被接受:判断的依据是一个接受准则,最常用的接受准则是

Metropo1is准则: 若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′

作为新的当前解S。

(4)当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时

的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此

基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试

验。

6、算法的特点

模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;

模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率l 收敛于全局最优解的全

局优化算法;模拟退火算法具有并行性。

7、简单应用

作为模拟退火算法应用,讨论货郎担问题(Travelling Salesman Problem,简记为TSP):

设有n个城市,用数码1,…,n代表。城市i和城市j之间的距离为d(i,j) i, j=1,…,n.TSP

问题是要找遍访每个域市恰好一次的一条回路,且其路径总长度为最短.。

求解TSP的模拟退火算法模型可描述如下:

解空间 解空间S是遍访每个城市恰好一次的所有回路,是{1,……,n}的所有循环排

列的集合,S中的成员记为(w1,w2 ,……,wn),并记wn+1= w1。初始解可选为(1,……,

n)

目标函数 此时的目标函数即为访问所有城市的路径总长度或称为代价函数:

我们要求此代价函数的最小值。

新解的产生 随机产生1和n之间的两相异数k和m,若k

(w1, w2 ,…,wk , wk+1 ,…,wm ,…,wn)

变为:

(w1, w2 ,…,wm , wm-1 ,…,wk+1 , wk ,…,wn).

如果是k>m,则将

(w1, w2 ,…,wk , wk+1 ,…,wm ,…,wn)

变为:

(wm, wm-1 ,…,w1 , wm+1 ,…,wk-1 ,wn , wn-1 ,…,wk).

上述变换方法可简单说成是“逆转中间或者逆转两端”。

也可以采用其他的变换方法,有些变换有独特的优越性,有时也将它们交替使用,得

到一种更好方法。

代价函数差 设将(w1, w2 ,……,wn)变换为(u1, u2 ,……,un), 则代价函数差为:

根据上述分析,可写出用模拟退火算法求解TSP问题的伪程序:

Procedure TSPSA:

begin

init-of-T; { T为初始温度}

S={1,……,n}; {S为初始值}

termination=false;

while termination=false

begin

for i=1 to L do

begin

generate(S′form S); { 从当前回路S产生新回路S′}

Δt:=f(S′))-f(S);{f(S)为路径总长}

IF(Δt<0) OR (EXP(-Δt/T)>Random-of-[0,1])

S=S′;

IF the-halt-condition-is-TRUE THEN

termination=true;

End;

T_lower;

End;

End

模拟退火算法的应用很广泛,可以较高的效率求解最大截问题(Max Cut Problem)、

0-1背包问题(Zero One Knapsack Problem)、图着色问题(Graph Colouring Problem)、

调度问题(Scheduling Problem)等等。

8、参数控制问题

模拟退火算法的应用很广泛,可以求解NP完全问题,但其参数难以控制,其主要问

题有以下三点:

(1) 温度T的初始值设置问题。

温度T的初始值设置是影响模拟退火算法全局搜索性能的重要因素之一、初始温度高,

则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时

间,但全局搜索性能可能受到影响。实际应用过程中,初始温度一般需要依据实验结果进

行若干次调整。

(2) 退火速度问题。

模拟退火算法的全局搜索性能也与退火速度密切相关。一般来说,同一温度下的“充

分”搜索(退火)是相当必要的,但这需要计算时间。实际应用中,要针对具体问题的性质

和特征设置合理的退火平衡条件。

(3) 温度管理问题。

温度管理问题也是模拟退火算法难以处理的问题之一。实际应用中,由于必须考虑计

算复杂度的切实可行性等问题,常采用如下所示的降温方式:T(t+1)=k×T(t) 式中k为正

的略小于1.00的常数,t为降温的次数。

禁忌算法

禁忌搜索算法(Tabu Search或Taboo Search,简称TS算法)是一种全局性邻域搜

索算法,模拟人类具有记忆功能的寻优特征。TS算法通过引入一个灵活的存储结构和相应

的禁忌准则来避免迂回搜索,并通过藐视准则来赦免一些被禁忌的优良状态,进而保证多

样化的有效探索以最终实现全局优化。

1、基本思想

考虑最优化问题,对于X中每一个解x,定义一个邻域N(x),禁忌

搜索算法首先确定一个初始可行解x,初始可行解x可以从一个启发式算法获得或者在可

行解集合X中任意选择,确定完初始可行解后,定义可行解x的邻域移动集s(x),然后从

邻域移动中挑选一个能改进当前解x的移动,s(x),再从新解x’开始,重复搜索。

2、算法流程

给定一个当前解(初始解)和一种邻域,然后在当前解的邻域中确定若干候选解;

若最佳候选解对应的目标值优于“best so far”状态,则忽视其禁忌特性,用其替代当前

解和“best so far”状态,并将相应的对象加入禁忌表,同时修改禁忌表中各对象的任期;

若不存在上述候选解,则选择在候选解中选择非禁忌的最佳状态为新的当前解,而无视它

与当前解的优劣,同时将相应的对象加入禁忌表,并修改禁忌表中各对象的任期;如此重

复上述迭代搜索过程,直至满足停止准则。

(1)给定算法参数,随机产生初始解x,置禁忌表为空。

(2)判断算法终止条件是否满足?若是,则结束算法并输出优化结果;否则,继续以

下步骤。

(3)利用当前解中的邻域函数产生其所有(或若干)邻域解,并从中确定若干候选解。

(4)对候选解判断藐视准则是否满足?若成立,则用满足藐视准则的最佳状态y替代

x成为新的当前解,即x=y,并用与y对应的禁忌对象替换最早进入禁忌表的禁忌对象,

同时用y替换“best so far”状态,然后转步骤6;否则,继续以下步骤。

(5)判断候选解对应的各对象的禁忌属性,选择候选解集中非禁忌对象对应的最佳状

态为新的当前解,同时用与之对应的禁忌对象替换最早进入禁忌表的禁忌对象元素。

(6)转步骤(2)。

3、算法特点

新解不是在当前解的邻域中随机产生,而或是优于“best so far”的解,或是非禁

忌的最佳解,因此选取优良解的概率远远大于其他解。由于TS算法具有灵活的记忆功能和

藐视准则,并且在搜索过程中可以接受劣解,所以具有较强的“爬山”能力,搜索时能够

跳出局部最优解,转向解空间的其他区域,从而增强获得更好的全局最优解的概率,所以

TS算法是一种局部搜索能力很强的全局迭代寻优算法。

4、组合策略

(1)邻域移动:是从一个解产生另一个解的途径。它是保证产生好的解和算法搜索速度的

最重要因素之一。通过移动,目标函数值将产生变化,移动前后的目标函数值之差,称之

为移动值。如果移动值是非负的,则称此移动为改进移动;否则称作非改进移动。最好的移

动不一定是改进移动,也可能是非改进移动,这一点就保证搜索陷入局部最优时,禁忌搜

索算法能自动把它跳出局部最优。

(2)禁忌表:不允许恢复即被禁止的性质称作Tabu。禁忌表的主要目的是阻止搜索过程

中出现循环和避免陷入局部最优,它通常记录前若干次的移动,禁止这些移动在近期内返

回。在迭代固定次数后,禁忌表释放这些移动,重新参加运算,因此它是一个循环表,每

迭代一次,将最近的一次移动放在禁忌表的末端,而它的最早的一个移动就从禁忌表中释

放出来。禁忌表记载移动的方式主要有三种:*记录目标值;*移动前的状态;*移禁忌搜索

算法.

(3)选择策略:即择优规则,是对当前的邻域移动选择一个移动而采用的准则。当前采用

最广泛的两类策略是最好解优先策略(Bestlmprovedstrategy)和第一个改进解优先策略

(FirstImProvedstrategy)。最好改进解优先策略就是对当前邻域中选择移动值最好的移动

产生的解,作为下一次迭代的开始。而第一个改进解优先策略是搜索邻域移动时选择第一

改进当前解的邻域移动产生的解作为下一次迭代的开始。

(4)破禁策略:常指渴望水平(Aspiration)函数选择,当一个禁忌移动在随后T次的迭代

内再度出现时,如果它能把搜索带到一个从未搜索过的区域,则应该接受该移动即破禁,

不受禁忌表的限制。

(5)停止规则:一种是把最大迭代数作为停止算法的标准,而不以局优为停止规则;另一

种是在给定数目的迭代内所发现的最好解无法改进或无法离开它时,算法停止。

(6)长期表:短期记忆用来避免最近所作的一些移动被重复,但是在很多的情况下短期记

忆并不足以把算法搜索带到能够改进解的区域。因此在实际应用中常常短期记忆与长期记

忆相结合使用,以保持局部的强化和全局多样化之间的平衡,即在加强与好解有关性质的

同时还能把搜索带到未搜索过的区域。 一种通过惩罚的形式,即用一些评价函数来惩罚在

过去的搜索中用得最多或最少的那些选择,并用一些启发方法来产生新的初始点。另一种

形式采用频率矩阵,使用两种长期记忆,一种是基于最小频率的长期记忆,另一种是基于

最大频率的长期记忆。

遗传算法

遗传算法(Genetic Algorithm,简称GA)是建立在自然选择和群体遗传学基础上,

通过自然选择、杂交和变异实现随机化搜索的方法。

1、基本思想

从任意初始种群出发,通过随机选择(使种群中的优秀个体有更多的机会传给下一代)、

杂交(体现自然界中种群内个体之间的信息交换)和变异(在种群中引入新的变种确保种

群中信息的多样性)等遗传操作,使种群一代一代地进化到搜索空间中越来越好的区域,

直至达到最优解。具体的算法流程如下:

a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初

始群体P(0)。

b)种群P(t)经过选择、交叉、变异运算后得到下一代种群P(t+1)

个体评价:计算群体P(t)中各个个体的适应度。

选择运算:将选择算子作用于群体。

交叉运算;将交叉算子作用于群体,在遗传算法中起核心作用。

变异运算:将变异算子作用于群体。

c)终止条件判断 若t<=T,则t=t+1,转至b);

d):以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。

2、GA算法中的关键问题

1)编码方式:把问题空间中的参数转换成一串空间的由基因按一定结构组成的染色体

或个体的操作,也成为问题的表示。目前的几种常用的编码技术有二进制编码[简单异性、

符合最小字符集编码规则、易于试用漠视定力进行分析],浮点数编码,字符编码,变成编

码等。

评估编码策略常采用以下3个规范:

a)完备性(completeness):问题空间中的所有点(候选解)都能作为GA空间中的点(染

色体)表现。

b)健全性(soundness): GA空间中的染色体能对应所有问题空间中的候选解。

c)非冗余性(nonredundancy):染色体和候选解一一对应。

2)初始种群的产生——随机方法,使初始种群的均匀分布于整个解空间,使GA从

全局范围内搜索最优解。

初始种群设定可采用以下两个策略:

a)根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,

在此分布范围内设定初始群体。

b)先随机生成一定数目的个体,然后从中挑出最好的个体加到初始群体中。这种过程

不断迭代,直到初始群体中个体数达到了预先确定的规模。

3)适应度函数的选取

遗传算法的适应度函数也叫评价函数,是用来判断群体中的个体的优劣程度的指标,

它是根据所求问题的目标函数来进行评估的。适应度函数的设计主要满足以下条件:单值、

连续、非负、最大化;合理、一致性;计算量小;通用性强。

4)GA算子——选择算子、交叉算子和变异算子

在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照

它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的进化过程。个体遗

传算子的操作都是在随机扰动情况下进行的。 遗传操作的效果和上述三个遗传算子所取的

操作概率,编码方法,群体大小,初始群体以及适应度函数的设定密切相关。

a) 选择(Selection)——竞争选择、排序选择和稳态选择

从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算

子(reproduction operator)。选择的目的是把优化的个体(或解)直接遗传到下一代或通过

配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础

上的,目前常用的选择算子有以下几种:适应度比例方法、随机遍历抽样法、局部选择法、

局部选择法。

其中轮盘赌选择法 (roulette wheel selection)是最简单也是最常用的选择方法。

在该方法中,各个个体的选择概率和其适应度值成比例。设群体大小为n,其中个体i的适

应度为fi,则i 被选择的概率Pi,为

显然,概率反映了个体i的适应度在整个群体的个体适应度总和中所占的比例.个体适

应度越大。其被选择的概率就越高、反之亦然。计算出群体中各个个体的选择概率后,为

了选择交配个体,需要进行多轮选择。每一轮产生一个[0,1]之间均匀随机数,将该随机

数作为选择指针来确定被选个体。

b)交叉(Crossover)——多点交叉和均匀交叉

遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的

部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提

高。

交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组

合,期望将有益基因组合在一起。根据编码表示方法的不同,可以有以下的算法:

*实值重组(real valued recombination):离散重组(discrete recombination);

中间重组(intermediate recombination);线性重组(linear recombination);扩展线

性重组(extended linear recombination);

*二进制交叉(binary valued crossover):单点交叉(single-point crossover);多

点交叉(multiple-point crossover);均匀交叉(uniform crossover);洗牌交叉(shuffle

crossover);缩小代理交叉(crossover with reduced surrogate)。

最常用的交叉算子为单点交叉(one-point crossover)。具体操作是:在个体串中随

机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两

个新个体。下面给出了单点交叉的一个例子:

个体A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新个体

个体B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新个体

c)变异(Mutation)——概率变异和预测变异

变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个

体编码表示方法的不同,可以有以下的算法:实值变异;二进制变异。

一般来说,变异算子操作的基本步骤如下:对群中所有个体以事先设定的编译概率判

断是否进行变异;对进行变异的个体随机选择变异位进行变异。

遗传算法导引入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。当遗

传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加

速向最优解收敛。二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。

遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能

力而作为辅助算子。遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备

兼顾全局和局部的均衡搜索能力。所谓相互配合.是指当群体在进化中陷于搜索空间中某个

超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。所谓相互竞争,是指当

通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。

基本变异算子是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座

的基因值做变动(以变异概率P.做变动),基因位下方标有*号的基因发生变异。 变异率的选

取一般受种群大小、染色体长度等因素的影响,通常选取很小的值,一般取0.001-0.1。

5)GA参数值——种群规模、染色体长度、杂交概率和变异概率

3、算法特点 一类可用于复杂系统优化的具有鲁棒性的搜索算法

遗传算法作为一种快捷、简便、容错性强的算法,在各类结构对象的优化过程中显

示出明显的优势。与传统的搜索方法相比,遗传算法具有如下特点:

a)搜索过程不直接作用在变量上,而是在参数集进行了编码的个体。此编码操作,使

得遗传算法可直接对结构对象(集合、序列、矩阵、树、图、链和表)进行操作。

b)搜索过程是从一组解迭代到另一组解,采用同时处理群体中多个个体的方法,降低

了陷入局部最优解的可能性,并易于并行化。

c)采用概率的变迁规则(概率)来指导搜索方向,而不采用确定性搜索规则。

d)对搜索空间没有任何特殊要求(如连通性、凸性等),只利用适应性信息,不需要导

数等其它辅助信息,适应范围更广。

4、遗传算法的应用

1)函数优化——遗传算法的经典应用领域,进行性能评价的常用算例

许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹

函数、低维函数和高维函数、单峰函数和多峰函数等。对于一些非线性、多模型、多目标

的函数优化问题,用其它优化方法较难求解,而遗传算法可以方便的得到较好的结果。

2)组合优化

遗传算法已经在求解旅行商问题、 背包问题、装箱问题、图形划分问题等方面得到

成功的应用。

此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编

码和机器学习等方面获得了广泛的运用。

5、改善算法性能的措施

1)综合优选参数(试探法)

2)采用变参数法(定初值,再改善)

3)选择式单点杂交(高者不变,低者转优)

4)特殊的杂交方法(头尾杂交、头头杂交)

5)终止进化准则(最有个体最少保留代数和最大遗传代数相结合)

6、术语说明

1)染色体(Chronmosome):染色体又可以叫做基因型个体(individuals),对应问题

的一个解的编码;一定数量的个体组成了群体(population),群体中个体的数量叫做群体大

小。

2)基因(Gene):基因是串中的元素,基因用于表示个体的特征。例如有一个串S=

1011,则其中的1,0,1,1这4个元素分别称为基因。它们的值称为等位基因(Alletes)。

3)基因地点(Locus):基因地点在算法中表示一个基因在串中的位置称为基因位置

(Gene Position),有时也简称基因位。基因位置由串的左向右计算,始于1,例如在串 S

=1101 中,0的基因位置是3。

4)基因特征值(Gene Feature):在用串表示整数时,基因的特征值与二进制数的权

一致;例如在串 S=1011 中,基因位置3中的1,它的基因特征值为2;基因位置1中的

1,它的基因特征值为8。

5)适应度(Fitness):各个个体对环境的适应程度叫做适应度(fitness)。为了体现染色

体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数. 这

个函数是计算个体在群体中被使用的概率。

2024年4月11日发(作者:督香洁)

模拟退火算法

模拟退火(Simulated Annealing,简称SA)是一种通用概率算法,用来在一个大的

搜寻空间内找寻命题的最优解。

1、固体退火原理:将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随

温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最

后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T时趋于平衡

的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。

2、用固体退火模拟组合优化问题:将内能E模拟为目标函数值f,温度T演化成控制

参数t,即得到解组合优化问题的模拟退火算法——由初始解i和控制参数初值t开始,对

当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法

终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜

索过程。

3、退火过程:冷却进度表(Cooling Schedule)控制,包括控制参数的初值t及其衰减

因子Δt、每个t值时的迭代次数L和停止条件S。

4、模拟退火算法的模型 模拟退火算法可以分解为解空间、目标函数和初始解三部

分。

(1) 初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点), 每个T值的迭

代次数L

(2) 对k=1,……,L做第(3)至第6步:

(3) 产生新解S′

(4) 计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数

(5) 若Δt′<0则接受S′作为新的当前解,否则以概率exp(-Δt′/T)接受S′作为新的当

前解.

(6) 如果满足终止条件则输出当前解作为最优解,结束程序。 终止条件常取为连续若

干个新解都没有被接受时终止算法。

(7) T逐渐减少,且T->0,然后转第2步。 (降温)

5、模拟退火算法新解的产生和接受:

(1)由一个产生函数从当前解产生一个位于解空间的新解:为便于后续的计算和接受,

减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解

的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域

结构,因而对冷却进度表的选取有一定的影响。

(2)计算与新解所对应的目标函数差:因为目标函数差仅由变换部分产生,所以目标

函数差的计算最好按增量计算。

(3)判断新解是否被接受:判断的依据是一个接受准则,最常用的接受准则是

Metropo1is准则: 若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′

作为新的当前解S。

(4)当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时

的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此

基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试

验。

6、算法的特点

模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;

模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率l 收敛于全局最优解的全

局优化算法;模拟退火算法具有并行性。

7、简单应用

作为模拟退火算法应用,讨论货郎担问题(Travelling Salesman Problem,简记为TSP):

设有n个城市,用数码1,…,n代表。城市i和城市j之间的距离为d(i,j) i, j=1,…,n.TSP

问题是要找遍访每个域市恰好一次的一条回路,且其路径总长度为最短.。

求解TSP的模拟退火算法模型可描述如下:

解空间 解空间S是遍访每个城市恰好一次的所有回路,是{1,……,n}的所有循环排

列的集合,S中的成员记为(w1,w2 ,……,wn),并记wn+1= w1。初始解可选为(1,……,

n)

目标函数 此时的目标函数即为访问所有城市的路径总长度或称为代价函数:

我们要求此代价函数的最小值。

新解的产生 随机产生1和n之间的两相异数k和m,若k

(w1, w2 ,…,wk , wk+1 ,…,wm ,…,wn)

变为:

(w1, w2 ,…,wm , wm-1 ,…,wk+1 , wk ,…,wn).

如果是k>m,则将

(w1, w2 ,…,wk , wk+1 ,…,wm ,…,wn)

变为:

(wm, wm-1 ,…,w1 , wm+1 ,…,wk-1 ,wn , wn-1 ,…,wk).

上述变换方法可简单说成是“逆转中间或者逆转两端”。

也可以采用其他的变换方法,有些变换有独特的优越性,有时也将它们交替使用,得

到一种更好方法。

代价函数差 设将(w1, w2 ,……,wn)变换为(u1, u2 ,……,un), 则代价函数差为:

根据上述分析,可写出用模拟退火算法求解TSP问题的伪程序:

Procedure TSPSA:

begin

init-of-T; { T为初始温度}

S={1,……,n}; {S为初始值}

termination=false;

while termination=false

begin

for i=1 to L do

begin

generate(S′form S); { 从当前回路S产生新回路S′}

Δt:=f(S′))-f(S);{f(S)为路径总长}

IF(Δt<0) OR (EXP(-Δt/T)>Random-of-[0,1])

S=S′;

IF the-halt-condition-is-TRUE THEN

termination=true;

End;

T_lower;

End;

End

模拟退火算法的应用很广泛,可以较高的效率求解最大截问题(Max Cut Problem)、

0-1背包问题(Zero One Knapsack Problem)、图着色问题(Graph Colouring Problem)、

调度问题(Scheduling Problem)等等。

8、参数控制问题

模拟退火算法的应用很广泛,可以求解NP完全问题,但其参数难以控制,其主要问

题有以下三点:

(1) 温度T的初始值设置问题。

温度T的初始值设置是影响模拟退火算法全局搜索性能的重要因素之一、初始温度高,

则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时

间,但全局搜索性能可能受到影响。实际应用过程中,初始温度一般需要依据实验结果进

行若干次调整。

(2) 退火速度问题。

模拟退火算法的全局搜索性能也与退火速度密切相关。一般来说,同一温度下的“充

分”搜索(退火)是相当必要的,但这需要计算时间。实际应用中,要针对具体问题的性质

和特征设置合理的退火平衡条件。

(3) 温度管理问题。

温度管理问题也是模拟退火算法难以处理的问题之一。实际应用中,由于必须考虑计

算复杂度的切实可行性等问题,常采用如下所示的降温方式:T(t+1)=k×T(t) 式中k为正

的略小于1.00的常数,t为降温的次数。

禁忌算法

禁忌搜索算法(Tabu Search或Taboo Search,简称TS算法)是一种全局性邻域搜

索算法,模拟人类具有记忆功能的寻优特征。TS算法通过引入一个灵活的存储结构和相应

的禁忌准则来避免迂回搜索,并通过藐视准则来赦免一些被禁忌的优良状态,进而保证多

样化的有效探索以最终实现全局优化。

1、基本思想

考虑最优化问题,对于X中每一个解x,定义一个邻域N(x),禁忌

搜索算法首先确定一个初始可行解x,初始可行解x可以从一个启发式算法获得或者在可

行解集合X中任意选择,确定完初始可行解后,定义可行解x的邻域移动集s(x),然后从

邻域移动中挑选一个能改进当前解x的移动,s(x),再从新解x’开始,重复搜索。

2、算法流程

给定一个当前解(初始解)和一种邻域,然后在当前解的邻域中确定若干候选解;

若最佳候选解对应的目标值优于“best so far”状态,则忽视其禁忌特性,用其替代当前

解和“best so far”状态,并将相应的对象加入禁忌表,同时修改禁忌表中各对象的任期;

若不存在上述候选解,则选择在候选解中选择非禁忌的最佳状态为新的当前解,而无视它

与当前解的优劣,同时将相应的对象加入禁忌表,并修改禁忌表中各对象的任期;如此重

复上述迭代搜索过程,直至满足停止准则。

(1)给定算法参数,随机产生初始解x,置禁忌表为空。

(2)判断算法终止条件是否满足?若是,则结束算法并输出优化结果;否则,继续以

下步骤。

(3)利用当前解中的邻域函数产生其所有(或若干)邻域解,并从中确定若干候选解。

(4)对候选解判断藐视准则是否满足?若成立,则用满足藐视准则的最佳状态y替代

x成为新的当前解,即x=y,并用与y对应的禁忌对象替换最早进入禁忌表的禁忌对象,

同时用y替换“best so far”状态,然后转步骤6;否则,继续以下步骤。

(5)判断候选解对应的各对象的禁忌属性,选择候选解集中非禁忌对象对应的最佳状

态为新的当前解,同时用与之对应的禁忌对象替换最早进入禁忌表的禁忌对象元素。

(6)转步骤(2)。

3、算法特点

新解不是在当前解的邻域中随机产生,而或是优于“best so far”的解,或是非禁

忌的最佳解,因此选取优良解的概率远远大于其他解。由于TS算法具有灵活的记忆功能和

藐视准则,并且在搜索过程中可以接受劣解,所以具有较强的“爬山”能力,搜索时能够

跳出局部最优解,转向解空间的其他区域,从而增强获得更好的全局最优解的概率,所以

TS算法是一种局部搜索能力很强的全局迭代寻优算法。

4、组合策略

(1)邻域移动:是从一个解产生另一个解的途径。它是保证产生好的解和算法搜索速度的

最重要因素之一。通过移动,目标函数值将产生变化,移动前后的目标函数值之差,称之

为移动值。如果移动值是非负的,则称此移动为改进移动;否则称作非改进移动。最好的移

动不一定是改进移动,也可能是非改进移动,这一点就保证搜索陷入局部最优时,禁忌搜

索算法能自动把它跳出局部最优。

(2)禁忌表:不允许恢复即被禁止的性质称作Tabu。禁忌表的主要目的是阻止搜索过程

中出现循环和避免陷入局部最优,它通常记录前若干次的移动,禁止这些移动在近期内返

回。在迭代固定次数后,禁忌表释放这些移动,重新参加运算,因此它是一个循环表,每

迭代一次,将最近的一次移动放在禁忌表的末端,而它的最早的一个移动就从禁忌表中释

放出来。禁忌表记载移动的方式主要有三种:*记录目标值;*移动前的状态;*移禁忌搜索

算法.

(3)选择策略:即择优规则,是对当前的邻域移动选择一个移动而采用的准则。当前采用

最广泛的两类策略是最好解优先策略(Bestlmprovedstrategy)和第一个改进解优先策略

(FirstImProvedstrategy)。最好改进解优先策略就是对当前邻域中选择移动值最好的移动

产生的解,作为下一次迭代的开始。而第一个改进解优先策略是搜索邻域移动时选择第一

改进当前解的邻域移动产生的解作为下一次迭代的开始。

(4)破禁策略:常指渴望水平(Aspiration)函数选择,当一个禁忌移动在随后T次的迭代

内再度出现时,如果它能把搜索带到一个从未搜索过的区域,则应该接受该移动即破禁,

不受禁忌表的限制。

(5)停止规则:一种是把最大迭代数作为停止算法的标准,而不以局优为停止规则;另一

种是在给定数目的迭代内所发现的最好解无法改进或无法离开它时,算法停止。

(6)长期表:短期记忆用来避免最近所作的一些移动被重复,但是在很多的情况下短期记

忆并不足以把算法搜索带到能够改进解的区域。因此在实际应用中常常短期记忆与长期记

忆相结合使用,以保持局部的强化和全局多样化之间的平衡,即在加强与好解有关性质的

同时还能把搜索带到未搜索过的区域。 一种通过惩罚的形式,即用一些评价函数来惩罚在

过去的搜索中用得最多或最少的那些选择,并用一些启发方法来产生新的初始点。另一种

形式采用频率矩阵,使用两种长期记忆,一种是基于最小频率的长期记忆,另一种是基于

最大频率的长期记忆。

遗传算法

遗传算法(Genetic Algorithm,简称GA)是建立在自然选择和群体遗传学基础上,

通过自然选择、杂交和变异实现随机化搜索的方法。

1、基本思想

从任意初始种群出发,通过随机选择(使种群中的优秀个体有更多的机会传给下一代)、

杂交(体现自然界中种群内个体之间的信息交换)和变异(在种群中引入新的变种确保种

群中信息的多样性)等遗传操作,使种群一代一代地进化到搜索空间中越来越好的区域,

直至达到最优解。具体的算法流程如下:

a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初

始群体P(0)。

b)种群P(t)经过选择、交叉、变异运算后得到下一代种群P(t+1)

个体评价:计算群体P(t)中各个个体的适应度。

选择运算:将选择算子作用于群体。

交叉运算;将交叉算子作用于群体,在遗传算法中起核心作用。

变异运算:将变异算子作用于群体。

c)终止条件判断 若t<=T,则t=t+1,转至b);

d):以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。

2、GA算法中的关键问题

1)编码方式:把问题空间中的参数转换成一串空间的由基因按一定结构组成的染色体

或个体的操作,也成为问题的表示。目前的几种常用的编码技术有二进制编码[简单异性、

符合最小字符集编码规则、易于试用漠视定力进行分析],浮点数编码,字符编码,变成编

码等。

评估编码策略常采用以下3个规范:

a)完备性(completeness):问题空间中的所有点(候选解)都能作为GA空间中的点(染

色体)表现。

b)健全性(soundness): GA空间中的染色体能对应所有问题空间中的候选解。

c)非冗余性(nonredundancy):染色体和候选解一一对应。

2)初始种群的产生——随机方法,使初始种群的均匀分布于整个解空间,使GA从

全局范围内搜索最优解。

初始种群设定可采用以下两个策略:

a)根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,

在此分布范围内设定初始群体。

b)先随机生成一定数目的个体,然后从中挑出最好的个体加到初始群体中。这种过程

不断迭代,直到初始群体中个体数达到了预先确定的规模。

3)适应度函数的选取

遗传算法的适应度函数也叫评价函数,是用来判断群体中的个体的优劣程度的指标,

它是根据所求问题的目标函数来进行评估的。适应度函数的设计主要满足以下条件:单值、

连续、非负、最大化;合理、一致性;计算量小;通用性强。

4)GA算子——选择算子、交叉算子和变异算子

在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照

它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的进化过程。个体遗

传算子的操作都是在随机扰动情况下进行的。 遗传操作的效果和上述三个遗传算子所取的

操作概率,编码方法,群体大小,初始群体以及适应度函数的设定密切相关。

a) 选择(Selection)——竞争选择、排序选择和稳态选择

从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算

子(reproduction operator)。选择的目的是把优化的个体(或解)直接遗传到下一代或通过

配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础

上的,目前常用的选择算子有以下几种:适应度比例方法、随机遍历抽样法、局部选择法、

局部选择法。

其中轮盘赌选择法 (roulette wheel selection)是最简单也是最常用的选择方法。

在该方法中,各个个体的选择概率和其适应度值成比例。设群体大小为n,其中个体i的适

应度为fi,则i 被选择的概率Pi,为

显然,概率反映了个体i的适应度在整个群体的个体适应度总和中所占的比例.个体适

应度越大。其被选择的概率就越高、反之亦然。计算出群体中各个个体的选择概率后,为

了选择交配个体,需要进行多轮选择。每一轮产生一个[0,1]之间均匀随机数,将该随机

数作为选择指针来确定被选个体。

b)交叉(Crossover)——多点交叉和均匀交叉

遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的

部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提

高。

交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组

合,期望将有益基因组合在一起。根据编码表示方法的不同,可以有以下的算法:

*实值重组(real valued recombination):离散重组(discrete recombination);

中间重组(intermediate recombination);线性重组(linear recombination);扩展线

性重组(extended linear recombination);

*二进制交叉(binary valued crossover):单点交叉(single-point crossover);多

点交叉(multiple-point crossover);均匀交叉(uniform crossover);洗牌交叉(shuffle

crossover);缩小代理交叉(crossover with reduced surrogate)。

最常用的交叉算子为单点交叉(one-point crossover)。具体操作是:在个体串中随

机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两

个新个体。下面给出了单点交叉的一个例子:

个体A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新个体

个体B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新个体

c)变异(Mutation)——概率变异和预测变异

变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个

体编码表示方法的不同,可以有以下的算法:实值变异;二进制变异。

一般来说,变异算子操作的基本步骤如下:对群中所有个体以事先设定的编译概率判

断是否进行变异;对进行变异的个体随机选择变异位进行变异。

遗传算法导引入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。当遗

传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加

速向最优解收敛。二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。

遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能

力而作为辅助算子。遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备

兼顾全局和局部的均衡搜索能力。所谓相互配合.是指当群体在进化中陷于搜索空间中某个

超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。所谓相互竞争,是指当

通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。

基本变异算子是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座

的基因值做变动(以变异概率P.做变动),基因位下方标有*号的基因发生变异。 变异率的选

取一般受种群大小、染色体长度等因素的影响,通常选取很小的值,一般取0.001-0.1。

5)GA参数值——种群规模、染色体长度、杂交概率和变异概率

3、算法特点 一类可用于复杂系统优化的具有鲁棒性的搜索算法

遗传算法作为一种快捷、简便、容错性强的算法,在各类结构对象的优化过程中显

示出明显的优势。与传统的搜索方法相比,遗传算法具有如下特点:

a)搜索过程不直接作用在变量上,而是在参数集进行了编码的个体。此编码操作,使

得遗传算法可直接对结构对象(集合、序列、矩阵、树、图、链和表)进行操作。

b)搜索过程是从一组解迭代到另一组解,采用同时处理群体中多个个体的方法,降低

了陷入局部最优解的可能性,并易于并行化。

c)采用概率的变迁规则(概率)来指导搜索方向,而不采用确定性搜索规则。

d)对搜索空间没有任何特殊要求(如连通性、凸性等),只利用适应性信息,不需要导

数等其它辅助信息,适应范围更广。

4、遗传算法的应用

1)函数优化——遗传算法的经典应用领域,进行性能评价的常用算例

许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹

函数、低维函数和高维函数、单峰函数和多峰函数等。对于一些非线性、多模型、多目标

的函数优化问题,用其它优化方法较难求解,而遗传算法可以方便的得到较好的结果。

2)组合优化

遗传算法已经在求解旅行商问题、 背包问题、装箱问题、图形划分问题等方面得到

成功的应用。

此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编

码和机器学习等方面获得了广泛的运用。

5、改善算法性能的措施

1)综合优选参数(试探法)

2)采用变参数法(定初值,再改善)

3)选择式单点杂交(高者不变,低者转优)

4)特殊的杂交方法(头尾杂交、头头杂交)

5)终止进化准则(最有个体最少保留代数和最大遗传代数相结合)

6、术语说明

1)染色体(Chronmosome):染色体又可以叫做基因型个体(individuals),对应问题

的一个解的编码;一定数量的个体组成了群体(population),群体中个体的数量叫做群体大

小。

2)基因(Gene):基因是串中的元素,基因用于表示个体的特征。例如有一个串S=

1011,则其中的1,0,1,1这4个元素分别称为基因。它们的值称为等位基因(Alletes)。

3)基因地点(Locus):基因地点在算法中表示一个基因在串中的位置称为基因位置

(Gene Position),有时也简称基因位。基因位置由串的左向右计算,始于1,例如在串 S

=1101 中,0的基因位置是3。

4)基因特征值(Gene Feature):在用串表示整数时,基因的特征值与二进制数的权

一致;例如在串 S=1011 中,基因位置3中的1,它的基因特征值为2;基因位置1中的

1,它的基因特征值为8。

5)适应度(Fitness):各个个体对环境的适应程度叫做适应度(fitness)。为了体现染色

体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数. 这

个函数是计算个体在群体中被使用的概率。

发布评论

评论列表 (0)

  1. 暂无评论