仿生算法小结

仿生算法小结
仿生算法小结

PSO粒子群优化算法

1. 引言

粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究

PSO同遗传算法类似,是一种基于迭代的优化工具。系统初始化为一组随机解,通过迭代搜寻最优值。但是并没有遗传算法用的交叉(crossover)以及变异(mutation)。而是粒子在解空间追随最优的粒子进行搜索。详细的步骤以后的章节介绍

同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域

2. 背景: 人工生命

"人工生命"是来研究具有某些生命基本特征的人工系统. 人工生命包括两方面的内容

1. 研究如何利用计算技术研究生物现象

2. 研究如何利用生物技术研究计算问题

我们现在关注的是第二部分的内容. 现在已经有很多源于生物现象的计算技巧. 例如, 人工神经网络是简化的大脑模型. 遗传算法是模拟基因进化过程的.

现在我们讨论另一种生物系统- 社会系统. 更确切的是, 在由简单个体组成的群落与环境以及个体之间的互动行为. 也可称做"群智能"(swarm intelligence). 这些模拟系统利用局部信息从而可能产生不可预测的群体行为

例如floys 和boids, 他们都用来模拟鱼群和鸟群的运动规律, 主要用于计算机视觉和计算机辅助设计.

在计算智能(computational intelligence)领域有两种基于群智能的算法. 蚁群算法(ant colony optimization)和粒子群算法(particle swarm optimization). 前者是对蚂蚁群落食物采集过程的模拟. 已经成功运用在很多离散优化问题上.

粒子群优化算法(PSO) 也是起源对简单社会系统的模拟. 最初设想是模拟鸟群觅食的过程. 但后来发现PSO是一种很好的优化工具.

3. 算法介绍

如前所述,PSO模拟鸟群的捕食行为。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。

PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的例子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索

PSO 初始化为一群随机粒子(随机解)。然后通过叠代找到最优解。在每一次叠代中,粒子通过跟踪两个"极值"来更新自己。第一个就是粒子本身所找到的最优解。这个解叫做个体极值pBest. 另一个极值是整个种群目前找到的最优解。这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分最为粒子的邻居,那么在所有邻居中的极值就是局部极值。

程序的伪代码如下

For each particle

____Initialize particle

END

Do

____For each particle

________Calculate fitness value

________If the fitness value is better than the best fitness value (pBest) in history

____________set current value as the new pBest

____End

____Choose the particle with the best fitness value of all the particles as the gBest

____For each particle

________Calculate particle velocity according equation (a)

________Update particle position according equation (b)

____End

While maximum iterations or minimum error criteria is not attained

在每一维粒子的速度都会被限制在一个最大速度Vmax,如果某一维更新后的速度超过用户设定的Vmax,那么这一维的速度就被限定为Vmax

4. 遗传算法和PSO 的比较

大多数演化计算技术都是用同样的过程

1. 种群随机初始化

2. 对种群内的每一个个体计算适应值(fitness value).适应值与最优解的距离直接有关

3. 种群根据适应值进行复制

4. 如果终止条件满足的话,就停止,否则转步骤2

从以上步骤,我们可以看到PSO和GA有很多共同之处。两者都随机初始化种群,而且都使用适应值来评价系统,而且都根据适应值来进行一定的随机搜索。两个系统都不是保证一定找到最优解

但是,PSO 没有遗传操作如交叉(crossover)和变异(mutation). 而是根据自己的速度来决定搜索。粒子还有一个重要的特点,就是有记忆。

与遗传算法比较, PSO 的信息共享机制是很不同的. 在遗传算法中,染色体(chromosomes) 互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动. 在PSO中, 只有gBest (or lBest) 给出信息给其他的粒子,这是单向的信息流动. 整个搜索更新过程是跟随当前最优解的过程. 与遗传算法比较, 在大多数的情况下,所有的粒子可能更快的收敛于最优解

5. 人工神经网络和PSO

人工神经网络(ANN)是模拟大脑分析过程的简单数学模型,反向转播算法是最流行的神经网络训练算法。进来也有很多研究开始利用演化计算(evolutionary computation)技术来研究人工神经网络的各个方面。

演化计算可以用来研究神经网络的三个方面:网络连接权重,网络结构(网络拓扑结构,传递函数),网络学习算法。

不过大多数这方面的工作都集中在网络连接权重,和网络拓扑结构上。在GA中,网络权重和/或拓扑结构一般编码为染色体(Chromosome),适应函数(fitness function)的选择一般根据研究目的确定。例如在分类问题中,错误分类的比率可以用来作为适应值

演化计算的优势在于可以处理一些传统方法不能处理的例子例如不可导的节点传递函数或者没有梯度信息存在。但是缺点在于:在某些问题上性能并不是特别好。2. 网络权重的编码而且遗传算子的选择有时比较麻烦

最近已经有一些利用PSO来代替反向传播算法来训练神经网络的论文。研究表明PSO 是一种很有潜力的神经网络算法。PSO速度比较快而且可以得到比较好的结果。而且还没有遗传算法碰到的问题

这里用一个简单的例子说明PSO训练神经网络的过程。这个例子使用分类问题的基准函数(Benchmark function)IRIS数据集。(Iris 是一种鸢尾属植物) 在数据记录中,每组数据包含Iris 花的四种属性:萼片长度,萼片宽度,花瓣长度,和花瓣宽度,三种不同的花各有50组数据. 这样总共有150组数据或模式。

我们用3层的神经网络来做分类。现在有四个输入和三个输出。所以神经网络的输入层有4个节点,输出层有3个节点我们也可以动态调节隐含层节点的数目,不过这里我们假定隐含层有6个节点。我们也可以训练神经网络中其他的参数。不过这里我们只是来确定网络权重。粒子就表示神经网络的一组权重,应该是4*6+6*3=42个参数。权重的范围设定为[-100,100] (这只是一个例子,在实际情况中可能需要试验调整).在完成编码以后,我们需要确定适应函数。对于分类问题,我们把所有的数据送入神经网络,网络的权重有粒子的参数决定。然后记录所有的错误分类的数目作为那个粒子的适应值。现在我们就利用PSO来训练神经网络来获得尽可能低的错误分类数目。PSO本身并没有很多的参数需要调整。所以在实验中只需要调整隐含层的节点数目和权重的范围以取得较好的分类效果。

6. PSO的参数设置

从上面的例子我们可以看到应用PSO解决优化问题的过程中有两个重要的步骤: 问题解的编码和适应度函数

PSO的一个优势就是采用实数编码, 不需要像遗传算法一样是二进制编码(或者采用针对实数的遗传操作.例如对于问题f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接编码为(x1, x2, x3), 而适应度函数就是f(x). 接着我们就可以利用前面的过程去寻优.这个寻优过程是一个叠代过程, 中止条件一般为设置为达到最大循环数或者最小错误

PSO中并没有许多需要调节的参数,下面列出了这些参数以及经验设置

粒子数: 一般取20 –40. 其实对于大部分的问题10个粒子已经足够可以取得好的结果, 不过对于比较难的问题或者特定类别的问题, 粒子数可以取到100 或200

粒子的长度: 这是由优化问题决定, 就是问题解的长度

粒子的范围: 由优化问题决定,每一维可是设定不同的范围

Vmax: 最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如上面的例子里,粒子(x1, x2, x3) x1 属于[-10, 10], 那么Vmax 的大小就是20

学习因子: c1 和c2 通常等于2. 不过在文献中也有其他的取值. 但是一般c1 等于c2 并且范围在0和4之间

中止条件: 最大循环数以及最小错误要求. 例如, 在上面的神经网络训练例子中, 最小错误可以设定为1个错误分类, 最大循环设定为2000, 这个中止条件由具体的问题确定.

全局PSO和局部PSO: 我们介绍了两种版本的粒子群优化算法: 全局版和局部版. 前者速度快不过有时会陷入局部最优. 后者收敛速度慢一点不过很难陷入局部最优. 在实际应用中, 可以先用全局PSO找到大致的结果,再有局部PSO进行搜索.

另外的一个参数是惯性权重, 由Shi 和Eberhart提出, 有兴趣的可以参考他们1998年的论文(题目: A modified particle swarm optimizer)

蚁群算法

简介:蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型技术。它由Marco Dorigo于1992年在他的博士论文中引入,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。

事实上,每只蚂蚁并不是像我们想象的需要知道整个世界的信息,他们其实只关心很小范围内的眼前信息,而且根据这些局部信息利用几条简单的规则进行决策,这样,在蚁群这个集体里,复杂性的行为就会凸现出来。这就是人工生命、复杂性科学解释的规律!那么,这些简单规则是什么呢?下面详细说明:

1、范围:

蚂蚁观察到的范围是一个方格世界,蚂蚁有一个参数为速度半径(一般是3),那么它能观察到的范围就是3*3个方格世界,并且能移动的距离也在这个范围之内。

2、环境:

蚂蚁所在的环境是一个虚拟的世界,其中有障碍物,有别的蚂蚁,还有信息素,信息素有两种,一种是找到食物的蚂蚁洒下的食物信息素,一种是找到窝的蚂蚁洒下的窝的信息素。每个蚂蚁都仅仅能感知它范围内的环境信息。环境以一定的速率让信息素消失。

3、觅食规则:

在每只蚂蚁能感知的范围内寻找是否有食物,如果有就直接过去。否则看是否有信息素,并且比较在能感知的范围内哪一点的信息素最多,这样,它就朝信息素多的地方走,并且每只蚂蚁多会以小概率犯错误,从而并不是往信息素最多的点移动。蚂蚁找窝的规则和上面一样,只不过它对窝的信息素做出反应,而对食物信息素没反应。

4、移动规则:

每只蚂蚁都朝向信息素最多的方向移,并且,当周围没有信息素指引的时候,蚂蚁会按照自己原来运动的方向惯性的运动下去,并且,在运动的方向有一个随机的小的扰动。为了防止蚂蚁原地转圈,它会记住最近刚走过了哪些点,如果发现要走的下一点已经在最近走过了,它就会尽量避开。

5、避障规则:

如果蚂蚁要移动的方向有障碍物挡住,它会随机的选择另一个方向,并且有信息素指引的话,它会按照觅食的规则行为。

7、播撒信息素规则:

每只蚂蚁在刚找到食物或者窝的时候撒发的信息素最多,并随着它走远的距离,播撒的信息素越来越少。

根据这几条规则,蚂蚁之间并没有直接的关系,但是每只蚂蚁都和环境发生交互,而通过信息素这个纽带,实际上把各个蚂蚁之间关联起来了。比如,当一只蚂蚁找到了食物,它并没有直接告诉其它蚂蚁这儿有食物,而是向环境播撒信息素,当其它的蚂蚁经过它附近的时候,就会感觉到信息素的存在,进而根据信息素的指引找到了食物。

引申:

跟着蚂蚁的踪迹,你找到了什么?通过上面的原理叙述和实际操作,我们不难发现蚂蚁之所以具有智能行为,完全归功于它的简单行为规则,而这些规则综合起来具有下面两个方面的特点:

1、多样性

2、正反馈

多样性保证了蚂蚁在觅食的时候不置走进死胡同而无限循环,正反馈机制则保证了相对优良的信息能够被保存下来。我们可以把多样性看成是一种创造能力,而正反馈是一种学习强化能力。正反馈的力量也可以比喻成权威的意见,而多样性是打破权威体现的创造性,正是这两点小心翼翼的巧妙结合才使得智能行为涌现出来了。

引申来讲,大自然的进化,社会的进步、人类的创新实际上都离不开这两样东西,多样性保证了系统的创新能力,正反馈保证了优良特性能够得到强化,两者要恰到好处的结合。如果多样性过剩,也就是系统过于活跃,这相当于蚂蚁会过多的随机运动,它就会陷入混沌状态;而相反,多样性不够,正反馈机制过强,那么系统就好比一潭死水。这在蚁群中来讲就表现

为,蚂蚁的行为过于僵硬,当环境变化了,蚂蚁群仍然不能适当的调整。

既然复杂性、智能行为是根据底层规则涌现的,既然底层规则具有多样性和正反馈特点,那么也许你会问这些规则是哪里来的?多样性和正反馈又是哪里来的?我本人的意见:规则来源于大自然的进化。而大自然的进化根据刚才讲的也体现为多样性和正反馈的巧妙结合。而这样的巧妙结合又是为什么呢?为什么在你眼前呈现的世界是如此栩栩如生呢?答案在于环境造就了这一切,之所以你看到栩栩如生的世界,是因为那些不能够适应环境的多样性与正反馈的结合都已经死掉了,被环境淘汰了!

参数说明:

最大信息素:蚂蚁在一开始拥有的信息素总量,越大表示程序在较长一段时间能够存在信息素。信息素消减的速度:随着时间的流逝,已经存在于世界上的信息素会消减,这个数值越大,那么消减的越快。

错误概率表示这个蚂蚁不往信息素最大的区域走的概率,越大则表示这个蚂蚁越有创新性。速度半径表示蚂蚁一次能走的最大长度,也表示这个蚂蚁的感知范围。

记忆能力表示蚂蚁能记住多少个刚刚走过点的坐标,这个值避免了蚂蚁在本地打转,停滞不前。而这个值越大那么整个系统运行速度就慢,越小则蚂蚁越容易原地转圈。

鱼群优化算法

在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方,人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的觅食!聚群及追尾行为,从而实现寻优,以下是鱼的几种典型行为:

(1)觅食行为:一般情况下鱼在水中随机地自由游动,当发现食物时,则会向食物逐渐增多的方向快速游去。

(2)聚群行为:鱼在游动过程中为了保证自身的生存和躲避危害会自然地聚集成群,鱼聚群时所遵守的规则有三条:分隔规则:尽量避免与临近伙伴过于拥挤;对准规则:尽量与临近伙伴的平均方向一致;内聚规则:尽量朝临近伙伴的中心移动。

(3)追尾行为:当鱼群中的一条或几条鱼发现食物时,其临近的伙伴会尾随其快速到达食物点。

特点:

1)具有较快的收敛速度,可以用于解决有实时性要求的问题;

2)对于一些精度要求不高的场合,可以用它快速的得到一个可行解;

3)不需要问题的严格机理模型,甚至不需要问题的精确描述,这使得它的应用范围得以延伸.

停止条件

1) 判断连续多次所得的均方差小于语允许的误差

2)判断某个区域的人工鱼群的数目达到某个比率

3)联系多次所获取的值均不能超过已寻找的极值。

具体见原浙大博士李晓磊的博士论文-人工鱼群算法。

另外在nature上面2007年1一月有一篇关于人工鱼行为的文章。(这两部分的资料在附件里面)

智能算法综述

1 什么是智能算法

智能计算也有人称之为“软计算”,是们受自然(生物界)规律的启迪,根据其原理,模仿求解问题的算法。从自然界得到启迪,模仿其结构进行发明创造,这就是仿生学。这是我们向自然界学习的一个方面。另一方面,我们还可以利用仿生原理进行设计(包括设计算法),这就是智能计算的思想。这方面的内容很多,如人工神经网络技术、遗传算法、模拟退火算法、模拟退火技术和群集智能技术等。

2 人工神经网络算法

“人工神经网络”(ARTIFICIAL NEURALNETWORK,简称ANN)是在对人脑组织结构和运行机制的认识理解基础之上模拟其结构和智能行为的一种工程系统。早在本世纪40年代初期,心理学家McCulloch、数学家Pitts就提出了人工神经网络的第一个数学模型,从此开创了神经科学理论的研究时代。其后,FRosenblatt、Widrow和J. J .Hopfield等学者又先后提出了感知模型,使得人工神经网络技术得以蓬勃发展。

神经系统的基本构造是神经元(神经细胞),它是处理人体内各部分之间相互信息传递的基本单元。据神经生物学家研究的结果表明,人的一个大脑一般有1010~1011个神经元。每个神经元都由一个细胞体,一个连接其他神经元的轴突和一些向外伸出的其它较短分支——树突组成。轴突的功能是将本神经元的输出信号(兴奋)传递给别的神经元。其末端的许多神经末梢使得兴奋可以同时传送给多个神经元。树突的功能是接受来自其它神经元的兴奋。神经元细胞体将接受到的所有信号进行简单处理(如:加权求和,即对所有的输入信号都加以考虑且对每个信号的重视程度——体现在权值上——有所不同)后由轴突输出。神经元的树突与另外的神经元的神经末梢相连的部分称为突触。

2.1 人工神经网络的特点

人工神经网络是由大量的神经元广泛互连而成的系统,它的这一结构特点决定着人工神经网络具有高速信息处理的能力。人脑的每个神经元大约有103~104个树突及相应的突触,一个人的大脑总计约形成1014~1015个突触。用神经网络的术语来说,即是人脑具有1014~1015个互相连接的存储潜力。虽然每个神经元的运算功能十分简单,且信号传输速率也较低(大约100次/秒),但由于各神经元之间的极度并行互连功能,最终使得一个普通人的大脑在约1秒内就能完成现行计算机至少需要数10亿次处理步骤才能完成的任务。

人工神经网络的知识存储容量很大。在神经网络中,知识与信息的存储表现为神经元之间分布式的物理联系。它分散地表示和存储于整个网络内的各神经元及其连线上。每个神经元及其连线只表示一部分信息,而不是一个完整具体概念。只有通过各神经元的分布式综合效果才能表达出特定的概念和知识。

由于人工神经网络中神经元个数众多以及整个网络存储信息容量的巨大,使得它具有很强的不确定性信息处理能力。即使输入信息不完全、不准确或模糊不清,神经网络仍然能够联想思维存在于记忆中的事物的完整图象。只要输入的模式接近于训练样本,系统就能给出正确的推理结论。

正是因为人工神经网络的结构特点和其信息存储的分布式特点,使得它相对于其它的判断识别系统,如:专家系统等,具有另一个显著的优点:健壮性。生物神经网络不会因为个别神经元的损失而失去对原有模式的记忆。最有力的证明是,当一个人的大脑因意外事故受轻微损伤之后,并不会失去原有事物的全部记忆。人工神经网络也有类似的情况。因某些原因,无论是网络的硬件实现还是软件实现中的某个或某些神经元失效,整个网络仍然能继续工作。

人工神经网络是一种非线性的处理单元。只有当神经元对所有的输入信号的综合处理结果超过某一门限值后才输出一个信号。因此神经网络是一种具有高度非线性的超大规模连续时间动力学系统。它突破了传统的以线性处理为基础的数字电子计算机的局限,标志着人们智能信息处理能力和模拟人脑智能行为能力的一大飞跃。

2.2 几种典型神经网络简介

2.2.1 多层感知网络(误差逆传播神经网络)

在1986年以Rumelhart和McCelland为首的科学家出版的《ParallelDistributed Processing》一书中,完整地提出了误差逆传播学习算法,并被广泛接受。多层感知网络是一种具有三层或三层以上的阶层型神经网络。典型的多层感知网络是三层、前馈的阶层网络,即:输入层I、隐含层(也称中间层)J和输出层K。相邻层之间的各神经元实现全连接,即下一层的每一个神经元与上一层的每个神经元都实现全连接,而且每层各神经元之间无连接。

但BP网并不是十分的完善,它存在以下一些主要缺陷:学习收敛速度太慢、网络的学习记忆具有不稳定性,即:当给一个训练好的网提供新的学习记忆模式时,将使已有的连接权值被打乱,导致已记忆的学习模式的信息的消失。

2.2.2 竞争型(KOHONEN)神经网络

它是基于人的视网膜及大脑皮层对剌激的反应而引出的。神经生物学的研究结果表明:生物视网膜中,有许多特定的细胞,对特定的图形(输入模式)比较敏感,并使得大脑皮层中的特定细胞产生大的兴奋,而其相邻的神经细胞的兴奋程度被抑制。对于某一个输入模式,通过竞争在输出层中只激活一个相应的输出神经元。许多输入模式,在输出层中将激活许多个神经元,从而形成一个反映输入数据的“特征图形”。竞争型神经网络是一种以无教师方式进行网络训练的网络。它通过自身训练,自动对输入模式进行分类。竞争型神经网络及其学习规则与其它类型的神经网络和学习规则相比,有其自己的鲜明特点。在网络结构上,它既不象阶层型神经网络那样各层神经元之间只有单向连接,也不象全连接型网络那样在网络结构上没有明显的层次界限。它一般是由输入层(模拟视网膜神经元)和竞争层(模拟大脑皮层神经元,也叫输出层)构成的两层网络。两层之间的各神经元实现双向全连接,而且网络中没有隐含层。有时竞争层各神经元之间还存在横向连接。竞争型神经网络的基本思想是网络竞争层各神经元竞争对输入模式的响应机会,最后仅有一个神经元成为竞争的胜者,并且只将与获胜神经元有关的各连接权值进行修正,使之朝着更有利于它竞争的方向调整。神经网络工作时,对于某一输入模式,网络中与该模式最相近的学习输入模式相对应的竞争层神经元将有最大的输出值,即以竞争层获胜神经元来表示分类结果。这是通过竞争得以实现的,实际上也就是网络回忆联想的过程。

除了竞争的方法外,还有通过抑制手段获取胜利的方法,即网络竞争层各神经元抑制所有其它神经元对输入模式的响应机会,从而使自己“脱颖而出”,成为获胜神经元。除此之外还有一种称为侧抑制的方法,即每个神经元只抑制与自己邻近的神经元,而对远离自己的神经元不抑制。这种方法常常用于图象边缘处理,解决图象边缘的缺陷问题。

竞争型神经网络的缺点和不足:因为它仅以输出层中的单个神经元代表某一类模式。所以一旦输出层中的某个输出神经元损坏,则导致该神经元所代表的该模式信息全部丢失。

2.2.3 Hopfield神经网络

1986年美国物理学家J.J.Hopfield陆续发表几篇论文,提出了Hopfield神经网络。他利用非线性动力学系统理论中的能量函数方法研究反馈人工神经网络的稳定性,并利用此方法建立求解优化计算问题的系统方程式。基本的Hopfield神经网络是一个由非线性元件构成的全连接型单层反馈系统。

网络中的每一个神经元都将自己的输出通过连接权传送给所有其它神经元,同时又都接收所有其它神经元传递过来的信息。即:网络中的神经元t时刻的输出状态实际上间接地与自己的t-1时刻的输出状态有关。所以Hopfield神经网络是一个反馈型的网络。其状态变化可以用差分方程来表征。反馈型网络的一个重要特点就是它具有稳定状态。当网络达到稳定状态的时候,也就是它的能量函数达到最小的时候。这里的能量函数不是物理意义上的能量函数,而是在表达形式上与物理意义上的能量概念一致,表征网络状态的变化趋势,并可以依据Hopfield工作运行规则不断进行状态变化,最终能够达到的某个极小值的目标函数。网络收敛就是指能量函数达到极小值。如果把一个最优化问题的目标函数转换成网络的能量函数,把问题的变量对应于网络的状态,那么Hopfield神经网络就能够用于解决优化组合问题。

对于同样结构的网络,当网络参数(指连接权值和阀值)有所变化时,网络能量函数的极小点(称为网络的稳定平衡点)的个数和极小值的大小也将变化。因此,可以把所需记忆的模式设计成某个确定网络状态的一个稳定平衡点。若网络有M个平衡点,则可以记忆M个记忆模式。

当网络从与记忆模式较靠近的某个初始状态(相当于发生了某些变形或含有某些噪声的记忆模式,也即:只提供了某个模式的部分信息)出发后,网络按Hopfield工作运行规则进行状态更新,最后网络的状态将稳定在能量函数的极小点。这样就完成了由部分信息的联想过程。

Hopfield神经网络的能量函数是朝着梯度减小的方向变化,但它仍然存在一个问题,那就是一旦能量函数陷入到局部极小值,它将不能自动跳出局部极小点,到达全局最小点,因而无法求得网络最优解。

3 遗传算法

遗传算法(Genetic Algorithms)是基于生物进化理论的原理发展起来的一种广为应用的、高效的随机搜索与优化的方法。其主要特点是群体搜索策略和群体中个体之间的信息交换,搜索不依赖于梯度信息。它是在70年代初期由美国密执根(Michigan)大学的霍兰(Holland)教授发展起来的。1975年霍兰教授发表了第一本比较系统论述遗传算法的专著《自然系统

与人工系统中的适应性》(《Adaptationin Natural and Artificial Systems》)。遗传算法最初被研究的出发点不是为专门解决最优化问题而设计的,它与进化策略、进化规划共同构成了进化算法的主要框架,都是为当时人工智能的发展服务的。迄今为止,遗传算法是进化算法中最广为人知的算法。

近几年来,遗传算法主要在复杂优化问题求解和工业工程领域应用方面,取得了一些令人信服的结果,所以引起了很多人的关注。在发展过程中,进化策略、进化规划和遗传算法之间差异越来越小。遗传算法成功的应用包括:作业调度与排序、可靠性设计、车辆路径选择与调度、成组技术、设备布置与分配、交通问题等等。

3.1 特点

遗传算法是解决搜索问题的一种通用算法,对于各种通用问题都可以使用。搜索算法的共同特征为:①首先组成一组候选解;②依据某些适应性条件测算这些候选解的适应度;③根据适应度保留某些候选解,放弃其他候选解;④对保留的候选解进行某些操作,生成新的候选解。在遗传算法中,上述几个特征以一种特殊的方式组合在一起:基于染色体群的并行搜索,带有猜测性质的选择操作、交换操作和突变操作。这种特殊的组合方式将遗传算法与其它搜索算法区别开来。

遗传算法还具有以下几方面的特点:

(1)遗传算法从问题解的串集开始嫂索,而不是从单个解开始。这是遗传算法与传统优化算法的极大区别。传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。遗传算法从串集开始搜索,覆盖面大,利于全局择优。

(2)许多传统搜索算法都是单点搜索算法,容易陷入局部的最优解。遗传算法同时处理群体中的多个个体,即对搜索空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本身易于实现并行化。

(3)遗传算法基本上不用搜索空间的知识或其它辅助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操作。适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。这一特点使得遗传算法的应用范围大大扩展。

(4)遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导他的搜索方向。

(5)具有自组织、自适应和自学习性。遗传算法利用进化过程获得的信息自行组织搜索时,硬度大的个体具有较高的生存概率,并获得更适应环境的基因结构。

3.2 运用领域

前面描述是简单的遗传算法模型,可以在这一基本型上加以改进,使其在科学和工程领域得到广泛应用。下面列举了一些遗传算法的应用领域:①优化:遗传算法可用于各种优化问题。既包括数量优化问题,也包括组合优化问题。②程序设计:遗传算法可以用于某些特殊任务的计算机程序设计。③机器学习:遗传算法可用于许多机器学习的应用,包括分类

问题和预测问题等。④经济学:应用遗传算法对经济创新的过程建立模型,可以研究投标的策略,还可以建立市场竞争的模型。⑤免疫系统:应用遗传算法可以对自然界中免疫系统的多个方面建立模型,研究个体的生命过程中的突变现象以及发掘进化过程中的基因资源。

⑥进化现象和学习现象:遗传算法可以用来研究个体是如何学习生存技巧的,一个物种的进化对其他物种会产生何种影响等等。⑦社会经济问题:遗传算法可以用来研究社会系统中的各种演化现象,例如在一个多主体系统中,协作与交流是如何演化出来的。

4 模拟退火算法

模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。用固体退火模拟组合优化问题,将内能E模拟为目标函数值f ,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。退火过程由冷却进度表(CoolingSchedule)控制,包括控制参数的初值t及其衰减因子Δt、每个t值时的迭代次数L和停止条件S。

5 群体(群集)智能(Swarm Intelligence)

受社会性昆虫行为的启发,计算机工作者通过对社会性昆虫的模拟产生了一系列对于传统问题的新的解决方法,这些研究就是群集智能的研究。群集智能(Swarm Intelligence)中的群体(Swarm)指的是“一组相互之间可以进行直接通信或者间接通信(通过改变局部环境)的主体,这组主体能够合作进行分布问题求解”。而所谓群集智能指的是“无智能的主体通过合作表现出智能行为的特性”。群集智能在没有集中控制并且不提供全局模型的前提下,为寻找复杂的分布式问题的解决方案提供了基础。

群集智能的特点和优点:群体中相互合作的个体是分布式的(Distributed),这样更能够适应当前网络环境下的工作状态; 没有中心的控制与数据,这样的系统更具有鲁棒性(Robust),不会由于某一个或者某几个个体的故障而影响整个问题的求解。可以不通过个体之间直接通信而是通过非直接通信(Stimergy)进行合作,这样的系统具有更好的可扩充性(Scalability)。由于系统中个体的增加而增加的系统的通信开销在这里十分小。系统中每个个体的能力十分简单,这样每个个体的执行时间比较短,并且实现也比较简单,具有简单性(Simplicity)。因为具有这些优点,虽说群集智能的研究还处于初级阶段,并且存在许多困难,但是可以预言群集智能的研究代表了以后计算机研究发展的一个重要方向。

在计算智能(ComputationalIntelligence)领域有两种基于群智能的算法,蚁群算法(Ant Colony Optimization)和粒子群算法(ParticleSwarm Optimization),前者是对蚂蚁群落食物采集过程的模拟,已经成功运用在很多离散优化问题上。

5.1 蚁群优化算法

受蚂蚁觅食时的通信机制的启发,90年代Dorigo提出了蚁群优化算法(Ant ColonyOptimization,ACO)来解决计算机算法学中经典的“货郎担问题”。如果有n个城市,需要对所有n个城市进行访问且只访问一次的最短距离。

在解决货郎担问题时,蚁群优化算法设计虚拟的“蚂蚁”将摸索不同路线,并留下会随时间逐渐消失的虚拟“信息素”。虚拟的“信息素”也会挥发,每只蚂蚁每次随机选择要走的路径,它们倾向于选择路径比较短的、信息素比较浓的路径。根据“信息素较浓的路线更近"的原则,即可选择出最佳路线。由于这个算法利用了正反馈机制,使得较短的路径能够有较大的机会得到选择,并且由于采用了概率算法,所以它能够不局限于局部最优解。

蚁群优化算法对于解决货郎担问题并不是目前最好的方法,但首先,它提出了一种解决货郎担问题的新思路;其次由于这种算法特有的解决方法,它已经被成功用于解决其他组合优化问题,例如图的着色(GraphColoring)以及最短超串(Shortest Common Supersequence)等问题。

5.2 粒子群优化算法

粒子群优化算法(PSO)是一种进化计算技术(EvolutionaryComputation),有Eberhart博士和Kennedy博士发明。源于对鸟群捕食的行为研究。

PSO同遗传算法类似,是一种基于叠代的优化工具。系统初始化为一组随机解,通过叠代搜寻最优值。但是并没有遗传算法用的交叉(crossover)以及变异(mutation)。而是粒子在解空间追随最优的粒子进行搜索。

同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域。

粒子群优化算法(PSO) 也是起源对简单社会系统的模拟,最初设想是模拟鸟群觅食的过程,但后来发现PSO是一种很好的优化工具。

与遗传算法比较,PSO的信息共享机制是很不同的。在遗传算法中,染色体(chromosomes)互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动。在PSO中, 只有gBest (orlBest) 给出信息给其他的粒子,这是单向的信息流动。整个搜索更新过程是跟随当前最优解的过程。与遗传算法比较, 在大多数的情况下,所有的粒子可能更快的收敛于最优解。

现在已经有一些利用PSO代替反向传播算法来训练神经网络的论文。研究表明PSO 是一种很有潜力的神经网络算法,同时PSO速度比较快而且可以得到比较好的结果。

禁忌搜索算法(Tabu Search,TS)

为了找到“全局最优解”,就不应该执着于某一个特定的区域。局部搜索的缺点就是太贪婪地对某一个局部区域以及其邻域搜索,导致一叶障目,不见泰山。禁忌搜索就是对于找到的一部分局部最优解,有意识地避开它(但不是完全隔绝),从而获得更多的搜索区间。兔子们找到了泰山,它们之中的一只就会留守在这里,其他的再去别的地方寻找。就这样,一大圈后,把找到的几个山峰一比较,珠穆朗玛峰脱颖而出。

当兔子们再寻找的时候,一般地会有意识地避开泰山,因为他们知道,这里已经找过,并且有一只兔子在那里看着了。这就是禁忌搜索中“禁忌表(tabu list)”的含义。那只留在泰山的兔子一般不会就安家在那里了,它会在一定时间后重新回到找最高峰的大军,因为这个时候已经有了许多新的消息,泰山毕竟也有一个不错的高度,需要重新考虑,这个归队时间,在禁忌搜索里面叫做“禁忌长度(tabu length)”;如果在搜索的过程中,留守泰山的兔子还没有归队,但是找到的地方全是华北平原等比较低的地方,兔子们就不得不再次考虑选中泰山,也就是说,当一个有兔子留守的地方优越性太突出,超过了“best to far”的状态,就可以不顾及有没有兔子留守,都把这个地方考虑进来,这就叫“特赦准则(aspiration criterion)”。这三个概念是禁忌搜索和一般搜索准则最不同的地方,算法的优化也关键在这里。

伪码表达:

procedure tabu search;

begin

initialize a string vc at random,clear up the tabu list;

cur:=vc;

repeat

select a new string vn in the neighborhood of vc;

if va>best_to_far then {va is a string in the tabu list}

begin

cur:=va;

let va take place of the oldest string in the tabu list;

best_to_far:=va;

end else

begin

cur:=vn;

let vn take place of the oldest string in the tabu list;

end;

until (termination-condition);

end;

以上程序中有关键的几点:

(1)禁忌对象:可以选取当前的值(cur)作为禁忌对象放进tabu list,也可以把和当然值在同一“等高线”上的都放进tabu list。

(2)为了降低计算量,禁忌长度和禁忌表的集合不宜太大,但是禁忌长度太小容易循环搜索,禁忌表太小容易陷入“局部极优解”。

(3)上述程序段中对best_to_far的操作是直接赋值为最优的“解禁候选解”,但是有时候会出现没有大于best_to_far的,候选解也全部被禁的“死锁”状态,这个时候,就应该对候选解中最佳的进行解禁,以能够继续下去。

(4)终止准则:和模拟退火,遗传算法差不多,常用的有:给定一个迭代步数;设定与估计的最优解的距离小于某个范围时,就终止搜索;当与最优解的距离连续若干步保持不

变时,终止搜索;

禁忌搜索是对人类思维过程本身的一种模拟,它通过对一些局部最优解的禁忌(也可以说是记忆)达到接纳一部分较差解,从而跳出局部搜索的目的。

几种新型仿生优化算法的比较研究

第24卷第3期计算机仿真2007年3月文章编号:1006—9348(2007)03-0169-04 几种新型仿生优化算法的比较研究 段海滨1,王道波2,于秀芬3 (1.北京航空航天大学自动化科学与电气工程学院;北京100083;2.南京航空航天大学自动化学院,江苏南京210016; 3.中国科学院空间科学与应用研究中心,北京100080) 摘要:仿生优化算法是模拟自然界中生物行为的随机搜索算法,可以用来解决现实中的许多优化问题。简要介绍了目前比较流行的四种新型仿生优化算法(蚁群算法、微粒群算法、人工免疫算法以及人工鱼群算法)的基本原理;然后深入分析了这些仿生优化算法的异同之处:这些算法都是一类不确定的算法,都是一类概率型的全局优化算法,都不依赖于优化问题本身的严格数学性质,都是一种基于多个智能体的智能算法,都具有本质并行性、突现性、进化性和稳健性,其不同性则主要体现在算法本身上;最后对这些仿生优化算法今后的发展方向进行了评述与展望。 关键词:蚁群算法;微粒群算法;人工免疫算法;人工鱼群算法;比较 中图分类号:TPl3;N945文献标识码:A ResearchonSomeNovelBionicOptimizationAlgorithms DUANHai—binl.WANGDao—b02.YUXiu—fen3 (1.SchoolofAutomationScienceandElectricalEngineering,BeijingUniversityofAeronauticsandAstronautics, Beijing100083,China; 2.CollegeofAutomationEngineering,NanjingUniversityofAeronauticsandAstronautics,NanjingJiangsu210016。China; 3.CenterforSpaceScienceandAppliedResearch,ChineseAcademyofSciences,Bering100080,China)ABSTRACT:Bionicoptimizationalgorithmsarestochasticsearchmethodsthatmimicthenaturalbiologicalbehaviorofspecies.Theyaremainlyappliedtosolvevariousoptimizationproblems.Thispaperproposestheformulationoffourrecentbiology—basedalgorithms:antcolonyalgorithm,particleswarmoptimizationalgorithm,artificialimmunealgorithm,andartificialfish—swflrnlalgorithm.Abriefdescriptionofeachalgorithmispresentedfirstly.Then,ade-tailedcomparisonandanalysisofthesebionicoptimizationalgorithmsareconducted.Thesebionicoptimizationalgo—rithmsareakindofuncertainalgorithmwithgreatprobability,and?independentfromthemathematicalcharactersofdifferentproblems.Thesealgorithmsalsohaveparallelismandrobustness.Thedifferentpointsareembeddedinthealgorithms.Finally,someremarksonthefurtherresearchcontentsanddirectionsarediscussed. KEYWORDS:Antcolonyalgorithm;Particleswarmoptimizationalgorithm;Artificialimmunealgorithm;Artificialfish—swarmalgorithm;Comparison l引言 自从20世纪40年代以来,人们一直在利用来自于生物系统的灵感来解决许多实际问题,并构造和设计出许多仿生优化算法,它们都是模拟自然界生物系统、完全依赖生物体自身的本能、通过无意识的寻优行为来优化其生存状态以适应环境的一类新型的最优化算法。目前比较流行的新型仿生优化算法有蚁群算法、微粒群算法、人工免疫算法、人工鱼群算法等,这些仿生优化算法已为解决实际应用中的许多优化问题做出了很大的贡献,也是当今仿生智能领域的研究热 基金项目:国家自然科学基金资助项目(60604009) 收稿日期:2005—11—25修回日期:2006—09~26点。 蚁群算法(Antcolonyalgorithm,ACA)意大利学者DorigoM等…通过模拟自然界中蚂蚁集体寻径的行为而提出的,最早成功应用于解决N—P难题中著名的旅行商问题(Trave.1ingSalesmanProblem,TSP)。近几年来已经拓展到离散域和连续域优化问题的各个学科心’…。 微粒群(ParticlesWalTOoptimization,PSO)算法最早是美国的KennedyJ和EberhartRC受鸟群觅食行为的启发,于1995年提出了微粒群算法H’“。最初的设想是仿真简单的社会系统,研究并解释复杂的社会行为,后来把微粒群算法推广到复杂优化问题的求解。 人工免疫算法(Artificialimmunealgorithm,AIA)是基于 一169—  万方数据万方数据

博弈树置换表启发式算法研究

422010.46(6)ComputerEngineeringandApplications计算机工程与应用 博弈树置换表启发式算法研究 焦尚彬,刘丁 JIAOShang-bin,LIUDing 西安理工大学信息与控制工程研究中心,西安710048 Xi’anUniversityofTechnology,Xi’an710048,China E-mail:jiaoshangbin@xaut.edu.ca JIAOShang-bin。LIUDing.Researchontranslationtableheuristicalgorithm.ComputerEngineeringandApplications,2010.46(6):42-45. Abstract:Searchingisessentialforcomputer-gameofboardgames.Andexcellentsearchalgorithmmayobtaintheoptimalpath bysearchingfewnodes,andimprovethecompetitivelevelofcomputergame.ThispapersetsChinesechesscomputergameasbackground,andonthebasisofalpha-betaalgorithm,itmakesadetaileddescriptionabouttheprincipleoftranslationtableheuristicalgorithmandhashcollision,andthereplacementschemesoftwo-leveltranspositiontableisproposed,enhancingtheef-ficieneyofsearingengine.Atlast,theexperimentresultsverifytheeffectivenessofthemethods. Keywords:computergame;searchingtree;translationtableheuristic;ak'ha-betaalgorithm 摘要:博弈树搜索对于计算机博弈至关重要。优秀的搜索算法通过搜索较少的节点就可以获得最佳路径,从而提高计算机的博弈水平。论文以中国象棋计算机博弈作为背景,在alpha-beta基本搜索算法上,详细阐述了置换表启发算法的原理和哈希冲突,引进了双层置换表的概念及其替换策略,增强了引擎的搜索效率。实验结果表明了该算法的有效性。 关键词:计算机博弈;博弈树;置换表岩[;alpha—beta算法 DOI:10.37780.issn.1002—8331.2010.06.012文章编譬:1002—8331(2010)06-0042--04文献标识码:A中图分类号:,IPl8 1引言 汁算机博弈的核心是搜索,一盘完整的棋局需要考虑约4590一10啪种局面,因而就目前的电脑硬件水平无法实现“象棋不败算法”fll。1950年香侬教授(ClaudeShannon)首先提出了“极大一极小算法”,奠定了计算机人机博弈的理沦基础12-31。Bruno在1963年提出了alpha—beta算法141,1975年Knuth和Moore给出了其数学正确性证明嘲。alpha-beta是所有剪枝算法的基础,但其效率与子树节点搜索的先后顺序密切相关,因此启发算法的目的就是尽可能首先找出最佳着法。其中,历史启发f日和杀手启发算i去I,嘟是针对多次搜索的节点排序,具有较高的效率,但没有根据象棋里经常会有重复局面出现的特征来很好利用前面搜索的结果;吃子启发算法㈣根据当前吃对方棋子所能取得的好处排序,符合象棋的特征,但一般局面的吃子着法极少,并且吃子也并不一定就是最佳着法,甚至有可能贪吃一子导致满盘皆输;置换表启发191充分利用了象棋里重复局面多次出现的特征,弥补了上述启发算法的不足。 目前,对于单置换表策略主要有深度优先(DeeperPriori—ty)和随时替换(AlwaysReplace)两种。深度优先策略主要基于深度的考虑,忽略了棋局不断演变产生的新棋局信息对以后局势的影响,无法保证棋局信息的实时性,从而降低了置换表的效率,有时甚至引发非法剪枝。而随时替换策略虽然充分考虑了棋局新信息,具有较好的实时性,但却丢掉了拥有较深层数的棋局数据,浪费了资源并增加了搜索时间,效率不如深度优先策略(下文验证实验结果证明了这一结论)。基于以上考虑,利用上述两种置换策略的优点,引入双置换表(Two-levelTraas— positionTable(Two—levelTY))策略,并且应用Zobfist哈希技术解决了置换表的存取速度慢及存储窄间庞大等问题,分析了 置换冲突并给出了风险降低措施。将该策略与alpha-beta搜索算法相结合,实验结果表明,既具有较高的实时性又对已有数据有较好的利用率。 2alpha—beta基奉原理 对于程序而言,考虑对弈双方的每一种着法,就形成了博弈树。一棵深度为3的博弈树如图1所示。 黑 圈1深度为3的博奔树结构图 DepthO Depthl Depth2 Depth3 作者简介:焦尚彬(1974一),男,博士,副教授.主要研究领域为智能控制、状态检测;刘丁(1957一),男,博士,博士生导师,长期从事工业自动化、智能控制理论与应用等方面的研究。 收稿日期:2008—09—19修1"1日期:2008—12—10 万方数据

随机直接搜索优化算法NLJ辨识算法

随机直接搜索优化算法NLJ 辨识算法 NLJ 优化算法是随机直接搜索优化算法的一种,它是由随机数直接搜索算法算法发展而来,可以有效地解决各种复杂的问题。因其结构简单以及收敛迅速使其在随机搜索算法中始终占有一席之地。这种算法的核心思想是利用收缩变量来缩小搜索域,找到次优解,然后再基于次优解重复上述过程直到最终获得最优解。 假设待辨识的系统模型为: 1110 1 ()(0,1,...,)n n n H s i n a s a s a s a -= =++ ++ (3.1) 其中,01,,...,n a a a 表示待辨识模型的系数值。 该算法主要有以下步骤: Step 1、初始化参数。根据辨识数据,通过手工调整模型参数大致拟合出一个初始模型,确定模型初始参数(0)k i a ,其次,确定参数搜索范围c 。()k i a j 表示参数i a 在第k 次迭代的搜索结果,0,1,...,k p =,j 表示迭代组数,0,1,...,j m =。参数的搜索范围可由设定参数初始值的倍数决定,具体规则如下: 0l i i r ca = ,当 时,1k k k i i i r ca v -=?。 (3.2) 其中,根据经验知识,c 取值为2。 Step 2、计算性能指标。选择如式(3.3)所示的输出误差指标,作为辨识性能指标式,将待辨识的参数带入系统模型,求解估计值()y t 。 0[()()]N t J y t y t ==-∑ (3.3) 其中,()y t 为t 时刻的实际数据。 Step 3、计算参数估计值。在第k 代计算参数估计参数k l a ,其中rand 是在 [0.5,0.5]-之间分布的随机数,k i a 由下式给出: 1()()k k k l i i a j a j rand r -=+? (3.4) 在第k 次迭代计算后,计算m 组性能指标,选择使得性能指标最小的参数值作为下一次迭代的初始值: 11min[(())](0)|k i k k i i J a j a a --= (3.5) Step 4、修改搜索范围。在第k 次搜索前需要根据下式(3.6)对搜索范围进行修正防止局限的搜索范围导致搜索陷入局部极值。 (3.6) 在此处引入变化率η,首先,计算判断每组参数幅值的变化率,并选择变化 3k >1k k k i i i r cr v -=

基于仿真的优化方法综述

基于仿真的优化方法综述 作者:东汪定伟 1 引言 人们对复杂事物和复杂系统建立数学模型并进行求解的能力是有限的,目标函数和约束条件往往不能以明确的函数关系表达,或因函数带有随机参、变量,导致基于数学模型的优化方法在应用于实际生产时,有其局限性甚至不适用。基于仿真的优化(Simulation Based Optimization,SBO)方是在这样的背景下发展起来的。 随着优化问题越来越复杂,对优化对象的评价只能通过仿真获得的统计指标来实现。这时,SBO是复杂优化问题的惟一选择。近年来,SBO已成为国际上最热的研究方向。 虽然SBO已经在很多领域得到了应用,但是当前对于SBO的理论研究并不完善,算法仍在不断探索和改进中,新的研究成果不断出现。 2 SBO的研究概况及分类 综观最优化的发展过程,大约经过了以下几个阶段: ①1940~1970年数学规划阶段一目标和约束是解析函数。②1970-2000年智能优化阶段一目标和约束放宽为含有判断逻辑的计算机程序。③2000年一未来基于仿真的优化(SBO)阶段一用大量仿真的统计数据来进行性能评价。 有些学者对SBO做了一些综述工作。Andradottir从连续事件和离散事件两个方面,对SBO 技术作了总结;Azadivar从单目标优化和多目标优化的角度对SBO方法作了论述;在国,湘龙等认为SBO是非枚举地从可能值中找到最佳输入变量值,使得输出结果为最优或满意解的过程。王凌等按照优化方法的不同,对SBO及其改进和应用作了综述。 随着对SBO方法研究的深入,SBO在复杂工程系统的设计优化、供应链和物流系统、制造系统及社会经济系统等领域得到了应用。总结当前的研究和应用情况,可以看出,基于仿真的优化是仿真方法和优化方法的结合,是借助仿真手段实现系统的优化的一种优化方法。

《人工智能基础》实验报告-实验名称:启发式搜索算法

实验名称:启发式搜索算法 1、实验环境 Visual C++ 6.0 2、实验目的和要求 (复述问题)使用启发式算法求解8数码问题 (1)编制程序实现求解8数码问题A*算法,采用估价函数 f(n)=d(n)+p(n) 其中:d(n)是搜索树中结点n的深度;w(n)为节点n的数据库中错放的旗子个数; p(n)为结点n的数据库中每个棋子与其目标位置之间的距离总和。 (2)分析上述(1)中两种估价函数求解8数码问题的效率差别,给出一个是p(n)的上界h(n)的定义,并测试该估价函数是否使算法失去可采纳性。 实验目的:熟练掌握启发式搜索A*算法及其可采纳性。 3、解题思路、代码 3.1解题思路 八数码问题的求解算法 (1)盲目搜索 宽度优先搜索算法、深度优先搜索算法 (2)启发式搜索 启发式搜索算法的基本思想是:定义一个评价函数f,对当前的搜索状态进行评估,找出一个最有希望的节点来扩展。 先定义下面几个函数的含义: f*(n)=g*(n)+h*(n) (1) 式中g*(n)表示从初始节点s到当前节点n的最短路径的耗散值;h*(n)表示从当前节点n到目标节点g的最短路径的耗散值,f*(n)表示从初始节点s经过n到目标节点g的最短路径的耗散值。 评价函数的形式可定义如(2)式所示: f(n)=g(n)+h(n) (2) 其中n是被评价的当前节点。f(n)、g(n)和h(n)分别表示是对f*(n)、g*(n)和h*(n)3个函数值的估计值。 利用评价函数f(n)=g(n)+h(n)来排列OPEN表节点顺序的图搜索算法称为算法A。在A算法中,如果对所有的x,h(x)<=h*(x) (3)成立,则称好h(x)为h*(x)的下界,它表示某种偏于保守的估计。采用h*(x)的下界h(x)为启发函数的A算法,称为A*算法针对八数码问题启发函数设计如下: F(n)=d(n)+p(n) (4)

车辆路径调度问题的启发式算法综述

·论文· 车辆路径调度问题的启发式算法综述1 杨燕旋1,宋士吉1 (1.清华大学自动化系,北京 100084) 摘要:车辆路径调度问题是一类具有重大研究意义及广泛应用价值的NP难优化问题。本文给出了该问题的定义和基本描述,并将目前为止被应用于求解VRP问题的启发式算法分为构造型启发式算法、改进型启发式算法和人工智能算法这三大类,接着介绍了各类中比较典型的算法,并对算法的应用和研究情况进行了分析和总结,最后对进一步的研究做出了展望。 关键词:物流;车辆路径问题;调度;启发式算法 中图分类号:F252 A Survey on the Heuristic Algorithms for the Vehicle Routing Problem YANG Yan-Xuan,1 SONG Shi-Ji,1 (1.Department of Automation, Tsinghua University, Beijing 100084, China) Abstract:Vehicle Routing Problem is an NP-hard problem with great research and application significance. In this research, we first present the definition of the problem and give a classification to the existed heuristic algorithms for the problem. Then typical algorithms are introduced and research on the algorithms are investigated and summarized. Finally, further research directions are given. Key words:Logistics; Vehicle Routing Problem; Scheduling; Heuristic Algorithm 1959年,Dantzig等人首先从旅行商问题(Traveling Salesman Problem,简称TSP问题,)得到启发,提出了车辆分配问题TDP(Truck Dispatching Problem)。这是一类具有重要研究价值的问题。一方面,它代表了一类典型的组合优化问题,具有深远的理论意义;另一方面,它是一类重要的物流运输问题,直接影响着相关企业的运转效率,具有广泛的实践意义。半个世纪以来,许多的专家学者对该问题进行了广泛而深入的研究,并将这类问题统称为车辆路径调度问题(Vehicle Routing Problem,简称为VRP问题)。他们从基本问题出发,根据 1基金项目:自然科学基金(编号:60574077)、国家“八六三”高技术项目(编号:2007AA04Z102) 作者简介:杨燕旋(1983-),女,汉族,广东,清华大学硕士研究生,从事车辆路径调度方向的研究,E-mail: yyx02@https://www.360docs.net/doc/1d6749328.html,. 宋士吉(1965-),男,汉族,黑龙江,清华大学教授,博导,从事供应链管理等方向的研究,E-mail: shijis@https://www.360docs.net/doc/1d6749328.html,

启发式优化算法

启发式优化算法
Heuristic Optimization Algorithm
理论与应用 Theory & Application

内容纲要
? ?
优化问题与优化算法 常用的启发式优化算法
模拟退火算法 ? 遗传算法 ? 粒子群优化算法 ? 混合策略优化算法
?
?
讨论

优化问题
?
组合式优化问题
? ? ? ?
七桥问题 最短路径问题 公路连接问题 旅行商问题 无约束函数优化问题 有约束函数优化问题 函数优化+组合优化
?
函数优化问题
? ?
?
混合优化问题
?

七桥问题
?
Euler在1736年访问Konigsberg时,他发现Konigsberg城中有 一条名叫Pregel的河流,河上建有七座桥如图所示: 市民有 趣的消遣活动是星期六作一次走过所有七座桥的散步,每 座桥只能经过一次而且起点与终点必须是同一地点。
Impossible Task!

最短路径问题 SPP-shortest path problem
?
?
?
货柜车司机奉命在最短的时间内将一车货 物从甲地运往乙地。 从甲地到乙地的公路网纵横交错,因此有 多种行车路线,这名司机应选择哪条线路 呢? 假设货柜车的运行速度是恒定的,那么这 一问题相当于需要找到一条从甲地到乙地 的最短路。

公路连接问题
?
?
某一地区有若干个主要城市,现准备修建 高速公路把这些城市连接起来,使得从其 中任何一个城市都可以经高速公路直接或 间接到达另一个城市。 假定已经知道了任意两个城市之间修建高 速公路成本,那么应如何决定在哪些城市 间修建高速公路,使得总成本最小?

仿生算法小结

PSO粒子群优化算法 1. 引言 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究 PSO同遗传算法类似,是一种基于迭代的优化工具。系统初始化为一组随机解,通过迭代搜寻最优值。但是并没有遗传算法用的交叉(crossover)以及变异(mutation)。而是粒子在解空间追随最优的粒子进行搜索。详细的步骤以后的章节介绍 同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域 2. 背景: 人工生命 "人工生命"是来研究具有某些生命基本特征的人工系统. 人工生命包括两方面的内容 1. 研究如何利用计算技术研究生物现象 2. 研究如何利用生物技术研究计算问题 我们现在关注的是第二部分的内容. 现在已经有很多源于生物现象的计算技巧. 例如, 人工神经网络是简化的大脑模型. 遗传算法是模拟基因进化过程的. 现在我们讨论另一种生物系统- 社会系统. 更确切的是, 在由简单个体组成的群落与环境以及个体之间的互动行为. 也可称做"群智能"(swarm intelligence). 这些模拟系统利用局部信息从而可能产生不可预测的群体行为 例如floys 和boids, 他们都用来模拟鱼群和鸟群的运动规律, 主要用于计算机视觉和计算机辅助设计. 在计算智能(computational intelligence)领域有两种基于群智能的算法. 蚁群算法(ant colony optimization)和粒子群算法(particle swarm optimization). 前者是对蚂蚁群落食物采集过程的模拟. 已经成功运用在很多离散优化问题上. 粒子群优化算法(PSO) 也是起源对简单社会系统的模拟. 最初设想是模拟鸟群觅食的过程. 但后来发现PSO是一种很好的优化工具. 3. 算法介绍 如前所述,PSO模拟鸟群的捕食行为。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。

启发式算法研究小结

启发式算法研究小结 0.探究启发式算法的缘由 在选《管理优化决策》这门课的时候,我抱着很强的好奇心和巨大的求知欲,试图尝试在这门课上学到我感兴趣的知识点以及确定我今后极有可能的研究领域和大方向。很幸运的是,我找到了。为什么这么说呢?就在我选择博士专业内选修课和专业外选修课的同时我发现了管理优化决策这门课和计算机学院那边开的选修课——《启发式优化》(由吕志鹏教授讲授),有很多是相通的,发现管理界尤其是在管理科学与工程方向和计算机技术应用领域所探究的问题出奇的一致,已经很难分清,哪个是管理方面的问题,哪个是计算机技术应用的范围了。正如各位都知道的是,由于选修课最终确定前一个月是可以去试听的,然而我并没有因为两者看上去内容有些相似就匆忙退选。通过对这两门课的内容进行比较,它给了我很大的触动,也带给我巨大的好奇,到底是管理方面的研究越来越偏向运用计算机等其他学科的知识和工具,还是计算机应用研究的方面越来越偏向实际的管理优化问题了呢?亦或者两个学科的边界正在走向模糊?我想学科交叉和融合的这一说法对于我来说可能并不是很新鲜,但这的确是我亲身经历的一种美妙体验和发现。它带给我新奇的同时也无疑给了我值得我深思几点的启示: 首先,众所周知,管理学科作为一门交叉的新兴学科,它的方法和工具都是依托和借助其他领域和学科而来的,它本身并没有或者几乎没有一个完完整整的只属于管理学科的方法和工具,几乎是其它学科的知识演变而来的,这就是我们所知道的学科交叉和学科融合;然而管理领域和传统计算机研究等领域的视角并不完全一样,其中对于计算机领域的研究者们而言,他们不但在乎启发式算法是否能够解决问题、效率是否大幅提高(而管理领域的专家们更在乎这点,能用第一,好用第二,或者说管理专家们更在乎第一点——问题能够得到的解决,至于第二点就不是那么迫切。而对计算机领域的向专家们而言,可以说两者都非常重要、要求非常苛刻),更在乎它所表现出来的优越特性(就时间、空间复杂度以及算法求解过程中保持一定的集中性和分散性而言的)。然而当管理领域的学者们求解类似问题,一般来说都是和我们生活中的管理者经常遇到且直接和的决策相关的问题,因为由于管理者的决策质量好坏会往往直接导致企业和团体的效率和绩效和高低,进而导致企业和组织的竞争力强弱,所以一般企业或者个人都是基于一定的价值诉求来解决管理问题,进而提高工作效率。由于管理者们非常了解生活中并不存在完完全全的理性人和完全信息,因此他们很难也极少去尝试寻找最优解,找到满意解就可以了,这一点和启发式算法的设计思想不谋而合(由于

sklearn SVM算法库小结

scikit-learn 支持向量机算法库使用小结 之前通过一个系列对支持向量机(以下简称SVM)算法的原理做了一个总结,本文从实践 的角度对scikit-learn SVM算法库的使用做一个小结。scikit-learn SVM算法库封装了libsvm 和liblinear 的实现,仅仅重写了算法了接口部分。 1. scikit-learn SVM算法库使用概述 scikit-learn中SVM的算法库分为两类,一类是分类的算法库,包括SVC, NuSVC,和LinearSVC 3个类。另一类是回归算法库,包括SVR, NuSVR,和LinearSVR 3个类。相关的类都包 裹在sklearn.svm模块之中。 对于SVC, NuSVC,和LinearSVC 3个分类的类,SVC和 NuSVC差不多,区别仅仅在于对 损失的度量方式不同,而LinearSVC从名字就可以看出,他是线性分类,也就是不支持各种低维 到高维的核函数,仅仅支持线性核函数,对线性不可分的数据不能使用。 同样的,对于SVR, NuSVR,和LinearSVR 3个回归的类, SVR和NuSVR差不多,区别也仅仅在于对损失的度量方式不同。LinearSVR是线性回归,只能使用线性核函数。 我们使用这些类的时候,如果有经验知道数据是线性可以拟合的,那么使用LinearSVC 去分类或者LinearSVR去回归,它们不需要我们去慢慢的调参去选择各种核函数以及对应参数, 速度也快。如果我们对数据分布没有什么经验,一般使用SVC去分类或者SVR去回归,这就需要 我们选择核函数以及对核函数调参了。 什么特殊场景需要使用NuSVC分类和 NuSVR 回归呢?如果我们对训练集训练的错误率或者说支持向量的百分比有要求的时候,可以选择NuSVC分类和 NuSVR 。它们有一个参数来控制这个百分比。 这些类的详细使用方法我们在下面再详细讲述。 2. 回顾SVM分类算法和回归算法 我们先简要回顾下SVM分类算法和回归算法,因为这里面有些参数对应于算法库的参数,如果不先复习下,下面对参数的讲述可能会有些难以理解。 对于SVM分类算法,其原始形式是: min12||w||22+C∑i=1mξi min12||w||22+C∑i=1mξi

启发式搜索算法解决八数码问题(C语言)

1、程序源代码 #include #include struct node{ int a[3][3];//用二维数组存放8数码 int hx;//函数h(x)的值,表示与目标状态的差距 struct node *parent;//指向父结点的指针 struct node *next;//指向链表中下一个结点的指针 }; //------------------hx函数-------------------// int hx(int s[3][3]) {//函数说明:计算s与目标状态的差距值 int i,j; int hx=0; int sg[3][3]={1,2,3,8,0,4,7,6,5}; for(i=0;i<3;i++) for(j=0;j<3;j++) if(s[i][j]!=sg[i][j]) hx++; return hx; } //-------------hx函数end----------------------// //-------------extend扩展函数----------------// struct node *extend(node *ex) { //函数说明:扩展ex指向的结点,并将扩展所得结点组成一条//单链表,head指向该链表首结点,并且作为返回值 int i,j,m,n; //循环变量 int t; //临时替换变量 int flag=0; int x[3][3];//临时存放二维数组 struct node *p,*q,*head; head=(node *)malloc(sizeof(node));//head p=head; q=head; head->next=NULL;//初始化 for(i=0;i<3;i++)//找到二维数组中0的位置 { for(j=0;j<3;j++)

集装箱码头泊位调度问题的启发式算法研究

第25卷第4期 青岛大学学报(工程技术版)  Vol.25No.4 2010年12月JOURNAL OF QING DAO UNIVERSIT Y (E &T) Dec.2010 文章编号:1006-9798(2010)04-0057-04 集装箱码头泊位调度问题的启发式算法研究 张海滨,张纪会,宣金钊 (青岛大学复杂性科学研究所,山东青岛266071) 摘要:为优化集装箱码头泊位的分配,提高泊位的利用率,把码头泊位的调度问题转化为带有约束条件的特殊二维装箱问题。通过建立连续泊位调度的非线性规划模型,提出了一种求解集装箱码头连续泊位分配问题启发式算法。仿真算例结果表明该算法能在实际的集装箱码头泊位调度中有效的提高泊位的利用率。关键词:泊位分配;装箱问题;启发式算法中图分类号:U692.4 文献标识码:A 收稿日期:2010-09-11 基金项目:国家自然科学基金项目(70671057);山东省自然科学基金项目(ZR2010GM006)作者简介:张海滨(1982-),男,硕士研究生,主要从事集装箱码头泊位调度的研究。 泊位作为港口运输中一种重要的资源,是影响港口发展的关键因素之一。随着港口之间的竞争越来越激烈,如何最大限度提高泊位的利用率、加快船舶的装卸速度,提高港口作业效率和服务水平,是增强港口竞争力的关键因素之一。因此,泊位调度问题成为港口运输中研究的一项重点内容之一。泊位分配问题根据泊位的特点分为离散泊位分配和连续泊位分配,根据作业特点分为静态泊位分配和动态泊位分配。泊位分配问题作为N P 难问题,可以视为指派问题或者划分问题[1];Lai 等[2]提出了以先到先服务为准则的动态泊位调度的启发式算法;Imai [3-5]提出了一种离散泊位下静态和动态泊位分配的启发式算法;Cordeau 等[6]利用禁忌搜索方法对动态泊位分配问题进行了求解;K im 等[7]建立了惩罚策略下的最小费用泊位动态分配模型,并利用模拟退火算法进行了求解;Monaco 等[8]通过考虑船舶总的在港时间,建立了一种连续泊位动态分配模型并进行求解;Hansen 等[9]基于在港时间和在港费用综合考虑建立了相应的模型,并进行了仿真求解。本文仅考虑泊位一种因素,建立了连续的动态泊位分配优化模型,提出了一种启发式算法可以求得模型的近似最优解。 1 以利用率最高为目标的泊位调度模型 泊位调度问题实际是如何安排船舶靠泊的时间和靠泊位置,使某一时间内港口泊位的利用率最高。实际上泊位的划分主要是逻辑划分而非物理划分。目前国际上的集装箱运输都是采用班轮运输方式,因此,为建立模型作如下假设:模型中的泊位是连续的,进入待泊区域的集装箱船舶都可以进入泊位作业区域进行作业;根据集装箱采取班轮运输的特点,假设船舶的作业时间由所在目的港装卸箱子的数量决定,与船舶的靠泊位置无关;假设船舶都能按照预计时间到达目的港,可以根据船舶的预计到达时间对船舶进行分配靠泊位置。 建立x -y 直角坐标系,x 轴表示作业时间,y 轴表示离散泊位长度。则连续泊位调度的模型可以描述为: 1) 某一时间段内通过合理安排船舶靠泊作业顺序和作业位置使泊位的利用率最大,其模型为 max F = ∑ j ∈V l j t nj /S (1) 式中,l j 表示船舶j 安全作业需要的泊位长度(其中包括船舶的长度和船舶安全作业之间的距离);t nj 表示船

智能优化算法

智能计算读书报告(二) 智能优化算法 姓名:XX 学号:XXXX 班级:XXXX 联系方式:XXXXXX

一、引言 智能优化算法又称为现代启发式算法,是一种具有全局优化性能、通用性强、且适用于并行处理的算法。这种算法一般具有严密的理论依据,而不是单纯凭借专家的经验,理论上可以在一定时间内找到最优解或者近似最优解。所以,智能优化算法是一数学为基础的,用于求解各种工程问题优化解的应用科学,其应用非常广泛,在系统控制、人工智能、模式识别、生产调度、VLSI技术和计算机工程等各个方面都可以看到它的踪影。 最优化的核心是模型,最优化方法也是随着模型的变化不断发展起来的,最优化问题就是在约束条件的限制下,利用优化方法达到某个优化目标的最优。线性规划、非线性规划、动态规划等优化模型使最优化方法进入飞速发展的时代。 20世纪80年代以来,涌现出了大量的智能优化算法,这些新颖的智能优化算法被提出来解决一系列的复杂实际应用问题。这些智能优化算法主要包括:遗传算法,粒子群优化算法,和声搜索算法,差分进化算法,人工神经网络、模拟退火算法等等。这些算法独特的优点和机制,引起了国内外学者的广泛重视并掀起了该领域的研究热潮,并且在很多领域得到了成功地应用。 二、模拟退火算法(SA) 1. 退火和模拟退火 模拟退火算法(Simulated Annealing,SA)最早的思想是由N. Metropolis 等人于1953年提出。1983 年,S. Kirkpatrick 等成功地将退火思想引入到组合优化领域。它是基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。模拟退火算法是一种通用的优化算法,理论上算法具有概率的全局优化性能,目前已在工程中得到了广泛应用,诸如VLSI、生产调度、控制工程、机器学习、神经网络、信号处理等领域。 模拟退火算法是通过赋予搜索过程一种时变且最终趋于零的概率突跳性,从而可有效避免陷入局部极小并最终趋于全局最优的串行结构的优化算法。 模拟退火其实也是一种贪心算法,但是它的搜索过程引入了随机因素。模拟

启发式搜索算法在N数码问题中的应用

编号 南京航空航天大学毕业论文 题目启发式搜索算法在N数码问 题中的应用 学生姓名 学号 学院 专业 班级 指导教师 二〇一三年六月

南京航空航天大学 本科毕业设计(论文)诚信承诺书本人郑重声明:所呈交的毕业设计(论文)(题目:启发式搜索算法在N数码问题中的应用)是本人在导师的指导下独立进行研究所取得的成果。尽本人所知,除了毕业设计(论文)中特别加以标注引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写的成果作品。 作者签名:年月日 (学号):

启发式搜索算法在N数码问题中的应用 摘要 N数码问题是人工智能领域中的经典问题,N数码可以有效的判断一个搜索算法的优劣。在低阶数码问题中,使用简单的宽搜或深搜就可以解决问题,但在高阶数码中,由于其巨大的搜索规模,我们必须采用更加智能的算法才能解决问题。与传统搜索相比,启发式搜索当前搜索过程中的信息,选择最为可行的状态进行拓展,从而大大提高了搜索的质量和效率。 本文通过建立N数码问题的存储机制和移动规则,使得N数码问题转化为了一个标准的搜索问题。并着重分析了A*算法和遗传算法在N数码中的应用,在A*算法中使用了两种不同的估价函数,目的是比较不同估价函数在N数码问题中的表现。在最后,本文进行了大量实验,综合分析了A*算法和遗传算法在不同规模数据下的优劣。 关键词:启发式搜索,数码问题,A*算法,遗传算法

The Application of Heuristic Search Algorithm on N-Puzzle Problem Abstract N-puzzle problem is a classic problem in artificial intelligence. N-puzzle problem can effectively judge the merits of a search algorithm. In the low order puzzle problem, using a Depth-First-Search or Breadth-First-Search can solve the problem, but in the higher order digital, because of the huge search space area,we must adopt a more intelligent https://www.360docs.net/doc/1d6749328.html,pared with the traditional search method, heuristic search uses the information in the search process, and it will choose the most feasible state, thus greatly improves the search quality and efficiency. This paper designs the storage mechanism and movement rules of N-puzzle problem, making the N-puzzle problem transforms to a standard search problem. This paper focuses on the application of A* algorithm and genetic algorithm in N-puzzle problem, and two different evaluation function used in A* algorithm. The objective is to compare the performance of different valuation function in N digital problem. In the end, this paper carries out a large number of experiments, a comprehensive analysis of the A* algorithm and genetic algorithm in different scale of data. Key Words:Heuristic Search;N-puzzle Problem;A* algorithm; Genetic algorithm

启发式算法求解带必经节点最短路问题研究

华中科技大学硕士学位论文 目录 摘要 ...................................................................................................................... I Abstract................................................................................................................. II 1绪论 1.1课题背景及意义 (1) 1.2问题数学描述 (1) 1.3国内外研究现状 (2) 1.4本文主要研究内容 (4) 2相关理论基础 2.1启发式算法概述 (5) 2.2局部搜索 (5) 2.3TSP问题概述 (6) 2.4问题数学建模 (9) 2.5本章小结 (12) 3多阶段优化启发式算法 3.1算法主框架 (14) 3.2和TSP问题相互转化 (16) 3.3求解TSP问题 (19) 3.4候选路搜索 (23) 3.5节点属性提升 (27) 3.6本章小结 (28) 4实验结果分析 4.1算例集介绍 (29) 4.2求解结果比较 (30) 4.3本章小结 (38) 5算法分析与讨论 5.1复杂度分析 (39) 5.2增量评估技术 (39) 5.3多策略组合 (41) 5.4本章小结 (42)

华中科技大学硕士学位论文 6总结与展望 6.1论文工作总结 (43) 6.2未来工作展望 (43) 致谢 (45) 参考文献 (46) 附录一:测试数据 (49)

相关文档
最新文档