遗传算法

遗传算法
遗传算法

一、遗传算法的原理

1.自然遗传与遗传算法

①遗传:子代总是和亲代具有相同或相似的性状。有了这个特征物种才能稳定存在

②变异:亲代和子代之间已经子代不同个体之间的差异,称为变异,变异是随机发生的,变异的选择和积累是生命多样性的根源。

③生存斗争和逝者生存:具有适应性变异的个体被保留下来,不具有适应性变异的个体被淘汰,通过一代代的生存环境的选择作用,性状逐渐与祖先有所不同,演变成新的物种。

④自然界对进化中的生物群体提供及时的反馈信息,或称为外界对生物的评价,评价反映了生物的生存机会。

⑤生物进化是一个不断循环的过程,本质上是一种优化过程。

⑥遗传物质以基因的形式排列在染色体上,每个基因有特殊的位置并控制生物的某些特性。不同的基因组合产生的个体对环境的适应性不一样。(对应具体问题,把问题可能解编码成向量---染色体,向量的每个元素就是基因)例如:

个体染色体

9 ---- 1001

(2,5,6)---- 010 101 110

2.遗传算法

①将“优胜劣汰,适者生存”的生物进化原理引入到求解优化问题中。

②从某一随机产生的初始群体出发

③按照变异等遗传操作规则不断地迭代

④根据每一个体的适应度,保留优良品种,引导搜索过程向最优解逼近。

⑤在这一过程中,通过随机重组编码位串中重要的基因,使新一代的位串集合优于老一代的位串集合,群体中的个体不断进化,逐渐接近最优解,最终达到求解问题的目的。

二、遗传算法的步骤

1.步骤:

①选择编码策略,把参数集合X和域转换成位串结构空间S;

②定义适应函数f(X);

③确定遗传策略,包括选择群体大小n,选择、交叉、变异方法,以及确定交叉概率、变异概率等遗传参数;

④随机初始化生成群体P;

⑤计算群体中个体位串解码后的适应值f(X)

⑥按照遗传策略,运用选择(选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的)、交叉(所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子)和变异算子作用于群体(对群体中的个体串的某些基因座上的基因值作变动),形成下一代群体;

⑦判断群体性能是否满足某一个指标,或者已完成预定迭代次数,不满足则返回步骤6,或者修改遗传策略再返回步骤6。

2.流程图:

三、遗传编码

1. 二进制编码

使用0,1组成编码符号串,它所构成的个体基因是一个二进制编码符号串。串的长度取决于求解的精度。

例如假设求解精度为保留六位小数,对于区间 [-1, 2] ,其长度为 3,则必须将该区间分为 3?106 等分。因为 221<3?106<222,所以编码所用的二进制串至少需要22位。

二进制串(b21b20b19…b1b0)与 [a, b] 内实数的一一映射

原始的二进制编码的搜索能力差表现在如下:

交叉:相近个体的交叉,新个体却远离原先个体。

变异:二进制编码染色体某一位的微小变化,新个体却产生了较大变化。 二进制编码的优点:

① 编码、解码操作简单易行

② 交叉、变异等遗传操作便于实现

③ 符合最小字符集编码原则

④ 利用模式定理对算法进行理论分析。

二进制编码的缺点是:二进制编码存在着连续函数离散化时的映射误差。个体长度较短时,可能达不到精度要求,而个体编码长度较长时,虽然能提高精度,但却使遗传算法的搜索空间急剧扩大。

2. 实数编码

实数编码是指染色体的每一位采用某一范围内的一个实数进行表示。 二进制串

十进制数 [a, b] 内实数 b 21b 20b 19…b 1b

0 22

'21

b a x a x -=+?-210'2

i i i x b ==?∑2'=(1000101110110101000111)=2288967

x 222(1)1'0.63719721x x --=-+?=-例. 二进制串 a=<1000101110110101000111>

实数编码的优点:

①实数编码遗传算法更适合于多维、高精度数值问题

②采用实数编码可以是遗传算法更接近于待解问题空间。

③实数编码能够表达十分大的域;给定长度的二进制编码,增大域范围以牺牲精度为代价

④实数编码更容易设计处理非常规约束优化问题

⑤便于设计针对问题的专门知识的知识型遗传算子

3.符号编码

符号编码方法是指个体染色体编码串中的基因值取自一个无数值意义,而只有代码含义的符号集。

这个符号集可以是一个字母表{A,B,C,D,.....},可以是一个数字序号表,{1,2,3,4,......},还可以是一个代码表,如{A1,A2,A3,A4,.....},对于使用符号编码的遗传算法,需要认真设计交叉、变异等遗传操作,以满足问题的各种约束要求,才能提高算法的搜索性能。

符号编码的主要优点:

①便于在遗传算法中利用所求问题的专门知识

②便于遗传算法与相关近似算法之间的混合使用

③符合有意义积木块原则

四、适应函数(评价函数)

1.适应函数的作用

用GA求解函数最优化问题时,是依靠适应度函数值的大小来区分每个个体的优劣的。每个个体的适应度函数值的大小确定了他们是继续繁衍还是消亡。适应度值大的个体将有更多的机会繁衍下一代,通常取高于群体平均适应度值的个体做交叉,而低于平均适应度值的个体做变异,从而一代一代地提高群体的平均适应度值和最优个体的性能. 可见,适应度函数在GA中起着决定性作用。

2.几个适应函数介绍

在函数优化中,适应度函数可由目标函数变换得到,在实际问题中,适应度函数与问题的目标函数是不完全一致的,如有的问题的目标是要求得最小值(费用问题) ,而有的问题的目标是要求得最大值(利润函数) . 因此在不少场合,将目标函数映射成求最大值形式而且函数值非负的适应度函数是必要的.一般而言有以下定义形式:

①直接以待求解的目标函数转化为适应度函数,即

若目标函数为最大化问题f ( x) = g ( x) ;

若目标函数为最小化问题f ( x) = - g ( x) .

这种适应度函数简单直观,但实际应用时,存在以下 2 个问题:第一,不满足常用的赌盘选择非负的要求;第二,某些待求解的函数值可能彼此相差十分悬殊,由此得到的平均适应度值可能不利于体现群体的平均性能,将影响算法的效果.

②若目标函数为最小问题,则

其中系数c max存在多种选择方法,它可以是一个合适的输入值,也可以采用迄今为止进化过程中g ( x) 的最大值,但c max最好与群体无关.由于参数c max需事先预估, 不可能精确, 其结果常常使适应度函数不灵敏,影响了算法的性能.

若目标函数为最大问题,则

其中系数c min存在多种选择方法,它可以是一个合适的输入值,也可以采用迄今为止进化过程中g ( x) 的最小值,但c min 最好与群体无关.

③若目标函数为最小问题,则

若目标函数为最大问题,则

上两式c 为目标函数界限的保守估计值。由于事先不知道min g ( x) ,故c 的取值只能采取保守的估计值,存在和第二种适应度函数相似的问题。适应度函数对GA 的收敛速度和结果影响很大。如果过分强调当前的较优点,就可能很快降低种群的多样性,造成不成熟收敛;如果对当前较优点强调不够,算法就很容易丢失已经找到的较优点信息,从而不能在合理的时间内收敛到较好的点。

五、遗传算子

1.选择算子

①赌轮选择法

个体被选中的概率与其适应度大小成比例,对于一个规模为N的种群S,按每个染色体x i∈S的选择概率P(x i)所决定的选中机会, 分N次从S中随机选定N 个染色体, 并进行复制。这里的选择概率P(x i)的计算公式为

如图为每个串的概率,每转动一次轮盘,指针落入串i 所占区域的概率为P(x i),显然,该值越大,串i被选取的概率越大。

具体步骤:

a. 计算累积概率:

b. 在[0, 1]区间内产生一个均匀分布的随机数r 。

c. 若r ≤q 1,则染色体x 1被选中。

d. 若q k-1

② Boltzmann 选择

在群体的进化过程中,早期希望较差的个体也有一定的生存机会,使得群体保持较高的多样性;后期希望GA 缩小搜索邻域,加快当前最优解改善的速度。Boltzmann 选择可以动态调整群体进化过程中的选择压力,其个体选择概率为:

∑==n j T x f T

x f i j i e

e x p 1/)(/)()( i=1,2,3,…,n

其中T>0,它随着迭代的进行逐渐缩小,选择压力随之升高。

③ 排序选择

所谓排序选择方法是指在计算每个个体目标值后,根据目标值的大小顺序对群体中的个体进行排序,适应度仅取决于排序后的个体在种群中的位置,并且每个个体的选择概率等于根据它所处的位置按照某种规律计算出的概率。最常用的排序选择方法是线性排序选择。

在线性排序选择中,设群体规模为N ,且满足个体适应度值降序排列;当前群体的最佳个体在选择操作后的期望数量为η+ ,即η+ = N × P s (1);最差个体在选择操作后的期望数量为η? ,即η? = N × P s (N );其他个体的

期望数量按等差序列计算,即

,则

因此,线性排序的选择概率为

可以导出 。要求

,

,因此,

。当 时,最差个体在下一代生存的期

望数量为0

,群体选择压力最大;当

时,选择方式为按均匀分布的

随机选择,群体选择压力最小。

④联赛选择

联赛选择的基本思想是从当前群体中随机选择一定数量的个体,将其中适应值最大的个体保存到下一代。反复执行该过程,直到下一代个体数量达到预定的群体规模。

2.交叉算子

选择算子是GA 中优胜劣汰的体现; 交叉的目的是将父本中优良的基因优化组合传至下一代, 同时产生新的寻优空间。它通过在两个父代个体的基因位中随机选取一个或多个基因位作为交叉的位置, 然后交换父代个体部分结构组成新个体。常用的交叉算子有:一点交叉、两点交叉、一致交叉。

①一点交叉:在父代个体串中随机设定一个交叉点, 然后相互交换两个个体交叉位置右边部分基因, 形成两个被称为子代的新个体。

例:假设父代X = 10101101, Y= 11111001,则进行一点交叉操作

若随机地选取交叉位置2, 产生的子代X = 10111001, Y= 11101101;若交叉位置为6, 则X = 10101101, Y = 11111001。

一点交叉操作的信息量较小,交叉点位置的选择可能带来较大偏差。故实际应用中采用较多的是多点交叉。

②两点交叉:在父代个体串中随机设定两个交叉点, 然后相互交换父代个体两个交叉点之间的部分基因, 形成两个新个体。

③一致交叉:染色体位串上的每一位按相同的概率进行随机均匀交叉。具体位置由一个随机生成的与个体编码串等长的交叉掩码W=ω1ω2…ωL决定。

若ωi=0,则A'在第i个基因座上的基因值继承A的对应基因值,B'在第i个基因座上的基因值继承B的对应基因值。

若ωi=l,则A'在第i个基因座上的基因值继承B的对应基因值,B'在第i个基因座上的基因值继承A的对应基因值。

例:掩码:10100101 A=10101100 B=01010101

则:A’ =11110101 B’=00001101

3.变异算子

变异操作模拟自然界生物进化中染色体上某位基因发生的突变现象。遗传算法中变异算子是指按照变异概率P m(小概率)将个体染色体编码串中的某些基因座上的基因值改变从而形成新的个体。

对二进制编码是以变异概率P m把某个基因位置上的基因值取反;对于浮点数编码的个体,若某一变异点的基因值的取值范围为[U min,U max],变异操作就是用该范围内的—个随机数去替换原基因值。

一般来说,变异算子操作的基本步骤如下:

①群体中所有个体编码串范围内,随机地确定基因的位置。

②以事先设定的变异概率P m:0.0001—0.1,来对这些基因位置和基因值进行变异。

下面是几种主要的变异算子:

①基本变异算子

基本变异算子是对群体的个体编码串随机挑选(以变异概率P m)一个或多个基因座,并对这些基因座的基因值做取反变动。由于基本变异只是改变个体编码串的个别几个基因座上的基因值,并且变异概率也比较小,所以发生的作用比较慢。

②均匀变异

均匀变异方法一般是针对实数编码方式的。它的操作是分别用符合某一范围内均匀分布的随机数,以某一较小的概率替换个体编码串中各个基因座上的原有基因值。具体操作过程是:1)依次指定个体编码串中的每个基因座为变异点。2)对每一个变异点,以变异概率P m,从对应基因的取值范围内取一随机数来替代原有基因值。将操作过程更形象地表述为,假设有一个个体为X=x1x2…x k…x l,

若x k为变异点,其取值范围为,在该点对个体X进行均匀变异操作后,可得一个新的个体X=x1x2…x‘k…x l,其中变异点的新基因值为

式中,r为[0,1]范围内符合均匀概率分布的一个随机数。由于均匀变异方法使得搜索点可以在整个搜索空间内自由移动,从而可以增加群体的多样性,所以该法特别适合于遗传算法的初期运行阶段。均匀变异的缺陷是,不便于对某一重点区域进行局部搜索。

③非均匀变异

为求改进均匀变异的不足之处,所谓非均匀变异不是取均匀分布的随机数去替换原有的基因值,而是对原有基因值作一随机扰动,以扰动后的结果作为变异后的新基因值。非均匀变异的操作过程不同之处在于重点搜索原个体附近的微小

区域。在进行由的个体向的非均匀变异操

作时,若变异点x k处的基因值取值范围为,则新的基因值由下

式确定:

式中,r为[0,1]范围内符合均匀概率分布的一个随机数。

分布的一个随机数,要求随着进化代数t的增加,接近于0的概率也逐渐增加,例如,可按下式定义:

式中T——最大进化代数;b——系统参数。根据以上公式可看出,非均匀变异可使得遗传算法在初始运行阶段(t较小时)进行均匀随机搜索,而在其后期运行阶段(t较接近于T时)进行局部搜索,所以它产生的新基因值比均匀变异所产生的基因值更接近于原有基因值。因此随着遗传算法的运行,非均匀变异就可以使得最优解搜索过程更加集中在某一最有希望的重点区域中。

六、简单实例

例:利用遗传算法求解区间[0,31]上的二次函数y=x2的最大值。

分析:

原问题可转化为在区间[0, 31]中搜索能使y 取最大值的点a 的问题。那么,[0, 31]中的点x 就是个体, 函数值f(x)恰好就可以作为x 的适应度,区间[0, 31]就是一个(解)空间。这样,只要能给出个体x 的适当染色体编码, 该问题就可以用遗传算法来解决。

(1) 设定种群规模,编码染色体,产生初始种群。

将种群规模设定为4;用5位二进制数编码染色体;取下列个体组成初始种群S 1:

s 1= 13 (01101), s 2= 24 (11000)

s 3= 8 (01000), s 4= 19 (10011)

(2) 定义适应度函数,

取适应度函数:f (x )=x 2

计算各代种群中的各个体的适应度, 并对其染色体进行遗传操作,直到适应度最高的个体(即31(11111))出现为止。

首先计算种群S 1中各个体s 1= 13(01101), s 2= 24(11000) s 3= 8(01000), s 4= 19(10011)的适应度f (s i ):

f (s 1) = f (13) = 132 = 169

f (s 2) = f (24) = 242 = 576

f (s 3) = f (8) = 82 = 64

f (s 4) = f (19) = 192 = 361

再计算种群S 1中各个体的选择概率。

由此可求得

P(s 1) = P(13) = 0.14

P(s 2) = P(24) = 0.49

P(s 3) = P(8) = 0.06

P(s 4) = P(19) = 0.31

使用赌轮选择法,设从区间[0, 1]中产生4个随机数如下:

r 1 = 0.450126, r 2 = 0.110347

r 3 = 0.572496, r 4 = 0.98503 y =x 2

Y

31 ∑==N

j j

i i x f x f x P 1)()

()(选择概率的计算公式为

于是,经复制得群体:

s1’ =11000(24), s2’ =01101(13)

s3’ =11000(24), s4’ =10011(19)

设交叉率p c=100%,即S1中的全体染色体都参加交叉运算。

设s1’与s2’配对,s3’与s4’配对。分别交换后两位基因,得新染色体:s1’’=11001(25), s2’’=01100(12)

s3’’=11011(27), s4’’=10000(16)

设变异率p m=0.001。这样,群体S1中共有5×4×0.001=0.02

位基因可以变异。0.02位显然不足1位,所以本轮遗传操作不做变异。于是,得到第二代种群S2:

s1=11001(25), s2=01100(12)

s3=11011(27), s4=10000(16)

第二代种群S2中各染色体的情况

假设这一轮选择-复制操作中,种群S2中的4个染色体都被选中,则得到群体:

s1’=11001(25), s2’= 01100(12)

s3’=11011(27), s4’= 10000(16)

做交叉运算,让s1’与s2’,s3’与s4’分别交换后三位基因,得

s1’’ =11100(28), s2’’ = 01001(9)

s3’’ =11000(24), s4’’ = 10011(19)

这一轮仍然不会发生变异

第三代种群S3中各染色体的情况

设这一轮的选择-复制结果为:

s1’=11100(28), s2’=11100(28)

s3’=11000(24), s4’=10011(19)

做交叉运算,让s1’与s4’,s2’与s3’分别交换后两位基因,得

s1’’=11111(31), s2’’=11100(28)

s3’’=11000(24), s4’’=10000(16)

于是,得第四代种群S4:

s1=11111(31), s2=11100(28)

s3=11000(24), s4=10000(16)

显然,在这一代种群中已经出现了适应度最高的染色体s1=11111。于是,遗传操作终止,将染色体“11111”作为最终结果输出。

然后,将染色体“11111”解码为表现型,即得所求的最优解:31。

将31代入函数y=x2中,即得原问题的解,即函数y=x2的最大值为961。

七、应用

①在图像分割中利用遗传算法搜索灰度图像的阈值最优解。一般每个

染色体用8位二进制串表示,代表一个阈值。由适应度值进行染色体优胜劣汰的选择,经过不断进化,得到了最佳阈值。

②采用遗传算法来优化神经网络的连接权值

③遗传算法用于图像匹配。图像匹配是指通过一定的匹配算法在两幅

或多幅图像之间识别同名点。

图像匹配算法很多,一般分为基于灰度相关、基于特征、基于模板以及基于变换域的匹配。其中模板匹配是最常见的方法。传统的相关匹配算法是将模板在图上逐像素平移并计算相关值,相关值最大处即为匹配最佳处。该方法匹配精度高,算法稳定,但计算量大。引入GA解决相关匹配的速度问题,通过减少搜索位置的数目来减少相关的总计算量。应用GA进行相关匹配的染色体一般长16bits,分别用8bits来表示相关匹配的位置参数( i, j) ,适应度函数可使用某种相似测度计算

④遗传算法用于图像增强。图像增强就是将原来不清楚的图像变得清

晰或把某些特征强调出来,以改善图像的视觉效果或便于对图像进行其他处理。基于GA的图像增强技术的实现过程实际上是一个寻找控制参数的最优或次优解的过程。卢丽敏等人采用如下的参数模型:设f ( x, y)是图像在x行y 列的像素值,f ′( x, y)为增强后的图像在对应点的像素值,则有

f ′( x, y) =

g (m ( x, y) ) + k ( f ( x, y) - m ( x, y) )

其中, g (* )是一个对比扩展函数, m ( x, y)为x行y列处像素点在它的某个领域内的局部均值, k > 0是一个控制参数, 其大小影响到图像的处理质量, 因此,图像增强过程转化为寻求最优参数k 的过程。

⑤GA用于灰度图像的恢复,一般将染色体编码成以各像素的灰度值为

元素的2维矩阵,即一个染色体就代表一幅图像,每个基因对应一个像素。每个个体的适应度函数为

其中, f i为个体i代表的推测恢复图像, g为观测到的退化图像, h为退化过程,函数值越大表示个体越好。

4遗传算法与函数优化

第四章遗传算法与函数优化 4.1 研究函数优化的必要性: 首先,对很多实际问题进行数学建模后,可将其抽象为一个数值函数的优化问题。由于问题种类的繁多,影响因素的复杂,这些数学函数会呈现出不同的数学特征。除了在函数是连续、可求导、低阶的简单情况下可解析地求出其最优解外,大部分情况下需要通过数值计算的方法来进行近似优化计算。 其次,如何评价一个遗传算法的性能优劣程度一直是一个比较难的问题。这主要是因为现实问题种类繁多,影响因素复杂,若对各种情况都加以考虑进行试算,其计算工作量势必太大。由于纯数值函数优化问题不包含有某一具体应用领域中的专门知识,它们便于不同应用领域中的研究人员能够进行相互理解和相互交流,并且能够较好地反映算法本身所具有的本质特征和实际应用能力。所以人们专门设计了一些具有复杂数学特征的纯数学函数,通过遗传算法对这些函数的优化计算情况来测试各种遗传算法的性能。 4.2 评价遗传算法性能的常用测试函数 在设计用于评价遗传算法性能的测试函数时,必须考虑实际应用问题的数学模型中所可能呈现出的各种数学特性,以及可能遇到的各种情况和影响因素。这里所说的数学特性主要包括: ●连续函数或离散函数; ●凹函数或凸函数; ●二次函数或非二次函数; ●低维函数或高维函数; ●确定性函数或随机性函数; ●单峰值函数或多峰值函数,等等。 下面是一些在评价遗传算法性能时经常用到的测试函数: (1)De Jong函数F1: 这是一个简单的平方和函数,只有一个极小点f1(0, 0, 0)=0。

(2)De Jong 函数F2: 这是一个二维函数,它具有一个全局极小点f 2(1,1) = 0。该函数虽然是单峰值的函数,但它却是病态的,难以进行全局极小化。 (3)De Jong 函数F3: 这是一个不连续函数,对于]0.5,12.5[--∈i x 区域内的每一个点,它都取全局极小值 30),,,,(543213-=x x x x x f 。

遗传算法的优缺点

遗传算法属于进化算法( Evolutionary Algorithms) 的一种, 它通过模仿自然界的选择与遗传的机理来寻找最优解. 遗传算法有三个基本算子: 选择、交叉和变异. 。数值方法求解这一问题的主要手段是迭代运算。一般的迭代方法容易陷入局部极小的陷阱而出现"死循环"现象,使迭代无法进行。遗传算法很好地克服了这个缺点,是一种全局优化算法。 生物在漫长的进化过程中,从低等生物一直发展到高等生物,可以说是一个绝妙的优化过程。这是自然环境选择的结果。人们研究生物进化现象,总结出进化过程包括复制、杂交、变异、竞争和选择。一些学者从生物遗传、进化的过程得到启发,提出了遗传算法( GA)。算法中称遗传的生物体为个体( individual ),个体对环境的适应程度用适应值( fitness )表示。适应值取决于个体的染色体(chromosome),在算法中染色体常用一串数字表示,数字串中的一位对应一个基因 (gene)。一定数量的个体组成一个群体(population )。对所有个体进 行选择、交叉和变异等操作,生成新的群体,称为新一代( new generation )。遗传算法计算程序的流程可以表示如下[3]:第一步准备工作 (i)选择合适的编码方案,将变量(特征)转换为染色体(数字串,串长为m。通常用二 进制编码。 (2 )选择合适的参数,包括群体大小(个体数M)、交叉概率PC和变异概率Pm (3、确定适应值函数f (x、。f (x、应为正值。 第二步形成一个初始群体(含M个个体)。在边坡滑裂面搜索问题中,取已分析的可能滑裂 面组作为初始群体。 第三步对每一染色体(串)计算其适应值fi ,同时计算群体的总适应值。 第四步选择 计算每一串的选择概率Pi=fi/F 及累计概率。选择一般通过模拟旋转滚花轮 ( roulette ,其上按Pi大小分成大小不等的扇形区、的算法进行。旋转M次即可选出M个串来。在计算机 上实现的步骤是:产生[0,1]间随机数r,若rpc ,则该串参加交叉操作,如此选出参加交叉的一组后,随机配对。 (2)对每一对,产生[1 , m]间的随机数以确定交叉的位置。 第六步变异 如变异概率为Pm则可能变异的位数的期望值为Pm x mx M,每一位以等概率变异。具体为 对每一串中的每一位产生[0 , 1]间的随机数r,若r

计算机系统结构发展历程及未来展望

计算机系统结构发展历程及未来展望 一、计算机体系结构 什么是体系结构 经典的关于“计算机体系结构(computer Architecture)”的定义是1964年C.M.Amdahl在介绍IBM360系统时提出的,其具体描述为“计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性” 。 按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。一般来说,低级机器的属性对于高层机器程序员基本是透明的,通常所说的计算机体系结构主要指机器语言级机器的系统结构。计算机体系结构就是适当地组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。通常包含的系统元素有:计算机软件、计算机硬件、人员、数据库、文档和过程。其中,软件是程序、数据库和相关文档的集合,用于实现所需要的逻辑方法、过程或控制;硬件是提供计算能力的电子设备和提供外部世界功能的电子机械设备(例如传感器、马达、水泵等);人员是硬件和软件的用户和操作者;数据库是通过软件访问的大型的、有组织的信息集合;文档是描述系统使用方法的手册、表格、图形及其他描述性信息;过程是一系列步骤,它们定义了每个系统元素的特定使用方法或系统驻留的过程性语境。 体系结构原理 计算机体系结构解决的是计算机系统在总体上、功能上需要解决的问题,它和计算机组成、计算机实现是不同的概念。一种体系结构可能有多种组成,一种组成也可能有多种物理实现。 计算机系统结构的逻辑实现,包括机器内部数据流和控制流的组成以及逻辑设计等。其目标是合理地把各种部件、设备组成计算机,以实现特定的系统结构,同时满足所希望达到的性能价格比。一般而言,计算机组成研究的范围包括:确定数据通路的宽度、确定各种操作对功能部件的共享程度、确定专用的功能部件、确定功能部件的并行度、设计缓冲和排队策略、设计控制机构和确定采用何种可靠技术等。计算机组成的物理实现。包括处理机、主存等部件的物理结构,器件的集成度和速度,器件、模块、插件、底板的划分与连接,专用器件的设计,信号传输技术,电源、冷却及装配等技术以及相关的制造工艺和技术。 主要研究内容 1·机内数据表示:硬件能直接辨识和操作的数据类型和格式 2·寻址方式:最小可寻址单位、寻址方式的种类、地址运算 3·寄存器组织:操作寄存器、变址寄存器、控制寄存器及专用寄存器的定义、数量和使用规则 4·指令系统:机器指令的操作类型、格式、指令间排序和控制机构 5·存储系统:最小编址单位、编址方式、主存容量、最大可编址空间 6·中断机构:中断类型、中断级别,以及中断响应方式等

第三章-遗传算法的理论基础

第三章 遗传算法的理论基础 遗传算法有效性的理论依据为模式定理和积木块假设。模式定理保证了较优的模式(遗传算法的较优解)的样本呈指数级增长,从而满足了寻找最优解的必要条件,即遗传算法存在着寻找到全局最优解的可能性。而积木块假设指出,遗传算法具备寻找到全局最优解的能力,即具有低阶、短距、高平均适应度的模式(积木块)在遗传算子作用下,相互结合,能生成高阶、长距、高平均适应度的模式,最终生成全局最优解。Holland 的模式定理通过计算有用相似性,即模式(Pattern)奠定了遗传算法的数学基础。该定理是遗传算法的主要定理,在一定程度上解释了遗传算法的机理、数学特性以及很强的计算能力等特点。 3.1 模式定理 不失一般性,本节以二进制串作为编码方式来讨论模式定理(Pattern Theorem)。 定义3.1 基于三值字符集{0,1,*}所产生的能描述具有某些结构相似性的0、1字符串集的字符串称作模式。 以长度为5的串为例,模式*0001描述了在位置2、3、4、5具有形式“0001”的所有字符串,即(00001,10001) 。由此可以看出,模式的概念为我们提供了一种简洁的用于描述在某些位置上具有结构相似性的0、1字符串集合的方法。 引入模式后,我们看到一个串实际上隐含着多个模式(长度为 n 的串隐含着2n 个模式) ,一个模式可以隐含在多个串中,不同的串之间通过模式而相互联系。遗传算法中串的运算实质上是模式的运算。因此,通过分析模式在遗传操作下的变化,就可以了解什么性质被延续,什么性质被丢弃,从而把握遗传算法的实质,这正是模式定理所揭示的内容 定义3.2 模式H 中确定位置的个数称作该模式的阶数,记作o(H)。比如,模式 011*1*的阶数为4,而模式 0* * * * *的阶数为1。 显然,一个模式的阶数越高,其样本数就越少,因而确定性越高。 定义3.3 模式H 中第一个确定位置和最后一个确定位置之间的距离称作该模式的定义距,记作)(H δ。比如,模式 011*1*的定义距为4,而模式 0* * * * *的定义距为0。 模式的阶数和定义距描述了模式的基本性质。 下面通过分析遗传算法的三种基本遗传操作对模式的作用来讨论模式定理。令)(t A 表示第t 代中串的群体,以),,2,1)((n j t A j =表示第t 代中第j 个个体串。 1.选择算子 在选择算子作用下,与某一模式所匹配的样本数的增减依赖于模式的平均适值,与群体平均适值之比,平均适值高于群体平均适值的将呈指数级增长;而平均适值低于群体平均适值的模式将呈指数级减少。其推导如下: 设在第t 代种群)(t A 中模式所能匹配的样本数为m ,记为),(t H m 。在选择中,一个位串 j A 以概率/j j i P f f =∑被选中并进行复制,其中j f 是个体)(t A j 的适应度。假设一代中群体 大小为n ,且个体两两互不相同,则模式H 在第1+t 代中的样本数为:

遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

GATBX遗传算法工具箱函数及实例讲解 基本原理: 遗传算法是一种典型的启发式算法,属于非数值算法范畴。它是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。它是采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。遗传算法的操作对象是一群二进制串(称为染色体、个体),即种群,每一个染色体都对应问题的一个解。从初始种群出发,采用基于适应度函数的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。如此模仿生命的进化进行不断演化,直到满足期望的终止条件。 运算流程: Step 1:对遗传算法的运行参数进行赋值。参数包括种群规模、变量个数、交叉概率、变异概 率以及遗传运算的终止进化代数。 Step 2:建立区域描述器。根据轨道交通与常规公交运营协调模型的求解变量的约束条件,设置变量的取值范围。 Step 3:在Step 2的变量取值范围内,随机产生初始群体,代入适应度函数计算其适应度值。 Step 4:执行比例选择算子进行选择操作。 Step 5:按交叉概率对交叉算子执行交叉操作。

Step 6:按变异概率执行离散变异操作。 Step 7:计算Step 6得到局部最优解中每个个体的适应值,并执行最优个体保存策略。 Step 8:判断是否满足遗传运算的终止进化代数,不满足则返回Step 4,满足则输出运算结果。 运用遗传算法工具箱: 运用基于Matlab的遗传算法工具箱非常方便,遗传算法工具箱里包括了我们需要的各种函数库。目前,基于Matlab的遗传算法工具箱也很多,比较流行的有英国设菲尔德大学开发的遗传算法工具箱GATBX、GAOT以及Math Works公司推出的GADS。实际上,GADS就是大家所看到的Matlab中自带的工具箱。我在网上看到有问为什么遗传算法函数不能调用的问题,其实,主要就是因为用的工具箱不同。因为,有些人用的是GATBX带有的函数,但MATLAB自带的遗传算法工具箱是GADS,GADS当然没有GATBX里的函数,因此运行程序时会报错,当你用MATLAB来编写遗传算法代码时,要根据你所安装的工具箱来编写代码。 以GATBX为例,运用GATBX时,要将GATBX解压到Matlab下的toolbox文件夹里,同时,set path将GATBX文件夹加入到路径当中。 这块内容主要包括两方面工作:1、将模型用程序写出来(.M文件),即目标函数,若目标函数非负,即可直接将目标函数作为适应度函数。2、设置遗传算法的运行参数。包括:种群规模、变量个数、区域描述器、交叉概率、变异概率以及遗传运算的终止进化代数等等。

遗传算法

基于新的混合遗传算法的订单生产工序顺序相关的流水车 间调度问题研究 A novel hybrid genetic algorithm to solve the make-to-order sequence-dependent flow-shop scheduling problem Mohammad Mirabi ?S. M. T. Fatemi Ghomi ?F. Jolai 2013年5月29号收到该文献,2014年3月18号录取,2014年4月9日出版.作者(2014).这篇文章在开放存取的https://www.360docs.net/doc/fc6014561.html, 网站发表 摘要流水车间调度问题(FSP)用于处理m台机器n个工序的流水作业。尽管FSP是典 型的NP-hard问题,依然没有有效的算法以找到这个问题的最优解。为了减少库存,延迟和安装成本,在工作时间一定,序列相关的每台机器上解决流水车间调度排序问题,在这提出了一种有三个遗传算子的新型混合遗传算法(HGA)。该算法应用一种改进的方法来生成初始种群,并使用一种应用迭代交换过程改进初始解的改进启发式算法。我们认为订单式生产方式,工序间隔时间是基于最大安装成本的禁忌搜索算法的解。此外,与最近开发的启发式算法通过计算实验结果比较表明,该算法在解\的精度和效率方面表现出非常强的竞争力。 关键词:混合遗传算法流水作业调度序列相关 引言 流车间调度问题(FSP)作为在制造业研究的主要问题已经近七十年。在一个有M台机器的流水作业车间中有m个工位,每个工序又有一台或几台机器。此外,有n个工件在m个工位上依次加工。在经典的流水作业问题里,每个工位都有一台机器,这一领域的研究吸引了最多的人次。FSP的两个主要子问题是序列独立时间设置(SIST)和顺序相关时间设置(SDST)。SDST流水作业问题更具有现实意义,但是吸引的注意力却少得多,特别是2000年以前(Allahverdi等,2008) 在流水车间调度问题的目标是找到一个序列的机器加工的作业,以便一个给定的标准进行了优化。这里有n个工件在每台机器上操作的可能的顺序,以及(N!)*M个的可能处理顺序。流水作业调度的研究通常只参加置换序列,其中操作的处理顺序是所有机器。在这里,我们也采用这种限制。 最小化所有最大完工时间作业(成为完工期并通过的Cmax表示)是公知的,也是在文献M. Mirabi (&) Group of Industrial Engineering, Ayatollah Haeri University of Meybod, P.O. Box 89619-55133, Meybod, Iran e-mail: M.Mirabi@https://www.360docs.net/doc/fc6014561.html, S. M. T. Fatemi Ghomi Department of Industrial Engineering, Amirkabir University of Technology, P.O. Box 15916-34311, Tehran, Iran e-mail: Fatemi@aut.ac.ir F. Jolai Department of Industrial Engineering, College of Engineering, University of Tehran, P.O. Box 14395-515, Tehran, Iran

遗传算法的计算性能的统计分析

第32卷 第12期2009年12月 计 算 机 学 报 CH INESE JOURNA L OF COMPU TERS Vol.32No.12 Dec.2009 收稿日期:2008210219;最终修改稿收到日期:2009209227.本课题得到国家自然科学基金(60774084)资助.岳 嵚,男,1977年生,博士研究生,主要研究方向为进化算法.E 2mail:yueqqin@si https://www.360docs.net/doc/fc6014561.html,.冯 珊,女,1933年生,教授,博士生导师,主要研究领域为智能决策支持系统. 遗传算法的计算性能的统计分析 岳 嵚 冯 珊 (华中科技大学控制科学与工程系 武汉 430074) 摘 要 通过对多维解析函数的多次重复计算并对计算结果进行统计分析来讨论遗传算法的可靠性和可信度,结果表明:遗传算法的计算结果具有一定的稳定性,可以通过采用多次重复计算的方法提高计算结果的可信度,并用以评价算法及其改进的实际效果.关键词 遗传算法;计算可靠性;置信区间 中图法分类号TP 18 DOI 号:10.3724/SP.J.1016.2009.02389 The Statistical Analyses for Computational Performance of the Genetic Algorithms YU E Qin FENG Shan (Dep artment of Contr ol Science and Eng ineering ,H uazhong University of Science and T ech nology ,W u han 430074) Abstr act In this paper,the author s discuss the reliability of the GAs by reiteratively computing the multi 2dimensional analytic functions and statistical analysis of the results.The analysis re 2sults show that the GAs have certain stability;it could improve the reliability by reiteratively computation and estimates the effects of improvements. Keywor ds genetic algorithms;computational stability;confidence interval 1 遗传算法的随机性 遗传算法是将生物学中的遗传进化原理和随机优化理论相结合的产物,是一种随机性的全局优化算法[1].遗传算法作为一种启发式搜索算法,其计算结果具有不稳定性和不可重现性;遗传算法的进化过程具有有向随机性,整体上使种群的平均适应度不断提高.现在学术界对遗传算法中的某些遗传操作的作用机制还不十分清楚,遗传算法的许多性能特点无法在数学上严格证明.遗传算法的计算过程会受到各种随机因素的影响,如随机产生的初始种群和随机进行的变异操作等,尤其初始种群对计算结果影响较大.但另一方面,大量的实算结果表明,遗传算法的计算结果具有一定的规律性,在统计意义上具有一定的可靠性,这样就可以对待求解问题 进行多次重复计算后取平均值的方法,提高遗传算 法在实际计算中的准确性和可信度. 包括遗传算法在内的启发式搜索算法主要用于解决大型的复杂优化问题,这些问题一般难以使用传统的优化算法解决.遗传算法对这类问题的计算结果也难达到精确的最优解.这给对用遗传算法解决实际工程优化问题的计算结果的评价带来了困难,在实际工程计算中也难以评价遗传算法及其改进型的计算效果的优劣. 为了分析遗传算法的计算性能,本文采用的计算对象是一个复杂的多维解析函数.使用这类函数评价遗传算法计算性能的好处是可以事先通过其他方法求得最优解,这样便于评价遗传算法及其改进型的计算效果.本文从统计学角度对多次重复计算的结果进行分析,试图得到遗传算法的稳定性和可信度方面的相关结论,通过分析遗传算法及其改进

认知无线电的发展历程与现状

认知无线电的发展历程与现状 认知无线电的发展历程与现状 摘要:认知无线电是一种通过与其运行环境交互而改变其发射参数从而提高频谱利用率的新的智能技术,其核心思想是CR具有学习能力,能与周围环境交互 信息,以感知和利用在该空间的可用频谱,并限制和降低冲突的发生,认知无线电就是通过频谱感知(Spectrum Sensing )和系统的智能学习能力,实现动态频谱分配(DSA dynamic spectrum allocation )和频谱共享(Spectrum Shari ng )。本文主要分析认知无线电的起源,认知无线电的关键技术概要,认知无线电的相关标准化进程以及认知无线电的应用场景等多个方面,对认知无线电进行一个概述,从而加深对无线电的认知与了解。关键字:认知无线电、起源、关键技术、标准化、应用 随着无线通信需求的不断增长,对无线通信技术支持的数据传输速率的要求越来越高。根据香农信息理论,这些通信系统对无线频谱资源的需求也相应增长,从而导致适用于无线通信的频谱资源变得日益紧张,成为制约无线通信发展的新瓶颈。另一方面,已经分配给现有很多无线系统的频谱资源却在时间和空间上存在不同程度的闲置。为解决无线频谱资源紧张的问题,出现了许多先进的无线通信理论与技术,如链路自适应技术、多天线技术等。这些技术虽然能提高频谱效率,但仍受限于Sha nnon理论。 美国联邦通信委员会的大量研究表明:ISM频段以及适用于陆地移动通信的2GHz 左右授权频段过于拥挤,而有些授权频段却经常空闲。因而提出了认知无线电。认知无线电是一种智能频谱共享技术。它通过感知频谱环境、智能学习并实时调整其传输参数,实现频谱的再利用,进而显著地提高频谱的利用率,通过从时间和空间上充分利用那些空闲的频谱资源,从而有效解决上述难题。 1. 认知无线电的发展历程

遗传算法的计算性能的统计分析

遗传算法遗传算法的计算性能的统计分析 岳嵚冯珊 (华中科技大学控制科学与工程系) 摘要:本文通过对多维解析函数的多次重复计算并对计算结果的进行统计分析来讨论遗传算法的可靠性和可信度,结果表明:遗传算法的计算结果具有一定的稳定性,可以通过采用多次重复计算的方法提高计算结果的可信度,并用以评价算法及其改进的实际效果。 关键词:遗传算法;计算可靠性;置信区间 分类号:TP18 1遗传算法的随机性 遗传算法是将生物学中的遗传进化原理和随机优化理论相结合的产物,是一种随机性的全局优化算法[1]。遗传算法作为一种启发式搜索算法,其计算结果具有不稳定性和不可重现性;遗传算法的进化过程具有有向随机性,整体上使种群的平均适应度不断提高。现在学术界对遗传算法中的某些遗传操作的作用机制还不十分清楚,遗传算法的许多性能特点无法在数学上严格证明。遗传算法的计算过程会受到各种随机因素的影响,如随机产生的初始种群和随机进行的变异操作等,尤其初是始种群对计算结果影响较大。但另一方面,大量的实算结果表明,遗传算法的计算结果具有一定的规律性,在统计意义上具有一定的可靠性,这样就可以对待求解问题进行多次重复计算后取平均值的方法,提高遗传算法在实际计算中的准确性和可信度。 包括遗传算法在内的启发式搜索算法主要用于解决大型的复杂优化问题,这些问题一般难以使用传统的优化算法解决。遗传算法对这类问题的计算结果也难达到精确的最优解。这给对用遗传算法解决实际工程优化问题的计算结果的评价带来了困难,在实际工程计算中也难以评价遗传算法及其改进型的计算效果的优劣。 为了分析遗传算法的计算性能,本文采用的计算对象是一个复杂的多维解析函数。使用这类函数评价遗传算法计算性能的好处是可以事先通过其他方法求得最优解,这样便于评价遗传算法及其改进型的计算效果。本文从统计学角度对多次重复计算的结果进行分析,试图得到遗传算法的稳定性和可信度方面的相关结论,通过分析遗传算法及其改进型求解解析问题的计算效果,再把所得到的相关结论推广应用到复杂的工程实际问题中去。 遗传算法在实际使用中有多种形式的变型,经典遗传算法是遗传算法的最简单的形式,但是经典遗传算法并不理想。本文使用的是粗粒度并行遗传算法。粗粒度并行遗传算法是遗传算法的一个重要改进型。它具有比经典遗传算法更好的计算性能。 2算例、实验方法和实验结果 2.1算例 本文所使用的算例是Deb 函数: ]10,10[,)]4cos(10[10)(12?∈??+=∑=i n i i i Deb x n x x x f i π(1) Deb 函数是一个高维的非凸函数,该函数在点(9.7624,9.7624,…,9.7624)上取得最大

论文-遗传算法的基本步骤

遗传算法 遗传算法(Genetic Algorithm)是基于进化论的原理发展起来的一种广为应用,高效的随机搜索与优化的方法。它从一组随机产生的初始解称为“种群”,开始搜索过程。种群中的每个个体是问题的一个解,成为“染色体”是一串符号。这些染色体在每一代中用“适应度”来测量染色体的好坏, 通过选择、交叉、变异运算形成下一代。选择的原则是适应度越高,被选中的概率越大。适应度越低,被淘汰的概率越大。每一代都保持种群大小是常数。经过若干代之后,算法收敛于最好的染色体,它很可能是问题的最优解或次优解。这一系列过程正好体现了生物界优胜劣汰的自然规律。 比如有编号为1到10的特征,现在要选取其中的5个,基于遗传算法的特征选择可以如下这样直观的理解: 下续(表格) 下续……

即设有4个不同的初始特征组合,分别计算判别值,然后取最大的2个组合([1,2,3,4,9]和[1,3,5,7,8])进行杂交,即互换部分相异的特征(4和7),得到新的两个特征组合([1,2,3,7,9]和[1,3,4,5,8]),然后再计算这两个新的组合的判别值,和原来的放在一起,再从中选择2个具有最大判别值的组合进行杂交。如此循环下去,在某一代的时候就得到了一个最好的特征组合(比如第2代的[1,3,5,7,9]的特征组合)。当然,在实际中每代的个体和杂交的数量是比较大的。 遗传算法的具体的步骤如下:

1.编码:把所需要选择的特征进行编号,每一个特征就是一个基因,一个解就是一串基因的组合。为了减少组合数量,在图像中进行分块(比如5*5大小的块),然后再把每一块看成一个基因进行组合优化的计算。每个解的基因数量是要通过实验确定的。 2.初始群体(population)的生成:随机产生N个初始串结构数据,每个串结构数据称为一个个体。N个个体,构成了一个群体。GA以这N个串结构数据作为初始点开始迭代。这个参数N需要根据问题的规模而确定。 3.交换(crossover):交换(也叫杂交)操作是遗传算法中最主要的遗传操作。由交换概率( P)挑选的每两个父代 c 通过将相异的部分基因进行交换(如果交换全部相异的就变成了对方而没什么意义),从而产生新的个体。可以得到新一代个体,新个体组合了其父辈个体的特性。交换体现了信息交换的思想。 4.适应度值(fitness)评估检测:计算交换产生的新个体的适应度。适应度用来度量种群中个体优劣(符合条件的程度)的指标值,这里的适应度就是特征组合的判据的值。这个判据的选取是GA的关键所在。

遗传算法基本理论实例

目录 _ 一、遗产算法的由来 (2) 二、遗传算法的国内外研究现状 (3) 三、遗传算法的特点 (5) 四、遗传算法的流程 (7) 五、遗传算法实例 (12) 六、遗传算法编程 (17) 七、总结 ......... 错误!未定义书签。附录一:运行程序.. (19)

遗传算法基本理论与实例 一、遗产算法的由来 遗传算法(Genetic Algorithm,简称GA)起源于对生物系统所进行的计算机模拟研究。20世纪40年代以来,科学家不断努力从生物学中寻求用于计算科学和人工系统的新思想、新方法。很多学者对关于从生物进化和遗传的激励中开发出适合于现实世界复杂适应系统研究的计算技术——生物进化系统的计算模型,以及模拟进化过程的算法进行了长期的开拓性的探索和研究。John H.Holland教授及其学生首先提出的遗传算法就是一个重要的发展方向。 遗传算法借鉴了达尔文的进化论和孟德尔、摩根的遗传学说。按照达尔文的进化论,地球上的每一物种从诞生开始就进入了漫长的进化历程。生物种群从低级、简单的类型逐渐发展成为高级复杂的类型。各种生物要生存下去及必须进行生存斗争,包括同一种群内部的斗争、不同种群之间的斗争,以及生物与自然界无机环境之间的斗争。具有较强生存能力的生物个体容易存活下来,并有较多的机会产生后代;具有较低生存能力的个体则被淘汰,或者产生后代的机会越来越少。,直至消亡。达尔文把这一过程和现象叫做“自然选择,适者生存”。按照孟德尔和摩根的遗传学理论,遗传物质是作为一种指令密码封装在每个细胞中,并以基因的形式排列在染色体上,每个基因有特殊的位置并控制生物的某些特性。不同的基因组合产生的个体对环境的适应性不一样,通过基因杂交和突变可以产生对环境适应性强的后代。经过优胜劣汰的自然选择,适应度值高的基因结构就得以保存下来,从而逐渐形成了经典的遗传学染色体理论,揭示了遗传和变异的

人工智能之遗传算法论文含源代码

30维线性方程求解 摘要:非线性方程组的求解是数值计算领域中最困难的问题,大多数的数值求解算法例如牛顿法的收敛性和性能特征在很大程度上依赖于初始点。但是对于很多高维的非线性方程组,选择好的初始点是一件非常困难的事情。本文采用了遗传算法的思想,提出了一种用于求解非线性方程组的混合遗传算法。该混合算法充分发挥了遗传算法的群体搜索和全局收敛性。选择了几个典型非线性方程组,考察它们的最适宜解。 关键词:非线性方程组;混合遗传算法;优化 1. 引言遗传算法是一种通用搜索算法,它基于自然选择机制和自然遗传规律来模拟自然界的进化过程,从而演化出解决问题的最优方法。它将适者生存、结构化但同时又是 随机的信息交换以及算法设计人的创造才能结合起来,形成一种独特的搜索算法,把一些解决方案用一定的方式来表示,放在一起成为群体。每一个方案的优劣程度即为适应性,根据自然界进化“优胜劣汰”的原则,逐步产生它们的后代,使后代具有更强的适应性,这样不断演化下去,就能得到更优解决方案。 随着现代自然科学和技术的发展,以及新学科、新领域的出现,非线性科学在工农业、经济政治、科学研究方面逐渐占有极其重要的位置。在理论研究和应用实践中,几乎绝大多数的问题都最终能化为方程或方程组,或者说,都离不开方程和方程组的求解。因此,在非线性问题中尤以非线性方程和非线性方程组的求解最为基本和重要。传统的解决方法,如简单迭代法、牛顿法、割线法、延拓法、搜索法、梯度法、共轭方向法、变尺度法,无论从算法的选择还是算法本身的构造都与所要解决的问题的特性有很大的关系。很多情况下,算法中算子的构造及其有效性成为我们解决问题的巨大障碍。而遗传算法无需过多地考虑问题的具体形式,因为它是一种灵活的自适应算法,尤其在一些非线性方程组没有精确解的时候,遗传算法显得更为有效。而且,遗传算法是一种高度并行的算法,且算法结构简单,非常便于在计算机上实现。本文所研究的正是将遗传算法应用于求解非线性方程组的问题。 2. 遗传算法解非线性方程组为了直观地观察用遗传算法求解非线性方程组的效果,我们这里用代数非线性方程组作为求解的对象问题描述:非线性方程组指的是有n 个变量(为了简化讨论,这里只讨论实变量方程组)的方程组 中含有非线性方程。其求解是指在其定义域内找出一组数能满足方程组中的每 个方程。这里,我们将方程组转化为一个函数则求解方程组就转化为求一组值使得成立。即求使函数取得最小值0 的一组数,于是方程组求解问题就转变为函数优化问题 3. 遗传算子 遗传算子设计包括交叉算子、变异算子和选择算子的设计。

介绍遗传算法的发展历程

介绍遗传算法的发展历程 遗传算法起源于对生物系统进行的计算机模拟研究。早在20世纪40年代,就有学者开始研究利用计算机进行生物模拟的技术,他们从生物学的角度进行了生物的进化过程模拟、遗传过程模拟等研究工作。 早期的研究特点是侧重于对一些复杂操作的研究。最早意识到自然遗传算法可以转化为人工智能算法的是J.H.Hnllaad教授。1965年,Holland教授首次提出了人工智能操作的重要性,并将其应用到自然系统和人工系统中。1967年,Holland教授的学生.J.D.Bagley在其博士论文中首次提出了“遗传算法”一词,并发表了遗传算法应用方面的第一篇论文,从而创立了自适应遗传算法的概念e J.D.Bagley发展了复制、交叉、变异、显性、倒位等遗传算子,在个体编码上使用了双倍体的编码方法。1970年,Cavicchio把遗传算法应用于模式识别。Holistien最早把遗传算法应用于函数优化。20世纪70年代初,Holland 教授提出了遗传算法的基本定理—模式定理,从而奠定了遗传算法的理论基础。模式定理揭示出种群中优良个体(较好的模式)的样本数将以指数级规律增长,因而从理论上保证了遗传算法是一个可以用来寻求最优可行解的优化过程。1975年,Holland教授出版了第一本系统论述遗传算法和人工自适应系统的专著《自然系统和人工系统的自适应性》。同年,K.A.De Song在博士论文《遗传自适应系统的行为分析》‘护结合模式定理进行了大量的纯数值函数优化计算实验,建立了遗传算法的工作框架,为遗传算法及其应用打下了坚实的基础,他所得

出的许多结论迄今仍具有普遍的指导意义。20世纪80年代,Hntland 教授实现了第一个基于遗传算法的机器学习系统—分类器系统(Classifier Systems,简称CS),提出了基于遗传算法的机器学习的新概念,为分类器系统构造出了一个完整的框架。1989年,D.J.Goldberg 出版了专著—《搜索、优化和机器学习中的遗传算法》。该书系统总结了遗传算法的主要研究成果,全面而完整地论述了遗传算法的基本原理及其应用。可以说这本书奠定了现代遗传算法的科学基础,为众多研究和发展遗传算法的学者所瞩目。1991年,L,Davis编辑出版了《遗传算法手册》一书,书中包括了遗传算法在科学计算、工程技术和社会经济中的大量应用样本,为推广和普及遗传算法的应用起到了重要的指导作用。1992年,J.R.Koza将遗传算法应用于计算机程序的优化设计及自动生成,提出了遗传规划(Genetic Programming,简称GP)的概念。

遗传算法基本理论与方法

摘要:基本遗传算法的操作是以个体为对象,只使用选择、交叉和变异遗传算子,遗传进化操作过程的简单框架。模式定理和积木块假设是解释遗传算法有效性的理论基础,理论分析与实际应用都表明基本的遗传算法不能处处收敛于全局最优解,因此基本遗传算法有待进一步改进。 关键词:遗传算法;遗传算法的改进 1.标准遗传算法 基本遗传算法包括选择、交叉和变异这些基本遗传算子。其数学模型可表示为: sag=(c,e,p0,n,φ,г,ψ,t) 其中c为个体的编码方法;e为个体适应度评价函数;p0为初始种群;n为种群大小;φ为选择算子;г为交叉算子;ψ为变异算子;t为遗传运算终止条件; 2 遗传算法基本方法及其改进 2.1编码方式 编码方式决定了个体的染色体排列形式,其好坏直接影响遗传算法中的选择算子、交叉算子和变异算子的运算,也决定了解码方式。 二进制编码 二进制编码使用的字符号{0,1}作为编码符号,即用一个{0,1}所组成的二进制符号串构成的个体基因型。二进制编码方法应用于遗传算法中有如下优点: 1)遗传算法中的遗传操作如交叉、变异很容易实现,且容易用生物遗传理论来解释; 2)算法可处理的模式多,增强了全局搜索能力; 3)便于编码、解码操作; 4)符合最小字符集编码原则; 5)并行处理能力较强。 二进制编码在存着连续函数离散化的映射误差,不能直接反应出所求问题的本身结构特征,不便于开发专门针对某类问题的遗传运算算子。 2.2初始种群的设定 基本遗传算法是按随机方法在可能解空间内产生一个一定规模的初始群体,然后从这个初始群体开始遗传操作,搜索最优解。初始种群的设定一般服从下列准则:1)根据优化问题,把握最优解所占空间在整个问题空间的分布范围,然后,在此分布范围内设定合适的初始群体。 2)先随机生成一定数目的个体,然后从中挑出最好的个体加入到初始群体中。该过程不断迭代,直到初始群体中个体数目达到了预先确定的种群大小。 2.3选择算子的分析 选择算子的作用是选择优良基因参与遗传运算,目的是防止有用的遗传信息丢失,从而提高全局收敛效率。常用的遗传算子: (1)轮盘赌选择机制 轮盘赌选择也称适应度比例选择,是遗传算法中最基本的选择机制,每个个体被选择进入下一代的概率为这个个体的适应度值占全部个体适应度值之和的比例。但是轮盘赌选择机制选择误差较大,不是所有高适应度值的个体都能被选中,适应度值较低但具有优良基因模式的个体被选择的概率也很低,这样就会导致早熟现象的产生。 (2)最优保存选择机制 最优保存选择机制的基本思想是直接把群体中适应度最高的个体复制到下一代,而不进行配对交叉等遗传操作。具体步骤如下: 1)找出当前群体中适应度值最高和最低的个体的集合;

第七章遗传算法应用举例

第七章 遗传算法应用举例 遗传算法提供了一种求解非线性、多模型、多目标等复杂系统优化问题的通用框架,它不依赖于问题具体的领域。随着对遗传算法技术的不断研究,人们对遗传算法的实际应用越来越重视,它已经广泛地应用于函数优化、组合优化、自动控制、机器人学、图象处理、人工生命、遗传编码、机器学习等科技领域。遗传算法已经在求解旅行商问题、背包问题、装箱问题、图形划分问题等多方面的应用取得了成功。本章通过一些例子,介绍如何利用第五章提供的遗传算法通用函数,编写MATLAB 程序,解决实际问题。 7.1 简单一元函数优化实例 利用遗传算法计算下面函数的最大值: ()sin(10) 2.0[1,2]f x x x x π=?+∈-, 选择二进制编码,种群中个体数目为40,每个种群的长度为20,使用代沟为0.9,最大遗传代数为25。 下面为一元函数优化问题的MA TLAB 代码。 figure(1); fplot ('variable.*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲线 % 定义遗传算法参数 NIND= 40; % 个体数目(Number of individuals) MAXGEN = 25; % 最大遗传代数(Maximum number of generations) PRECI = 20; % 变量的二进制位数(Precision of variables) GGAP = 0.9; % 代沟(Generation gap) trace=zeros (2, MAXGEN); % 寻优结果的初始值 FieldD = [20;-1;2;1;0;1;1]; % 区域描述器(Build field descriptor) Chrom = crtbp(NIND, PRECI); % 初始种群 gen = 0; % 代计数器 variable=bs2rv(Chrom,FieldD); % 计算初始种群的十进制转换 ObjV = variable.*sin (10*pi*variable)+2.0; % 计算目标函数值 while gen < MAXGEN, FitnV = ranking (-ObjV); % 分配适应度值(Assign fitness values) SelCh = select ('sus', Chrom, FitnV , GGAP); % 选择 SelCh = recombin ('xovsp',SelCh,0.7); % 重组 SelCh = mut(SelCh); % 变异 variable=bs2rv(SelCh,FieldD); % 子代个体的十进制转换 ObjVSel =variable.*sin(10*pi*variable)+2.0; % 计算子代的目标函数值 [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV ,ObjVSel); % 重插入子代的新种群 gen = gen+1; % 代计数器增加 % 输出最优解及其序号,并在目标函数图象中标出,Y 为最优解,I 为种群的序号 [Y,I]=max(ObjV),hold on; plot (variable (I),Y , 'bo'); trace (1,gen)=max (ObjV); %遗传算法性能跟踪

遗传算法——耐心看完,你就掌握了遗传算法

遗传算法入门到掌握 读完这个讲义,你将基本掌握遗传算法,要有耐心看完。 想了很久,应该用一个怎么样的例子带领大家走进遗传算法的神奇世界呢?遗传算法的有趣应用很多,诸如寻路问题,8数码问题,囚犯困境,动作控制,找圆心问题(这是一个国外网友的建议:在一个不规则的多边形中,寻找一个包含在该多边形内的最大圆圈的圆心。),TSP问题(在以后的章节里面将做详细介绍。),生产调度问题,人工生命模拟等。直到最后看到一个非常有趣的比喻,觉得由此引出的袋鼠跳问题(暂且这么叫它吧),既有趣直观又直达遗传算法的本质,确实非常适合作为初学者入门的例子。这一章将告诉读者,我们怎么让袋鼠跳到珠穆朗玛峰上去(如果它没有过早被冻坏的话)。 问题的提出与解决方案 让我们先来考虑考虑下面这个问题的解决办法。 已知一元函数: 图2-1 现在要求在既定的区间内找出函数的最大值。函数图像如图2-1所示。 极大值、最大值、局部最优解、全局最优解

在解决上面提出的问题之前我们有必要先澄清几个以后将常常会碰到的概念:极大值、最大值、局部最优解、全局最优解。学过高中数学的人都知道极大值在一个小邻域里面左边的函数值递增,右边的函数值递减,在图2.1里面的表现就是一个“山峰”。当然,在图上有很多个“山峰”,所以这个函数有很多个极大值。而对于一个函数来说,最大值就是在所有极大值当中,最大的那个。所以极大值具有局部性,而最大值则具有全局性。 因为遗传算法中每一条染色体,对应着遗传算法的一个解决方案,一般我们用适应性函数(fitness function)来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。所以也可以把遗传算法的过程看作是一个在多元函数里面求最优解的过程。在这个多维曲面里面也有数不清的“山峰”,而这些最优解所对应的就是局部最优解。而其中也会有一个“山峰”的海拔最高的,那么这个就是全局最优解。而遗传算法的任务就是尽量爬到最高峰,而不是陷落在一些小山峰。(另外,值得注意的是遗传算法不一定要找“最高的山峰”,如果问题的适应度评价越小越好的话,那么全局最优解就是函数的最小值,对应的,遗传算法所要找的就是“最深的谷底”)如果至今你还不太理解的话,那么你先往下看。本章的示例程序将会非常形象的表现出这个情景。 “袋鼠跳”问题 既然我们把函数曲线理解成一个一个山峰和山谷组成的山脉。那么我们可以设想所得到的每一个解就是一只袋鼠,我们希望它们不断的向着更高处跳去,直到跳到最高的山峰(尽管袋鼠本身不见得愿意那么做)。所以求最大值的过程就转化成一个“袋鼠跳”的过程。下面介绍介绍“袋鼠跳”的几种方式。 爬山法、模拟退火和遗传算法 解决寻找最大值问题的几种常见的算法: 1. 爬山法(最速上升爬山法): 从搜索空间中随机产生邻近的点,从中选择对应解最优的个体,替换原来的个体,不断重复上述过程。因为只对“邻近”的点作比较,所以目光比较“短浅”,常常只能收敛到离开初始位置比较近的局部最优解上面。对于存在很多局部最优点的问题,通过一个简单的迭代找出全局最优解的机会非常渺茫。(在爬山法中,袋鼠最有希望到达最靠近它出发点的山顶,但不能保证该山顶是珠穆朗玛峰,或者是一个非常高的山峰。因为一路上它只顾上坡,没有下坡。) 2. 模拟退火: 这个方法来自金属热加工过程的启发。在金属热加工过程中,当金属的温度超过它的熔点(Melting Point)时,原子就会激烈地随机运动。与所有的其它的物理系统相类似,原子的这种运动趋向于寻找其能量的极小状态。在这个能量的变

相关文档
最新文档