搜档网
当前位置:搜档网 › 神经网络与遗传算法

神经网络与遗传算法

神经网络与遗传算法
神经网络与遗传算法

5.4 神经网络与遗传算法简介

在本节中,我们将着重讲述一些在网络设计、优化、性能分析、通信路由优化、选择、神经网络控制优化中有重要应用的常用的算法,包括神经网络算法、遗传算法、模拟退火算法等方法。用这些算法可以较容易地解决一些很复杂的,常规算法很难解决的问题。这些算法都有着很深的理论背景,本节不准备详细地讨论这些算法的理论,只对算法的原理和方法作简要的讨论。

5.4.1 神经网络

1. 神经网络的简单原理

人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model),是对人脑或自然神经网络(Natural Neural Network)若干基本特性的抽象和模拟。人工神经网络以对大脑的生理研究成果为基础的,其目的在于模拟大脑的某些机理与机制,实现某个方面的功能。所以说, 人工神经网络是由人工建立的以有向图为拓扑结构的动态系统,它通过对连续或断续的输入作出状态相应而进行信息处理。它是根据人的认识过程而开发出的一种算法。假如我们现在只有一些输入和相应的输出,而对如何由输入得到输出的机理并不清楚,那么我们可以把输入与输出之间的未知过程看成是一个“网络”,通过不断地给这个网络输入和相应的输出来“训练”这个网络,网络根据输入和输出不断地调节自己的各节点之间的权值来满足输入和输出。这样,当训练结束后,我们给定一个输入,网络便会根据自己已调节好的权值计算出一个输出。这就是神经网络的简单原理。

2. 神经元和神经网络的结构

如上所述,神经网络的基本结构如图5.35所示:

隐层隐层2

1

图5.35

神经网络一般都有多层,分为输入层,输出层和隐含层,层数越多,计算结果越精确,但所需的时间也就越长,所以实际应用中要根据要求设计网络层数。神经网络中每一个节点叫做一个人工神经元,他对应于人脑中的神经元。人脑神经元由细胞体、树突和轴突三部分组成,是一种根须状蔓延物。神经元的中心有一闭点,称为细胞体,它能对接受到的信息进行处理,细胞体周围的纤维有两类,轴突是较长的神经纤维,是发出信息的。树突的神经纤维较短,而分支众多,是接收信息的。一个神经元的轴突末端与另一神经元的树突之间密

切接触,传递神经元冲动的地方称为突触。经过突触的信息传递是有方向性的,不同的突触进行的冲动传递效果不一样,有的使后一神经元发生兴奋,有的使其发生抑制。

由人脑神经元的工作机理,人们构造了人工神经元的数学模型,它是人脑的模拟和简化,如图5.36所示。

2

x n

x y

树突

突触

细胞体

轴突

图5.36 McCulloch-Pitts 网络

在图中,i w 是表示神经元对信息i x 的感知能力,称为关联权,()f z 称为输出函数或激活函数,采用激活函数的人工神经网络也称阈网络。McCulloch-Pitts 输出函数定义为

()1

sgn(),n

i i i y f

z w x θ===-∑

其中,sgn()?为符号函数,θ称为阈值。

一般来说,一个人工神经元有多个输入和一个输出,另外有一个激活函数,不同的激发函数对应了不同的网络,也决定了网络的用途。从方程可以看出,当 i w 确定时,任给一组输入1,

,i x i n ???

=,,也就很容易得到输出。而现在我们的想法是:对给定的输入,确定

权数i w ,使得通过方程计算出来的输出尽可能与实际值吻合,这即是学习的过程。学习也称为训练,指的是通过神经网络所在环境的刺激作用调整神经网络的权数i w ,使得神经网络对外部环境以一种新的方式作出反应。学习分为有指导学习和无监督学习:在有正确输入输出数据条件下调整和确定权数i w 的方法称为有指导学习;而在只知输入数据不知输出结果的前提下确定权数的方法称为无监督学习。人工神经网络的主要工作就是通过学习,建立模型和确定i w 的值。

神经网络按照网络结构和激发函数的不同可分为许多种,我们在此只对感知器、BP 网络及Hopfield 神经网络进行简介。

3.感知机

首先介绍单层前向神经网络。单层前向神经网络的模型结构如图5.37所示。 或用矩阵表示为

()T

Y f W X θ=-

其中,()ij m n W w ?=为权系数矩阵,X Y θ,,分别为输入向量、输出向量及阈值向量。

确定权数ij w 的基本思想是修正ij w 使得输入输出偏差尽可能小。权的修正公式为:

(1)()(),()(())ij W t W t W t W t w t δδδ+=+=,()

()(()())()

ij t j j i m n

w t d t y t x t δε?=-,其中,

()()1,,1,,i j x t d t i m j n ??????==,,,分别表示第t 组用于学习的输入和期望输出数据,t

ε称为学习效率,用于控制调整速度。与权值修正原理类似,阈值修正公式可假设为:1

(1)()(),()(()())t j j n t t t t d t y t θθδθδθε?+=+=-,通过更新权数和阈值使得输入输出偏差趋于零。若将激活函数()f ?取为阶跃函数,上述思想即是感知机原理。

1x x x 1n

2

y 输入层

输出层

图5.37

由此,我们给出感知机学习规则算法步骤为:

用t 表示学习步骤的序号,0t =表示学习前的神经网络的初始状态。 第1步:赋初值。

给网络上权数和阈值赋初值,如00ij i w θ==,;

第2步:计算样本实际输出。 选择一个样本作为网络输入,计算样本在目前神经网络中的实际输出。如,对于第p 个样本,感知机输出为:

1()(()())n

Y p Y p Y p ???=,,, 其中,()()1,,i ij j i Y p f w x i n θ???=-=∑,

第3步:计算误差。

计算感知机输出的实际结果与期望输出之差:()()t D p Y p δ=- 第4步:权数修正。

如果0t δ=,则转第2步,否则调整权值:

(1)()(),()i i i i t i W p W p W p W p x δδηδ+=+=

第5步:若训练样本已完全输入或输出误差小于预设值,则学习结束;否则,转第2步继续学习。

如果对给定的两类样本数据(通常就是用于学习的输入数据),在空间中可以用一条直线(平面)将其分开,则称该样本数据是线性样本,否则称为非线性样本,对样本进行分类或识别即属于人工神经网络的重要应用之一。感知机可以识别二值逻辑加问题,而不能识别异或问题。对于非线性问题,可以用反向传播(BP )模型解决。

4. BP 网络

k 第层1k +第层

1k 第-层

图5.38 多层前向神经网络结构

BP 网络应用得最为广泛,最为重要的一种神经网络。这种网络一般有多层,有输入层,输出层和隐含层,上一层的输出即是下一层的输入,输出层所在的层数就是神经网络的层数。一般的多层前向神经网络结构如图5.38所示。

在实际应用中,BP 网络的激活函数一般采用S 型函数:1()1z

f z e

-=

+, 这是因为S

型函数有很好的函数特性,其效果又近似于符号函数,现主要讨论采用S 型函数的多层前向神经网络的学习方法。

假设有一个K 层的神经网络,从第0层到第1层的原始输入向量、权矩阵、第1层神经元接受向量和第1层输出向量以及它们之间的关系为:

012n x x X x ??

??

??=??

??

???

? ,0111()ij n n W w ?=,11112111T n z z Z W X z ??????==???????? ,11

112111()n y y Y f Z y ??????==????????

第1k -层到第k 层的权矩阵、神经元接受向量和输出向量以及它们之间的关系分别为:

1()ij k k

k

k n n W w -?=,121k

k

k T k k k k n z z Z W Y z -??????==???????? ,12()k k k k k

k n y y Y f Z y ??

??

??==????????

其中,()k k

i i y f z =。

我们先讨论单样本学习规则。学习规则是:确定W ,使得

()()()T

K K F W D Y D Y =--

最小,其中12()K

T

n D d d d ???=,,,为理想输出。 采用S 型函数的前向多层神经网络的反推学习(BP)算法步骤如下: 第1步:选定学习的数组{()()}1,2,

,X t D t t T ???

=,,,随机确定初始权矩阵(0)W ;

第2步:用学习数据()X t 计算12()()()k Y t Y t Y t ???

,,,; 第3步:计算

① 1111121()2()K K

K K K T K K

ij n n K n y y F W

B w y ----?-??

????

???=-

? ?

????

???????

,121112,,,K K K K K n K K K K K K n dy dy dy B diag W B dz dz dz ++??

=??????

其中,111221,,,,K

K

T

K K K

K n n K B d y d y d y W I ++??=---=??

。 ② 21

12122212()2()K K K K K T K K ij n n K n y y F W B w y -------?-??

????

???=- ?

?

???????????

,11

11121

11112,,,K

K K K K n K K K K K K n dy dy dy B diag W B dz dz dz --------??=??

????

③ 2k K ≤-时,1111121()2()k k

k k k T k k

ij n n k n y y F W

B w y ----?-??????

???=-

? ?

????

???????

, 其中,121112,,,k k

k

k k n

k k k k k

k n dy dy dy B diag W B dz dz dz ++??

=??????

。 第4步:反向修正()W t ,修正公式为:(1)()(),1,

,1k k k W t W t W t k K K δ???

+=+=-,,

其中,1111121()()1()()()(())2

()k k

k k k T

k t t k k

ij

n n k n y t y t F W W t t B t w y t δεε----?-??

???????=-

=

?

?

????

???????

第5步:循环利用T 个学习样本,重复第2步~第4步,对网络权数进行调整,直到整个训练集误差最小(网络达到稳定状态)。

当激活函数1()1x

f x e

-=

+时,

1()(1())1,,1,,k

j k k

j j k k k j

dy f z f z i n j n dz

??????-=-==,,,代入①、②、③使计算可以得以

简化。

BP 网络的用途十分广泛,可用于以下方面:①函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近一个函数;②模式识别:用一个特定的输出矢量将它与输入矢量联系起来;③分类:把输入矢量以所定义的合适方式进行分类;④数据压缩:减少输出矢量维数以便于传输或存储。

5. Hopfield 神经网络

前面介绍的感知机和BP 网络都属于前向网络。前向网络结构简单、易于编程,但计算能力不够强大。反馈神经网络是一个反馈动力学系统,具有更强的计算能力。其一般结构如图5.39所示。

图5.39 反馈神经网络的一般结构

反馈型神经网络中,神经元之间信息交互关系不再是从一层传递到另一层,而是各神经元之间都存在关系,存在从输出到输入的反馈,所以反馈型神经网络可能是不稳定的。反馈型神经网络有连续型和离散型两类,连续型用微分方程描述,离散型用差分方程描述。 J.Hopfield 将神经网络和动力学系统研究结合起来,于20世纪80年代提出了一个全新的神经网络模型—Hopfield 神经网络,并把一个最优化问题的目标函数转换成网络的能量函数,把问题的变量对应于网络的状态,求解出了旅行商问题的准优解。

Hopfield 神经网络属于反馈型神经网络,若Hopfield 神经网络的权数矩阵是对角线元素为0的对称矩阵,即:0ij w =,ij ji w w =,则可以证明这种神经网络是稳定网络,即反馈与迭代的计算过程所产生的变动越来越小,一直到达平衡状态。

1)离散Hopfield 神经网络

离散Hopfield 神经网络神经元的输出为离散值0和1,分别代表神经元抑制和激活状态,若神经元的输出信息小于阈值,神经元输出值为0;反之输出值为1。对于有n 个神经元的离散Hopfield 神经网络,其权数矩阵为n n ?维对称阵,每个神经元都有一个阈值,故有一个n 维的阈值向量,权数矩阵和阈值矢量就定义了唯一一个n 个神经元的离散Hopfield 神经网络。

Hopfield 网络中的神经元公式可表示为:

(0)i i y x =

1

()()n

i ji

i j h t w

y t ==

(1)(())i i i y t f h t θ+=-

其中,(0)i y 表示神经元i 的初始状态,(1)i y t +表示神经元i 在1t +时刻的状态,同时也是神经元i 在1t +时刻的输出,i θ表示神经元i 的阈值。一个n 个神经元的离散Hopfield 网络在t 时刻的状态可以用一个n 维向量表示为:12()[()()()]T n Y t y t y t y t ???

=,,,。

若采用符号激活函数时,将Hopfield 网络的能量函数定义为:

1

1

1

1

2

n

n

n

ij

i j i i i j i E w y y y θ====-

+∑∑∑

任意神经元的能量函数为:

1

1

1

2

n

n

i ij

i j i i j i E w y y y θ===-

+∑∑

容易推出从t 时刻到1t +时刻的能量变化量为

1

n

i ij j i

i j E w y y θ=??

?=-+? ???

∑ 由于采用的是符号激活函数,所以无论神经元i 的状态变化如何,显然有0i E ?≤,其中等号仅在神经元i 的状态不变时成立。又由于神经元i 的任意性,所以当网络按某一规则进行状态更新后,网络的总能量在减少。这样经过不断的迭代,网络最终达到稳定状态。

在算法的构造上可以采用同步和异步两种方式,异步算法就是每次只调节一个神经元,其它神经元保持不变。同步算法就是同一时刻对所有神经元同时调整。

下面仅给出Hopfield 网络异步算法的基本步骤,对于同步,读者不难自己给出。

Hopfield 网络异步算法:

第1步:初始化。任选一个初始状态{}(),n

Y 0=01; 第2步:更新状态。随机选取一个神经元,进行状态更新:

1

(1)s g n (())

(1)()n

i i j j i

j j

j y t w y t y t y t j i θ=?

+=-???+=≠?∑, 第3步:检验。检验()Y t 是否为网络的平衡点,若是转第4步;否则,转第2步; 第4步:输出。输出()Y t 。

2)连续Hopfield 神经网络

Hopfield 利用模拟电子线路功能构造了反馈型神经网络的电路模型,建立的能量函数表达式为

1

1

1

1

1

1

1()()2

i n

n

n

n

y ij i j i i i i j i i i

E y w y y I y f x dx R -=====-

-+∑∑∑∑

?

(5-140)

其中,()i i i y f z =,i f 为Sigmoid 函数,ij w 为神经元i 和神经元j 之间的连接权数。

ij ji w w =,i R 对应电路中的电阻,i z 为神经元i 的接受值,i I 为外部偏置电流输入值,

1

1

1()i n

y i i i

f x dx R -=∑

?

为增益项。

对应的连续Hopfield 神经网络状态变化用微分方程表示为

1()1,2,,n

i

i ij j i

j i

i i dz Az w y I dt

y f z i n

???=?=-++?

??==?∑, (5-141) 其中,A 是与i R 有关的常数,当0i R R =>时,1A R =。

(5-140)和(5-141)有如下关系:

i i

dz E dt

y ?-=? (5-142)

容易证明,若f 为单调增函数,有:

0dE dt

≤,且当且仅当0(1,2,,)i dz i n dt

???==,时,

0dE dt

=。所以,连续Hopfield 神经网络的状态总是向着能量E 减少的方向运动的,因此网

络总能收敛到稳定状态,网络的稳定点同时也是能量E 的极小点。

具体地,Hopfield 神经网络的计算步骤:

第1步:针对实际的组合优化问题构造能量函数,使得能量函数有好的稳定性; 第2步:由能量函数,根据(5-142)的关系求解出Hopfield 神经网络状态变化方程(5-141);

第3步:用数值方法(如Matlab 软件)求解方程(5-141)得到平衡点,得极小值。 需要注意的是:

① 能量E 的极小点有局部极小点和全局极小点两类,在具体的数值计算过程中,难免会陷入局部极小,所以有吸引子的热点研究。为了避免局部极小,可以采用多种方法的组合,如与遗传算法、模拟退火等方法的结合。

② 无论对离散型还是连续型的Hopfield 神经网络,只要权值矩阵是对称阵,网络就是稳定的,但由于Hopfield 神经网络神经元的连接权值在整个计算过程中是不变的,所以Hopfield 神经网络不具有学习能力。

6. 神经网络算法的应用实例 1)地震级预测

表5.3 学习样本集及内符结果

现选取某地区20组地震数据(每组数据有诸如频度、蠕变、能量、b值、缺震、η值

等具有代表性的六个指标)作为输入,目的是预测震级,因此选择输入层为6个节点,输出层为1个节点,隐层节点确定为2个。用S函数作为激活函数。建立神经网络模型,对地震样本数据采用BP算法进行学习,以期对地震级进行有效预测,如表5.3所示。

需要注意的是,在隐层结点确定的情况下,由于训练次数过大会使测试误差增大,影响网络的外推能力。故在训练过程中每经过一定训练次数后,要停止训练并测试其测试误差,当发现测试误差开始上升时,网络便达到最佳训练次数,此时网络便具有最佳的外推能力。

为检验该网络对预报震级的效能如何,能否达到要求的精度还必须进行内符检验。内符情况如表5.3,可以看出我们所构造的用于该地区地震活动预测的神经网络模型基本能识别

训练样本,如果取||0.5

?≤,内符检验正确率为95%。外推能力检验采用交叉法进行,

M

把同样的训练样本分成7,7,6三个子集,每次抽出一个子集不参加训练,用它来测试外推能力,分析结果如表 5.4。可以看出最大预测震级与实际震级之差为0.7,如果限定||0.5

?≤为预报正确,则预报震级的准确率为85%。

M

表5.4 预测效能分析

2) 基于Hopfield 网络的TSP 问题求解

TSP (Traveling salesman Problem )问题描述:一个装备保障人员欲到n 个营区去补给装备,每两个营区i 和j 之间的距离为ij d ,如何选择一条道路使得装备保障人员每个营区走一遍后回到起点且所走路径最短。

如果固定一个营区为起终点,则枚举n 个营区需要(1)!n -个枚举,若以计算机1秒可以完成24个营区所有路径枚举为单位,则营区数为25时需24秒, 营区数为26时需10分,...,营区数为30时需10.8年,营区数为31时需325年,...,计算量为(!)o n ,TSP 问题属于NP,故枚举法解TSP 问题是个不好的方法。

下面给出这个问题具体的神经网络求解方法。

用一个n n ?矩阵表示TSP 的解,其第i 行表示装备保障人员到达该营区的顺序,第i 行由数字0,1组成一个n 维向量,其中只能有一个分量为1,1所在的序数表示装备保障人员到达的序数。如向量(00100)表示商人第3个访问该营区。下面的矩阵表示一个五营区TSP 问题的一个解。

次序12345

营区营区营区营区营区12345

010000001010000001000

1

它是一个置换矩阵,表示商人行走的路线为:31425→→→→。

由此构造n n ?个神经元的神经网络,对应(,)i j 位置的神经元,其输出为ij y ,输入为ij z ,两个营区x 和y 的距离为xy d ,各营区距离信息通过建立能量函数表达式产生对突触权值的约束。

能量函数为:

2

1111

111

1

11

()

2

2

22n

n

n n

n

n

n n

xi xj xi zi ij xz

xi zi zi x i j i

i x x z

i j x z x i A B C D E y y y y y n d

y y y -+==≠==≠===≠=??=

+

+-+

+ ???

∑∑∑

∑∑∑

∑∑∑其中,A B C D ,,,为惩罚因子,xi y 表示城市x 的第i 个神经元的状态,,xi yj w xi y 表示营区x 的第i 个神经元到营区y 的第j 个神经元的连接权。第一项表示仅当所有的营区最多只被访问一次时取得极小值0,第二项表示仅当每次最多只被访问一个营区时取得极小值0,第三项表示当且仅当所有的n 个营区一共被访问n 次时取得最小值0,第四项表示按照当前

的访问路线的安排,所需要走的路径的总长度。

相应的连接矩阵

,1

1

(1)(1)()

10

xi yj xy ij ij xy xy ji ji ij w A B C D d i j i j

δδδδδδ

δ+-=------+=?=?

≠?

1xi y ?=?

?0

对A B C D ,,,四个惩罚因子,通常取较大正数值。

利用Hopfield 网络求解TSP 问题,可以得到一组接近最优(也包括最优)的解,效果较为满意,表现出引人注目的潜在能力。

5.4.2 遗传算法

1. 遗传算法的简单原理

遗传算法(Genetic Algorithm ,GA )是一种基于自然群体遗传演化机制的高度并行、随机、自适应高效探索算法,它摒弃了传统的搜索方式,模拟自然界生物进化过程,采用人工进化的方式对目标空间进行随机化搜索。它将问题域中的可能解看作是群体的一个个体或染色体,并将每一个体编码成符号串形式,模拟达尔文的遗传选择和自然淘汰的生物进化过程,对群体反复进行基于遗传学的操作(遗传,交叉和变异),根据预定的目标适应度函数对每个个体进行评价,依据适者生存,优胜劣汰的进化规则,不断得到更优的群体,同时以全局并行搜索方式来搜索优化群体中的最优个体,求得满足要求的最优解。由于其具有健壮性,特别适合于处理传统搜索算法解决不好的复杂的和非线性问题。

我们先通过一个例子来了解遗传算法的原理:

假定我们要求函数2

()f x x =的极大值,其中x 为自然数,031x ≤≤。现在,我们将

每一个数看成一个生命体,通过进化,我们看谁能最后生存下来,谁就是我们所寻找的数。

城市x 在第i 个被访问 城市x 不在第i 个被访问

① 编码

我们将每一个数作为一个生命体,那么必须给其赋予一定的基因,这个过程叫做编码。我们可以把变量x 编码成5位长的二进制无符号整数表示形式,比如13x =可表示为01101的形式,也就是说,数13的基因为01101。

② 初始群体的生成 由于遗传的需要,我们必须设定一些初始的生物群体,让其作为生物繁殖的第一代,需要说明的是,初始群体的每个个体都是通过随机方法产生的,这样便可以保证生物的多样性和竞争的公平性。

③ 适应度评估检测

生物的进化服从适者生存,优胜劣汰的进化规则,因此,我们必须规定什么样的基因是“优”的,什么样的基因是“劣”的,在这里,我们称为适应度。显然,由于我们要求

2

()f x x =的最大值,因此,能使2

()f x x =较大的基因是优的,使2

()f x x =较小的基因是

劣的,因此,我们可以将2()f x x =定义为适应度函数,用来衡量某一生物体的适应程度。

④ 选择

接下来,我们便可以进行优胜劣汰的过程,这个过程在遗传算法里叫做选择。注意,选择应该是一个随机的过程,基因差的生物体不一定会被淘汰,只是其被淘汰概率比较大罢了,这与自然界中的规律是相同的。因此,我们可以采取赌论的方式来进行选择。

⑤ 交叉操作

接下来进行交叉繁殖,随机选出两个生物体,让其交换一部分基因,这样便形成了两个新的生物体,为第二代。

⑥ 变异

生物界中不但存在着遗传,同时还存在着变异,在这里我们也引入变异,使生物体的基因中的某一位以一定的概率发生变化,这样引入适当的扰动,能避免局部极值的问题。 以上的算法便是最简单的遗传算法,通过以上步骤不断地进化,生物体的基因便逐渐地趋向最优,最后便能得到我们想要的结果。

2. 基本遗传算法的步骤

从上面的例子中,我们便能得到遗传算法的一般步骤,

第1步: 编码。选择问题的一个编码,给出一个有N 个染色体的初始群体(1)pop ,

1t =;

第2步: 对群体()pop t 中的每个染色体()i pop t ,计算它的适应函数

()(())i f i fitness pop t =;

第3步:若停止规则满足,则算法停止;否则,计算概率

1

()

,1,,()

i N

i f i p i N f i ==

=∑

(5-143)

并以概率(5-143)从()pop t 中随机选一些染色体构成一个种群

(1){()|1,,}j new pop t pop t j N +== ;

第4步:通过交叉,交叉概率为c P ,得到有N 个染色体的(1)crosspop t +; 第5步:以一个较小的概率m p ,使得一个染色体的基因发生变异,形成

(1);1,mutpop t t t +=+一个新的群体()();pop t mutpop t =返回第2步。

种群的选取方式(5.143)称为轮盘赌。在实际应用中,交叉概率c P 一般取为: 0.75~0.95;变异概率m p 取为:0.005~0.01。一般流程如图图5.40所示:

图5.40 基本遗传算法的步骤

由此也可以看出,与传统的搜索方法相比,遗传算法是采用概率的变迁规则来指导搜索方向,而不采用确定性搜索规则。 对搜索空间没有任何特殊要求(如连通性、凸性等),只利用适应性信息,不需要 导数等其它辅助信息,适应范围更广。搜索过程是从一组解迭代到另一组解,采用同时处理群体中多个个体的方法,降低了陷入局部最优解的可能性,并易于并行化。

3. 遗传算法的基本特点

1)结构特点

遗传算法是以适应值提供的启发式信息进行搜索的,与其他启发式(模拟退火、爬山法、 神经网络等) 方法相比,在结构和工作过程方面的特点见表5.5。

表5.5遗传算法的结构特点

2)实验性能方面的特点

①高效性:遗传算法具有大范围全局搜索的特点,与问题领域无关,前期工作量比少;

②健壮性:遗传算法的搜索是用种群作为基本单元,采用3个不同作用的基本算子进行搜索的,解的结果随时间增加而趋于稳定,不受初始解的影响,而且不因实例的不同而变;

③通用性和灵活性:遗传算法可用于多种优化搜索问题,解题程序可以通用,针对不同的实例,适当调整算子参数,就可以使算法执行获得最佳的解结果和占用CPU机时的关系。

4. 遗传算法的应用

遗传算法主要是用来寻优,它具有很多优点:它能有效地避免局部最优现象,有及其顽强的鲁棒性,并且在寻优过程中,基本不需要任何搜索空间的知识和其他辅助信息等等。

为了理解遗传算法的思想,我们将前面的例子进行完,整个过程如下:

初始群体01101 11000 01000 10011

x的值13 24 8 19

适应度169 576 64 361

选择概率0.14 0.49 0.06 0.31

选择上的计数(来自赌轮) 1 2 0 1

交叉处0110|1 1100|0 11|000 10|011

下一代群体01100 11001 11011 10000

x的值12 25 27 16

适应度144 625 729 256

...............

下面再看一个基于遗传算法的最短路径求解问题:

最短路径问题可以用图论描述,现求解如图5.41所示的图15点加权有向图从顶点1到顶点15的最短路径。

图5.41 15点加权有向图

用遗传算法求解最短路径需经如下几个步骤: 第1步:染色体编码。

对于给定的图,将图中各顶点按顶点号自然排序,然后按此顺序将每个待选顶点作为染色体的一个基因,当基因值为1时,表示相应的顶点被选入该条路径中,否则反之。此染色体中的基因排列顺序即为各顶点在此通路中出现的先后顺序,染色体的长度应等于该图中顶点的个数。

第2步:计算每个个体适应度。

对具有n 个顶点的图,已知各顶点(,)i j v v 的边长度(,)i j d v v ,把1i v 到in v 间一条通路长

度定义为适应函数1

1

1

()(,)n i in r f i d v

v -==

∑,求该优化问题就是要寻找解m x ,使()m f x 最小。

第3步:选择操作。

选择作为交叉的双亲,是根据前代染色体的适应函数所确定的,质量好的个体,即从起点到终点路径长度最短的个体被选中的概率最大。

第4步:交叉与变异操作。

将被选中的两个染色体进行交叉操作的过程是先产生一个随机数,确定交叉点位于染色体的第几位基因上,然后在此位置进行部分基因互换。变异操作是将染色体中某位基因逆换,即由1变为0,或反之。变异的意义为在某条路径上去掉或增加某顶点,但这样做的结果不一定能使路径长度减少,也就是说有可能使各代中产生的比较好的方案在遗传过程中丢失,迟缓了获得最优解的速度。

为使算法尽可能快地获得更好的解,改善遗传算法的收敛性,在变异操作时,可增加个体寻优的自学习过程,即在某位基因互换后新算法所产生的染色体的适应函数值,若适应函数值更小,即获得路径更短,则保留;否则保持原来的解不变。若有连续/3N 次没有得到更好的解,则该过程结束。其中,N 表示从起点到终点的顶点数。

需要注意的是,交叉率不可太小,因为太小会延缓获得最优解的进度;变异率对规模大的优化问题影响较大,取值要小。群体中个体数的选取宜大一些。若太小有可能会得不到最优解。

经使用遗传算法,本例的最短路径解集为:

134612151211131512111314151341315134131415

→→→→→→→→→→→→→→→→→→→→→→→ 最短路径等于14。

目前,遗传算法所涉及的主要领域还有自动控制、规划设计、组合优化、图象处理、信号处理等。可见,遗传算法的应用研究已从初期的组合优化求解拓展到了许多更新、更工程化的应用方面,它是现代有关智能计算中的关键技术之一。

5.4.3 模拟退火算法

1. 模拟退火算法原理

模拟退火算法主要用于解决组合优化问题,它是模拟物理中金属物质的退火过程而开发的一种优化算法。

根据统计力学的知识,金属物体在加热到一定的温度后,它的所有的分子在状态空间V 中自由运动,在温度T ,分子停留在状态r 满足波兹曼(Boltzmann )概率分布:

()(){()}exp()

exp()s V

B B E r E s P E E r k T

k T

∈==-

-

式中()E r 为在状态r 时的能量,0B k >为波兹曼常数。

容易证明:在同一温度,能量越小,概率越大,即分子停留在能量小的状态的可能性要大;当温度温度相当高时,每个状态的概率基本相同,接近1V ,其中V 为状态空间中状态的个数;温度T 很低时,能量越低的状态的概率越高,总能量越小,0T →时总能量最小。

对于组合优化问题来说,组合优化问题解空间中的每一点都代表一个具有不同目标函数值的解。所谓优化,就是在解空间中寻找目标函数最小(大)解的过程。若把目标函数看成能量函数,某一控制参数视为温度T ,解空间当作状态空间,那么寻找基态的过程也就是求目标函数极小值的优化过程。

故将组合优化问题与金属物体退火类比,有表5.6:

表5.6 组合优化问题与金属物体退火类比

由以上类比可知,组合优化问题min{()|()0}z f x g x x D =≥∈,的求解问题类比为退火过程,其中D 是有限离散定义域。

2. 简单模拟退火算法的步骤 简单的模拟退火算法为:

第1步:任选一个初始解0x ;0i x x =:; 0k =;设定初始温度0m ax t t =:,终止温度final t ,

概率阈值ξ(也可设置为(0,1)random )。

第2步:若在该温度达到内循环停止条件(是否符合收敛条件),则到第3步;否则,

从邻域()i N x 中随机选一j x ,计算()()ij j i f f x f x ?=-;若0ij f ?≤,则i j x x =:,否则计算exp()ij k f t -?,若exp()ij k f ξ-?>,则i j x x =:

;否则重复第2步; 第3步:1()1k k t d t k k +==+:;:;若满足停止条件(是否小于温度终止阈值final t ),终止

计算;否则,回到第2步。

在该算法中,包含一个内循环和一个外循环。内循环是第2步,它表示在同一温度k t 时,

在一些状态随机搜索。外循环主要包括第3步的温度下降变化1()k k t d t +=:;迭代步数的变化

1k k =+:和停止条件。该算法的直观理解是:在一个给定的温度,搜索是从一个状态随机

地变化到另一个状态,每一个状态到达的次数服从一个概率分布。温度很低时,以概率1停留在最优解。

对于算法中一些参数的处理,常用的方法为:令初始温度0t K δ=(K 充分大),其中

max{()|}min{()|}f j j D f j j D δ=∈-∈;降温方法1001k k t t k αα+=≥<<,,

;每一温度的迭代长度可采用固定的步数,步数的选取与问题大小有关;终止温度final t 的选取可据经验决定或温度下降一定次数后都没有改善,即认为能量已降到最低,没必要再降温;算法的终止原则可以为零度法:即设定一个充分小的正数ε,当温度降至ε以下时,算法停止;或采用循环总数控制法,即设定总的温度下降次数,当温度迭代次数达到该设定值时,停止运算。

在实际应用中,模拟退火算法主要用于解决组合优化问题,典型的例子是用模拟退火算法来解决TSP 问题;模拟退火算法也经常用在神经网络中,二者结合使用。

遗传算法在BP神经网络优化中的应用.

遗传算法在 BP 神经网络优化中的应用 2O世纪80年代后期,多机器人协作成为一种新的机器人应用形式日益引起国内外学术界的兴趣与关注。一方面,由于任务的复杂性,在单机器人难以完成任务时,人们希望通过多机器人之间的协调与合作来完成。另一方面,人们也希望通过多机器人间的协调与合作,来提高机器人系统在作业过程中的效率。1943年,Maeullocu和 Pitts融合了生物物理学和数学提出了第一个神经元模型。从这以后,人工神经网络经历了发展、停滞、再发展的过程,时至今日正走向成熟,在广泛领域里得到了应用,其中将人工神经网络技术应用到多机器人协作成为新的研究领域。本文研究通过人工神经网络控制多机器人完成协作搬运的任务-3 J,并应用遗传算法来对神经网络进行优化。仿真结果表明,经过遗传算法优化后的搬运工作效率显著提高,误差降低。 1 人工神经网络 ANN)的基本原理和结构 人工神经网络(Artiifcial Neural Network,ANN)) 是抽象、简化与模拟大脑神经结构的计算模型,又称并行分布处理模型 J。ANN 由大量功能简单且具有自适应能力的信息处理单元——人工神经元按照大规模并行的方式通过一定的拓扑结构连接而成。ANN拓扑结构很多,其中采用反向传播(Back-Propa- gation,BP)算法的前馈型神经网络(如下图1所示),即BP人工神经网络,是人工神经网络中最常用、最成熟的神经网络之一。 BP网络模型处理信息的基本原理是:输入信号x;通过中间节点(隐层点 )作用于出节点,经过非线形变换,产生输出信Yk,网络训练的每个样本包括输入向量 x和期望输出量 T,网络输出值Y与期望输出值T之间的偏差,通过调整输入节点与隐层节点的联接强度取值w;;和隐层节点与输出节点之间的联接强度Y以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数 (权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。

基于遗传算法的BP神经网络MATLAB代码

用遗传算法优化BP神经网络的Matlab编程实例(转) 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=[1:19;2:20;3:21;4:22]'; YY=[1:4]; XX=premnmx(XX); YY=premnmx(YY); YY %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'tra inlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 save data2 XX YY % 是将 xx,yy 二个变数的数值存入 data2 这个MAT-file,initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数

遗传算法优化BP神经网络的实现代码-共6页

%读取数据 data=xlsread('data.xls'); %训练预测数据 data_train=data(1:113,:); data_test=data(118:123,:); input_train=data_train(:,1:9)'; output_train=data_train(:,10)'; input_test=data_test(:,1:9)'; output_test=data_test(:,10)'; %数据归一化 [inputn,mininput,maxinput,outputn,minoutput,maxoutput]=premnmx(input_tr ain,output_train); %对p和t进行字标准化预处理 net=newff(minmax(inputn),[10,1],{'tansig','purelin'},'trainlm'); net.trainParam.epochs=100; net.trainParam.lr=0.1; net.trainParam.goal=0.00001; %net.trainParam.show=NaN %网络训练 net=train(net,inputn,outputn); %数据归一化 inputn_test = tramnmx(input_test,mininput,maxinput); an=sim(net,inputn); test_simu=postmnmx(an,minoutput,maxoutput); error=test_simu-output_train; plot(error) k=error./output_train

遗传算法与神经网络的结合.

系统工程理论与实践 Systems Engineering——Theory & Practice 1999年第2期第19卷 vol.19 No.2 1999 遗传算法与神经网络的结合 李敏强徐博艺寇纪淞 摘要阐明了遗传算法和神经网络结合的必要性和可行性,提出用多层前馈神经网络作为遗传搜索的问题表示方式的思想。用遗传算法和神经网络结合的方法求解了短期地震预报问题,设计了用遗传算法训练神经网络权重的新方法,实验结果显示了遗传算法快速学习网络权重的能力,并且能够摆脱局部极点的困扰。 关键词遗传算法进化计算神经网络 On the Combination of Genetic Algorithms and Neural Networks Li Minqiang Xu Boyi Kou Jisong (Institute of Systems Engineering, Tianjin University, Tianjin 300072 Abstract In this paper, we demonstrate the necessity and possibility of combining neural network (NN with GAs. The notion of using multilayered feed forward NN as the representation method of genetic and the searching technique is introduced. We combine GA and NN for solving short term earthquake forecasting problem, design a novel method of using GAs to train connection weights of NN.The empirical test indicates the capability of the new method in fast learning of NN and escaping local optima. Keywords genetic algorithms; evolutionary computation; neural networks

介绍遗传算法神经网络

课程设计作业——翻译 课题:介绍遗传算法神经网络 穆姣姣 0808490233 物流08-班

介绍遗传算法神经网络 理查德·坎普 1. 介绍 一旦一个神经网络模型被创造出来,它常常是可取的。利用这个模型的时候,识别套输入变量导致一个期望输出值。大量的变量和非线性性质的许多材料模型可以使找到一个最优组输入变量变得困难。 在这里,我们可以用遗传算法并试图解决这个问题。 遗传算法是什么?遗传算法是基于搜索algo-rithms力学的自然选择和遗传观察到生物的世界。他们使用两个方向(\适者生存”),在这种条件下,探索一个强劲的功能。重要的是,采用遗传算法,这不是必需要知道功能的形式,就其输出给定的输入(图1)。 健壮性我们这么说是什么意思呢?健壮性是效率和效能之间的平衡所使用的技术在许多不同的环境中。帮助解释这个问题,我们可以比其他搜索和优化技术,如calculus-based,列举,与随机的求索。 方法Calculus-based假设一个光滑,无约束函数和要么找到点在衍生为零(知易行难)或者接受一个方向梯度与当地日当地一所高中点(爬山)。研究了这些技术已经被重点研究、扩展、修改,但展现自己缺乏的鲁棒性是很简单的。 考虑如图2所示的功能。利用Calculus-based在这里发现极值是很容易的(假定派生的函数可以发现…!)。然而,一个更复杂的功能(图3)显示该方法是当地——如果搜索算法,在该地区的一个开始,它就会错过低高峰目标,最高的山峰。 图1 使用网络神经算法没必要知道它的每一项具体功能。 一旦一个局部极大时,进一步改进需要一个随机的重启或类似的东西。同时,假设一个函数光滑,可导,并明确知道很少尊重现实。许多真实世界充满了间断模型和设置在嘈杂的多通道搜索空间(图4)。 虽然calculus-based方法在某些环境中至非常有效的,但内在的假

遗传算法优化的BP神经网络建模[精选.]

遗传算法优化的BP神经网络建模 十一月匆匆过去,每天依然在忙碌着与文档相关的东西,在寒假前一个多月里,努力做好手头上的事的前提下多学习专业知识,依然是坚持学习与素质提高并重,依然是坚持锻炼身体,为明年找工作打下基础。 遗传算法优化的BP神经网络建模借鉴别人的程序做出的仿真,最近才有时间整理。 目标: 对y=x1^2+x2^2非线性系统进行建模,用1500组数据对网络进行构建网络,500组数据测试网络。由于BP神经网络初始神经元之间的权值和阈值一般随机选择,因此容易陷入局部最小值。本方法使用遗传算法优化初始神经元之间的权值和阈值,并对比使用遗传算法前后的效果。 步骤: 未经遗传算法优化的BP神经网络建模 1、随机生成2000组两维随机数(x1,x2),并计算对应的输出y=x1^2+x2^2,前1500组数据作为训练数据input_train,后500组数据作为测试数据input_test。并将数据存储在data中待遗传算法中使用相同的数据。 2、数据预处理:归一化处理。 3、构建BP神经网络的隐层数,次数,步长,目标。 4、使用训练数据input_train训练BP神经网络net。 5、用测试数据input_test测试神经网络,并将预测的数据反归一化处理。 6、分析预测数据与期望数据之间的误差。 遗传算法优化的BP神经网络建模 1、读取前面步骤中保存的数据data; 2、对数据进行归一化处理; 3、设置隐层数目; 4、初始化进化次数,种群规模,交叉概率,变异概率 5、对种群进行实数编码,并将预测数据与期望数据之间的误差作为适应度函数; 6、循环进行选择、交叉、变异、计算适应度操作,直到达到进化次数,得到最优的初始权值和阈值; 7、将得到最佳初始权值和阈值来构建BP神经网络; 8、使用训练数据input_train训练BP神经网络net; 9、用测试数据input_test测试神经网络,并将预测的数据反归一化处理; 10、分析预测数据与期望数据之间的误差。 算法流程图如下:

神经网络与遗传算法

5.4 神经网络与遗传算法简介 在本节中,我们将着重讲述一些在网络设计、优化、性能分析、通信路由优化、选择、神经网络控制优化中有重要应用的常用的算法,包括神经网络算法、遗传算法、模拟退火算法等方法。用这些算法可以较容易地解决一些很复杂的,常规算法很难解决的问题。这些算法都有着很深的理论背景,本节不准备详细地讨论这些算法的理论,只对算法的原理和方法作简要的讨论。 5.4.1 神经网络 1. 神经网络的简单原理 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model),是对人脑或自然神经网络(Natural Neural Network)若干基本特性的抽象和模拟。人工神经网络以对大脑的生理研究成果为基础的,其目的在于模拟大脑的某些机理与机制,实现某个方面的功能。所以说, 人工神经网络是由人工建立的以有向图为拓扑结构的动态系统,它通过对连续或断续的输入作出状态相应而进行信息处理。它是根据人的认识过程而开发出的一种算法。假如我们现在只有一些输入和相应的输出,而对如何由输入得到输出的机理并不清楚,那么我们可以把输入与输出之间的未知过程看成是一个“网络”,通过不断地给这个网络输入和相应的输出来“训练”这个网络,网络根据输入和输出不断地调节自己的各节点之间的权值来满足输入和输出。这样,当训练结束后,我们给定一个输入,网络便会根据自己已调节好的权值计算出一个输出。这就是神经网络的简单原理。 2. 神经元和神经网络的结构 如上所述,神经网络的基本结构如图5.35所示: 隐层隐层2 1 图5.35 神经网络一般都有多层,分为输入层,输出层和隐含层,层数越多,计算结果越精确,但所需的时间也就越长,所以实际应用中要根据要求设计网络层数。神经网络中每一个节点叫做一个人工神经元,他对应于人脑中的神经元。人脑神经元由细胞体、树突和轴突三部分组成,是一种根须状蔓延物。神经元的中心有一闭点,称为细胞体,它能对接受到的信息进行处理,细胞体周围的纤维有两类,轴突是较长的神经纤维,是发出信息的。树突的神经纤维较短,而分支众多,是接收信息的。一个神经元的轴突末端与另一神经元的树突之间密

遗传算法优化BP神经网络权值和阈值(完整版)

https://www.sodocs.net/doc/448864009.html,/viewthread.php?tid= 50653&extra=&highlight=%E9%81%97%E4%BC%A0%E7% AE%97%E6%B3%95&page=1 Matlab遗传算法优化神经网络的例子(已调试成功)最近论坛里问到用遗传算法优化神经网络问题的人很多,而且论坛里有很多这方面的代码。但可惜的是所有代码都或多或少有些错误!最郁闷的莫过于只有发帖寻求问题答案的探索者,却很少有对问题进行解答的victor。本人在论坛里看到不少会员对能运行成功的遗传算法优化神经网络例子的需求是多么急切,我也深有感触!现把调试成功的一个例子贴出来,供大家参考!(本例子是基于一篇硕士论文里的代码为蓝本改 编的,此处就不再注明作者了。)遗传算法优化bp.rar (3.34 KB) 注:该代码是由会员“书童”耗费了一整天的时间调试成功的,在此再次对我们的“书童”同学乐于助人的高尚品德致敬,并对其深表感谢!PS:参考会员“ilovexyq”意见,先对其做以补充。该网络为遗传算法 优化bp的一个典型例子,输入为7,输出为7,隐层为25。该网络输入输出数据就是为了说明问题而随便加的,没有实际意义。如用于自己的实际问题,把数据替换并根据需要改一下网络结构就行了。

PS:如有问题,请先阅读此贴: https://www.sodocs.net/doc/448864009.html,/thread-52587-1-1.html### [本帖最后由 yuthreestone 于 2009-10-15 10:52 编辑] 搜索更多相关主题的帖子: 调试例子算法Matlab神经网络 https://www.sodocs.net/doc/448864009.html,/thread-52587-1-1.html 遗传算法优化BP神经网络权值和阈值(完整版) 会员renjia前一段时间分享的程序,地址如下: https://www.sodocs.net/doc/448864009.html,/viewthread.php?tid=50653&extra=&highlight=% E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95&page=1: (1)renjia提供的程序存在一些小错误,主要是设计的bp网络是两个隐含层,但编码的时候只有一个隐含层。修改后的程序将bp改成了单隐层以确保一致;(2)很多会员不知道该如何运行程序,各个m文件之间的关系弄不清楚。修改后的程序共包含三个m文件: 其中,主程序为ga_bp.m,适应度函数为gabpEval.m,编解码子函数为gadecod.m 注意:使用前需安装gaot工具箱(见附件),上述三个文件需放在同一文件夹中且将该文件夹设置为当前工作路径。 运行程序时只需运行主程序ga_bp.m即可。 (3)此程序仅为示例,针对其他的问题,只需将数据修改即可,但需注意变量名保持一致,尤其是全局变量修改时(在gadecod.m和gabpEval.m中也要修改)(4)gaot工具箱如何安装? 点击file选择set path,在弹出的对话框中选择add folder,将gaot文件夹添加进去,然后点击save保存即可。

基于遗传算法的BP神经网络优化算法

案例3:基于遗传算法的BP神经网络优化算法 ******************************************************************************* **** 论坛申明: 1 案例为原创案例,论坛拥有帖子的版权,转载请注明出处(MATLABSKY论坛,《MATLAB 智能算法30个案例分析》 2 案例内容为书籍原创内容,内容为案例的提纲和主要内容。 3 作者长期驻扎在板块,对读者和会员问题有问必答。 4 案例配套有教学视频和完整的MATLAB程序,MATLAB程序在购买书籍后可以自由下载,教学视频需要另外购买。 MATLAB书籍预定方法和优惠服务:https://www.sodocs.net/doc/448864009.html,/thread-9258-1-1.html 点击这里,预览该案例程序:https://www.sodocs.net/doc/448864009.html,/znsf/view/s3/GABPMain.html 已经预定的朋友点此下载程序源代码:https://www.sodocs.net/doc/448864009.html,/thread-11921-1-1.html * ******************************************************************************* ** 1、案例背景 BP网络是一类多层的前馈神经网络。它的名字源于在网络训练的过程中,调整网络的权值的算法是误差的反向传播的学习算法,即为BP学习算法。BP算法是Rumelhart等人在1986年提出来的。由于它的结构简单,可调整的参数多,训练算法也多,而且可操作性好,BP 神经网络获得了非常广泛的应用。据统计,有80%~90%的神经网络模型都是采用了BP网络或者是它的变形。BP网络是前向网络的核心部分,是神经网络中最精华、最完美的部分。BP神经网络虽然是人工神经网络中应用最广泛的算法,但是也存在着一些缺陷,例如: ①、学习收敛速度太慢; ②、不能保证收敛到全局最小点; ③、网络结构不易确定。 另外,网络结构、初始连接权值和阈值的选择对网络训练的影响很大,但是又无法准确获得,针对这些特点可以采用遗传算法对神经网络进行优化。 本节以某型号拖拉机的齿轮箱为工程背景,介绍使用基于遗传算法的BP神经网络进行齿轮箱故障的诊断。

神经网络和遗传算法中英文对照外文翻译文献

中英文对照外文翻译 (文档含英文原文和中文翻译) 基于神经网络和遗传算法的模糊系统的自动设计摘要 本文介绍了基于神经网络和遗传算法的模糊系统的设计,其目的在于缩短开发时间并提高该系统的性能。介绍一种利用神经网络来描绘的多维非线性隶属函数和调整隶属函数参数的方法。还提及了基于遗传算法的集成并自动化三个模糊系统的设计平台。 1 前言 模糊系统往往是人工手动设计。这引起了两个问题:一是由于人工手动设计是费时间的,所以开发费用很高;二是无法保证获得最佳的解决方案。为了缩短开发时间并提高模糊系统的性能,有两种独立的途径:开发支持工具和自动设计方法。前者包括辅助模糊系统设计的开发环境。许多环境已具有商业用途。后者介绍了自动设计的技术。尽管自动设计不能保证获得最优解,他们仍是可取的手工技巧,因为设计是引导走向和依某些标准的最优解。 有三种主要的设计决策模糊控制系统设计: (1)确定模糊规则数, (2)确定隶属度函数的形式。 (3)确定变化参数 再者,必须作出另外两个决定: (4)确定输入变量的数量 (5)确定论证方法 (1)和(2)相互协调确定如何覆盖输入空间。他们之间有高度的相互依赖性。(3)用以确定TSK(Takagi-Sugeno-Kang)模式【1】中的线性方程式的系数,或确定隶属度函数以及部分的Mamdani模型【2】。(4)符合决定最低套相关的输入变量,计算所需的目标决策或控制的价值观。像逆向消除(4)和信息标准的技术在此设计中经常被利用。(5)相当于决定使用哪一个模糊算子和解模糊化的方法。虽然由数种算法和模糊推理的方法已被提出,仍没有选择他们标准。[5]表明动态变化的推理方法,他依据这个推理环境的结果在性能和容错性高于任何固定的推理的方法。 神经网络模型(以更普遍的梯度)和基于遗传算法的神经网络(最常见的梯度的基础)和遗传算法被用于模糊系统的自动设计。基于神经网络的方法主要是用来设计模糊隶属度函数。这有两种主要的方法; (一)直接的多维的模糊隶属度函数的设计: 该方法首先通过数据库确定规则的数目。然后通过每个簇的等级的训练来确定隶属函

神经网络和遗传算法有什么关系

神经网络和遗传算法有什么关系? 神经网络的设计要用到遗传算法,遗传算法在神经网络中的应用主要反映在3 个方面:网络的学习,网络的结构设计,网络的分析。 1.遗传算法在网络学习中的应用 在神经网络中,遗传算法可用于网络的学习。这时,它在两个方面起作用 (1)学习规则的优化 用遗传算法对神经网络学习规则实现自动优化,从而提高学习速率。 (2)网络权系数的优化 用遗传算法的全局优化及隐含并行性的特点提高权系数优化速度。 2.遗传算法在网络设计中的应用 用遗传算法设计一个优秀的神经网络结构,首先是要解决网络结构的编码问题;然后才能以选择、交叉、变异操作得出最优结构。编码方法主要有下列3种: (1)直接编码法 这是把神经网络结构直接用二进制串表示,在遗传算法中,“染色体”实质上和神经网络是一种映射关系。通过对“染色体”的优化就实现了对网络的优化。 (2)参数化编码法 参数化编码采用的编码较为抽象,编码包括网络层数、每层神经元数、各层互连方式等信息。一般对进化后的优化“染色体”进行分析,然后产生网络的结构。 (3)繁衍生长法 这种方法不是在“染色体”中直接编码神经网络的结构,而是把一些简单的生长语法规则编码入“染色体”中;然后,由遗传算法对这些生长语法规则不断进行改变,最后生成适合所解的问题的神经网络。这种方法与自然界生物地生长进化相一致。 3.遗传算法在网络分析中的应用

遗传算法可用于分析神经网络。神经网络由于有分布存储等特点,一般难以从其拓扑结构直接理解其功能。遗传算法可对神经网络进行功能分析,性质分析,状态分析。 遗传算法虽然可以在多种领域都有实际应用,并且也展示了它潜力和宽广前景;但是,遗传算法还有大量的问题需要研究,目前也还有各种不足。首先,在变量多,取值范围大或无给定范围时,收敛速度下降;其次,可找到最优解附近,但无法精确确定最扰解位置;最后,遗传算法的参数选择尚未有定量方法。对遗传算法,还需要进一步研究其数学基础理论;还需要在理论上证明它与其它优化技术的优劣及原因;还需研究硬件化的遗传算法;以及遗传算法的通用编程和形式等。

用遗传算法优化BP神经网络的Matlab编程实例

用遗传算法优化BP神经网络的 Matlab编程实例 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % % 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=premnmx(XX); YY=premnmx(YY); %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tan sig','purelin'},'trainlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数 %下面调用gaot工具箱,其中目标函数定义为gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],ini tPpp,[1e-6 1 1],'maxGenTerm',gen,... 'normGeomSelect',[],['arithXover'],[2],'n onUnifMutation',[2 gen 3]); %绘收敛曲线图 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-'); xlabel('Generation'); ylabel('Sum-Squared Error'); figure(2) plot(trace(:,1),trace(:,3),'r-'); hold on plot(trace(:,1),trace(:,2),'b-'); xlabel('Generation'); ylabel('Fittness'); %下面将初步得到的权值矩阵赋给尚未开始训练的BP 网络 [W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); {2,1}=W1; {3,2}=W2; {2,1}=B1; {3,1}=B2; XX=P; YY=T; %设置训练参数 %训练网络 net=train(net,XX,YY); 程序二:适应值函数 function [sol, val] = gabpEval(sol,options) % val - the fittness of this individual % sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation] load data2 nntwarn off XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 for i=1:S, x(i)=sol(i);

基于遗传算法的BP神经网络的应用

基于遗传算法的BP神经网络的应用 ----非线性函数拟合 摘要人工神经网络在诸多领域得到应用如信息工程、自动控制、电子技术、目标识别、数学建模、图像处理等领域,并且随着神经网络算啊发的不断改进以及其他新算法的结合,使其应用的领域越来越广。BP神经网络是目前神经网络领域研究最多应用最广的网络,但BP神经网络学习算法易陷入局部极小的缺陷,本文采用遗传算法来优化BP神经网络的性能。首先采用遗传算法来优化BP神经网络的权值和阈值,然后将这些优化值赋给网络得到优化的BP神经网络,最后用MATLAB仿真平台,对非线性函数的逼近拟合和极值寻优问题进行实验。数值仿真结果表明:经遗传算法优化的BP神经网络能有效地避免原始BP神经网络容易出现的局部极小的缺陷,且具有收敛速度快和精度高等优点。 关键词:BP神经网络遗传算法 MATLAB 结构优化 Abstract— In recent years, artificial neural network gradually attention has been paid into the hot area of research in many fields have been involved in electronic applications such as other fields have a wide range of applications, and also continued to expand its applications. To alleviate the shortcoming of easily sinking into the local minimum existing in the BP neural network, the paper exploits the genetic algorithm to optimize the BP neural network. First of all, the genetic algorithm is utilized to optimize the weight values as well as the threshold values of the BP neural network. Subsequently, by using the optimized weight values and threshold values, we are able to get the improved BP neural network. Furthermore, we employ the simulation data to measure the performance of the improved BP neural network. The numerical results indicate that the optimized BP neural network can effectively overcome the local minimum of the original BP neural network and outperform the original BP neural network in the aspects of convergence speed and

利用MATLAB实现遗传算法和MATLAB神经网络工具箱的使用

实验一利用MATLA实现遗传算法 一、实验目的 1、熟悉MATLA语言编程环境 2、掌握MATLA语言命令 3、学会利用MATLA编程实现遗传算法 二、实验原理 MATLA是美国Math Works公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,MATLA可以进 行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计等领域。通过学习遗传算法原理,使用 MATLA编写程序,实现其求解策略。 三、实验内容 通过MATLA编程,利用遗传算法求解: f (x) 200exp( 0.05x)sin(x), 求maxf (x),x [-2,2] . 三、实验要求 1 、程序设计 2、调试 3、实验结果

4、撰写实验报告 实验二MATLAB申经网络工具箱的使用 一、实验目的 1、掌握MATLA语言命令 2、提高MATLA程序设计能力 3、学会使用MATLA申经网络工具箱 二、实验原理 MATLA语言是Math Works公司推出的一套高性能计算机编程语言,集数学计算、图形显示、语言设计于一体,其强大的扩展功能为用户提供了广阔的应用空间。它附带有 30多个工具箱,申经网络工具箱就是其中之一。利用该工具箱可以方便的构建申经网络的结构模型、设计、训练等,实现申经网络算法。 三、实验内容 通过MATLA编程,利用神经网络工具箱预测公路运量: 公路运量主要包括公路客运量和公路货运量两个方面。据研究,某地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,上表给出了该地区20年的公路运量相关数据。根据有关部门数据,该地区2010和2011 年的人数分别为73.39 和75.55 万人,机动车数量分别为3.9635 和4.0975 万辆,公路面积分别为0.9880和1.0268万平方千米。请利用BP网络预测该地区2010和2011 年的公路客运量和公路货运量。

利用MATLAB实现遗传算法和MATLAB神经网络工具箱的使用

实验一利用MATLAB实现遗传算法 一、实验目的 1、熟悉MATLAB语言编程环境 2、掌握MATLAB语言命令 3、学会利用MATLAB编程实现遗传算法 二、实验原理 MATLAB是美国Math Works公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计等领域。通过学习遗传算法原理,使用MATLAB编写程序,实现其求解策略。 三、实验内容 通过MATLAB编程,利用遗传算法求解: x x =求[-2,2] f- ) ( f. x , max∈ ex p 05 x sin( ), .0 ) (x ) 200 ( 三、实验要求 1、程序设计 2、调试 3、实验结果 4、撰写实验报告

实验二 MATLAB神经网络工具箱的使用 一、实验目的 1、掌握MATLAB语言命令 2、提高MATLAB程序设计能力 3、学会使用MATLAB神经网络工具箱 二、实验原理 MATLAB语言是Math Works公司推出的一套高性能计算机编程语言,集数学计算、图形显示、语言设计于一体,其强大的扩展功能为用户提供了广阔的应用空间。它附带有30多个工具箱,神经网络工具箱就是其中之一。利用该工具箱可以方便的构建神经网络的结构模型、设计、训练等,实现神经网络算法。 三、实验内容 通过MATLAB编程,利用神经网络工具箱预测公路运量: 公路运量主要包括公路客运量和公路货运量两个方面。据研究,某地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,上表给出了该地区20年的公路运量相关数据。根据有关部门数据,该地区2010和2011年的人数分别为73.39和75.55万人,机动车数量分别为3.9635和4.0975万辆,公路面积分别为0.9880和1.0268万平方千米。请利用BP网络预测该地区2010和2011年的公路客运量和公路货运量。

用遗传算法优化BP神经网络的Matlab编程实例

用遗传算法优化BP神经网络的M a t l a b编程实例 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- %??GABPNET.m %??使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=premnmx(XX); YY=premnmx(YY); %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin' },'trainlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数 %下面调用gaot工具箱,其中目标函数定义为gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,... ??'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMuta tion',[2 gen 3]); %绘收敛曲线图 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-'); xlabel('Generation'); ylabel('Sum-Squared Error'); figure(2) plot(trace(:,1),trace(:,3),'r-'); hold on plot(trace(:,1),trace(:,2),'b-'); xlabel('Generation'); ylabel('Fittness'); %下面将初步得到的权值矩阵赋给尚未开始训练的BP 网络 [W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); net.LW{2,1}=W1; net.LW{3,2}=W2; net.b{2,1}=B1; net.b{3,1}=B2; XX=P; YY=T; %设置训练参数 %训练网络 net=train(net,XX,YY); 程序二:适应值函数 function [sol, val] = gabpEval(sol,options) % val - the fittness of this individual % sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation] load data2 nntwarn off XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 for i=1:S, ? ?x(i)=sol(i); end; [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x); 程序三:编解码函数 function [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x) load data2

神经网络和遗传算法的结合

遗传算法与神经网络的结合 李敏强 徐博艺 寇纪淞 摘要 阐明了遗传算法和神经网络结合的必要性和可行性,提出用多层前馈神经网络作为遗传搜索的问题表示方式的思想。用遗传算法和神经网络结合的方法求解了短期地震预报问题,设计了用遗传算法训练神经网络权重的新方法,实验结果显示了遗传算法快速学习网络权重的能力,并且能够摆脱局部极点的困扰。 关键词 遗传算法 进化计算 神经网络 On the Combination of Genetic Algorithms and Neural Networks Li Minqiang Xu Boyi Kou Jisong (Institute of Systems Engineering, Tianjin University, Tianjin 300072) Abstract In this paper, we demonstrate the necessity and possibility of combining neural network (NN) with GAs. The notion of using multilayered feed forward NN as the representation method of genetic and the searching technique is introduced. We combine GA and NN for solving short term earthquake forecasting problem, design a novel method of using GAs to train connection weights of NN.The empirical test indicates the capability of the new method in fast learning of NN and escaping local optima. Keywords genetic algorithms; evolutionary computation; neural networks 1引言 智能可以分为三个层次:高层次的是生物智能(BI),其次是人工智能(AI), 处于低层次的是计算智能(CI)。 计算智能是国际上新近提出的学科概念,在计算智能中,计算的概念是传统计算概念的拓展,计算对象不仅局限于数和字符,运算符号也不再局限于加减乘除等运算,在这个范畴内的加减乘除也需赋于新的含义。但一般来说,AI偏重于逻辑推理,而CI则偏重于数值计算。 目前,计算智能正处于迅猛发展的阶段,其主要技术包括模糊技术、神经网络、进化计算等[5]。这几项技术各自均有了数十年的历史,但当时这些方法并未受到足够的重视,一是当时这些方法还不很成熟,二是受当时计算机软硬件的限制,而这些方法一般需要较大的计算量,难以取得实际应用。随着计算机技术的发展和普及,它们在最近十年得到了突飞猛进的发展,引起了诸多领域专家学者的关注,成为一个跨学科的研究热点。近年来,这些方法呈互相融合的趋势[3],它们之间的相互补充可增强彼此的能力,从而获得更有力的表示和解决实际问题的能力。如对模糊神经网络、模糊遗传算法、模糊分类器系统、用遗传算法优化模糊系统的隶属度函数及神经网络的进化设计方法等的研究都

相关主题