搜档网
当前位置:搜档网 › 第五章 遗传算法工具箱函数

第五章 遗传算法工具箱函数

第五章 遗传算法工具箱函数
第五章 遗传算法工具箱函数

第五章遗传算法工具箱函数

本章介绍英国设菲尔德大学开发的遗传算法工具箱函数。

由于MATLAB高级语言的通用性,对问题用M文件编码,与此配对的是MA TLAB先进的数据分析、可视化工具、特殊目的的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。MATLAB遗传算法工具箱为遗传算法从业者和第一次实验遗传算法的人提供了广泛多样的有用函数。

遗传算法工具箱使用MA TLAB矩阵函数为实现广泛领域的遗传算法建立一套通用工具,这个遗传算法工具是用M文件写成的,是命令行形式的函数,能完成遗传算法大部分重要功能的程序的集合。用户可通过这些命令行函数,根据实际分析的需要,编写出功能强大的MATLAB程序。

5.1 工具箱结构

本节给出GA工具箱的主要程序。表5.1为遗传算法工具箱中的各种函数分类表。

表5.1 遗传算法工具箱中函数分类表

5.1.1 种群表示和初始化

种群表示和初始化函数有:crtbase,crtbp,crtrp。

GA工具箱支持二进制、整数和浮点数的基因表示。二进制和整数种群可以使用工具箱中的crtbp建立二进制种群。crtbase是附加的功能,它提供向量描述整数表示。种群的实值可用crtrp进行初始化。在二进制代码和实值之间的变换可使用函数bs2rv,它支持格雷码和对数编码。

5.1.2 适应度计算

适应度函数有:ranking,scaling。

适应度函数用于转换目标函数值,给每一个个体一个非负的价值数。这个工具箱支持Goldberg的偏移法(offsetting)和比率法以及贝克的线性评估算法。另外,ranking函数支持非线性评估。

5.1.3 选择函数

选择函数有:reins,rws,select,sus。

这些函数根据个体的适应度大小在已知种群中选择一定数量的个体,对它的索引返回一个列向量。现在最合适的是轮盘赌选择(即rws函数)和随机遍历抽样(即sus函数)。高级入口函数select为选择程序,特别为多种群的使用提供了一个方便的接口界面。在这种情况下,代沟是必须的,这就是整个种群在每一代中没有被完全复制,reins能使用均匀的随机数或基于适应度的重新插入。

5.1.4 交叉算子

交叉算子函数有:recdis,recint,reclin,recmut,recombin,xovdp,xovdprs,xovmp,xovsh,xovshrs,xovsp,xovsprs。

交叉是通过给定的概率重组一对个体产生后代。单点交叉、两点交叉和洗牌交叉是由xovsp、xovdp、xovsh函数分别完成的。缩小代理交叉函数分别是:xovdprs、xovshrs和xovsprs。通用的多点交叉函数是xovmp,它提供均匀交换的支持。为支持染色体实值表示,离散的、中间的和线性重组分别由函数recdis、recint、reclin完成。函数recmut提供具有突变特征的线性重组。函数recombin是一高级入口函数,对所有交叉操作提供多子群支持入口。

5.1.5 变异算子

变异算子函数有:mut,mutate,mutbga。

二进制和整数变异操作由mut 完成。实值的变异使用育种机函数mutbga 是有效的。Mutate 对变异操作提供一个高级接口。

5.1.6 多子群支持

多子群支持函数:migrate 。

遗传算法工具箱通过高层遗传操作函数migrate 对多子群提供支持,它的一个功能是在子群中交换个体。一个单一种群通过使用工具箱中函数修改数据结构,使其分为许多子种群,这些子种群被保存在连续的数据单元块中。高层函数如select 和reins 可独立地操作子种群,包含在一个数据结构中的每一子种群允许独自向前衍化。基于孤岛或回迁模式,migrate 允许个体在子种群中迁移。

5.2 遗传算法中的通用函数

在这一节,将详细介绍在MATLAB 中用于遗传算法的各种工具箱函数,对每个函数从功能、语法格式、使用说明以及用法举例等方面进行阐述。关于每个函数的适用信息由在线帮助工具提供。

5.2.1 函数 bs2rv

功能:二进制串到实值的转换 格式:Phen = bs2rv(Chrom,FieldD)

详细说明:Phen = bs2rv (Chrom, FieldD),根据译码矩阵FieldD 将二进制串矩阵Chrom 转换为实值向量。返回矩阵Phen 包含对应的种群表现型。

使用格雷编码的二进制染色体表示被推荐作为量化间隔的规则海明距离,可使遗传搜索减少欺骗,设置量化点间刻度的可选方案是选择线性或对数编码从二进制变换到实值。对数刻度用于决策变量的范围不知道,作为大范围参数的边界时,搜索可用较少的位数,以减少GA 的内存需求和计算量。

矩阵FieldD 有如下结构:

??????????

????????????ubin lbin scale code ub lb len 这里矩阵的行组成如下:

len 是包含在Chrom 中每个子串长度,注意sum(len )等于length(Chrom)。 lb 和ub 是行向量,分别指明每个变量使用的下界和上界。 code 是二进制行向量,指明子串是怎样编码的,code (i)=1为标准的二进制编码,code (i)=0则为格雷编码。

scale 是二进制行向量,指明每个子串是否使用对数或算术刻度,scale (i) = 0则为算术,scale (i) = 1则为对数。

lbin 和 ubin 是二进制行向量,指明表示范围中是否包含每个边界。选择lbin =0或ubin =

0则从表示范围中去掉边界,lbin =1或ubin = 1则在表示范围中包含边界。

例5.1 函数bs2rv 应用举例。下面的二进制种群Chrom ,由函数crtbp 创建,表示在[-1,10]之间的一组简单变量,程序代码表示如何使用函数bs2rv 将算术表示的格雷码或二进制串表示转换为实值表现型。

Chrom = crtbp(4,8) % 创建任意染色体,如为二进制串

00001111

0001001chrom 001010001

1

1

1

1

1?????

?=??????

FieldD = [8; -1; 10; 1; 0; 1; 1]; % 包括边界

Phen = bs2rv(Chrom,FieldD) % 转换二进制到实值,使用算术刻度

0.78439.3961phen 1.07065.2980-?? ? ?=

? ??? FieldD = [8; 1; 10; 1; 1; 0; 0];

% 不包括边界

Phen = bs2rv(Chrom,FieldD)

% 转换二进制到实值,使用对数刻度

6.62235.0615phen 2.72771.5236?? ? ?=

? ???

算法说明:bs2rv 作为GA 工具箱的一个M 文件执行,如果使用对数刻度,其范围必须不

能包含零。

5.2.2 函数 crtbase

功能:创建基向量

格式:BaseVec = crtbase(Lind, Base)

详细说明:crtbase 产生向量的元素对应染色体结构的基因座,使用不同的基本字符表示建立种群时这个函数可与函数crtbp 联合使用。

BaseV ec = crtbase(Lind, Base)创建长度为Lind 长的向量,它的每个元素由基本字符决定,如果Lind 是向量,BaseVec 的长度为Lind 的总长,如果Base 也是一个长为Lind 长的向量,则BaseVec 是一组由Lind 和基本字符Base 的元素决定长度的基本字符组组成。当描述染色体结构的基因位基本字符时,最后一选项是有用的。

例5.2 函数BaseV ec 应用举例。下面的程序代码为种群创建一有4个基数为8的基本字符{0,1,2,3,4,5,6,7}和6个基数为5的基本字符{0,1,2,3,4}的基本字符向量。

BaseV= crtbase ([4 6], [8 5]) BaseV =

[8 8 8 8 5 5 5 5 5 5]

参见:crtbp ,bs2rv

5.2.3 函数 crtbp

功能:创建初始种群

格式:① [Chrom,Lind,BaseV] = crtbp(Nind,Lind)

② [Chrom,Lind,BaseV] = crtbp(Nind,BaseV) ③ [Chrom,Lind,BaseV] = crtbp(Nind,Lind,Base)

详细说明:遗传算法的第一步是创建由任意染色体组成的原始种群。crtbp 创建一元素为随机数的矩阵Chrom 。

格式①创建一大小为Nind× Lind 的随机二元矩阵,这里Nind 指定种群中个体的数量,Lind 指定个体的长度。此格式习惯于指定染色体的尺寸(维度)。

格式②返回长度为Lind 的染色体结构,染色体基因位的基本字符由向量BaseV 决定。 格式③用于产生基本字符为Base 的染色体矩阵。如果Base 是向量,Base 的元素值指定了染色体的基因位的基本字符。在这种情况下,右边的第二个变元可省略,即为格式②。

例5.3 使用函数crtbp 创建初始种群的应用举例。 ① 创建一个长度为9、有6个个体的随机种群。 [Chrom,Lind,BaseV] = crtbp (6,9) 或

[Chrom,Lind,BaseV] = crtbp(6,9,BaseV) 运行后得

0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1Chrom 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 =

1 0 0 1 1 0 1 1 0 1 1?? ? ? ?

? ? ? ? ???

Lind = 9;

BaseV = [ 2 2 2 2 2 2 2 2 2 ];

② 创建一长度为9有6个个体的随机种群,这里前四个基因位是基本字符{0,1,2,3,4,5,6,7},后五个基因位是基本字符{0,1,2,3}。

BaseV = crtbase([4 5], [8 4]);

[Chrom,Lind,BaseV] = crtbp(6,BaseV); 或

[Chrom,Lind,BaseV] = crtbp([6,9],[8 8 8 8 4 4 4 4 4]); 运行后得

4311202031475211101

30100002Chrom 15572023145770130342

4

3

3

1

1

0?? ? ? ?=

? ? ? ? ??

?

Lind = 9;

BaseV = [8 8 8 8 4 4 4 4 4];

算法说明:crtbp 是GA 工具箱中的一个M 文件,它使用了MA TLAB 随机函数rand 。 参见:crtbase ,crtrp

5.2.4 函数 crtrp

功能:创建实值原始种群。遗传算法的第一步是创建由任意个体组成的原始种群。crtrp 创建元素为均匀分布随机数的矩阵。

格式:Chrom = crtrp(Nind,FieldDR)

详细说明:Chrom = crtrp(Nind,FieldDR)创建一大小为Nind× Nvar 的随机实值矩阵,这里Nind 指定了种群中个体的数量,Nvar 指定每个个体的变量个数。Nvar 来自FieldDR ,Nvar = size(FieldDR,2)。

FieldDR (FieldDescriptionRealvalue)是一大小为2× Nvar 的矩阵,并包含每个个体变量的边界,第一行包含下界,第二行包含上界。

FieldDR 被用在另一些函数中(变异)。

例5.4 使用函数crtrp 创建一具有6个个体,每个个体有4个变量的随机种群。 定义边界变量:

100

503020%FieldDR 100

50

30

20%----??=?

???

下界上界

创建初始种群:

Chrom = crtrp(6,FieldDR)

40.23-17.1728.9515.3882.0613.2613.35-9.0952.43

25.6415.20-2.54Chrom -47.5049.109.0910.65-90.50-13.46-25.63-0.8947.21-25.29

7.89

-10.48??

?

? ?=

?

? ?

?

??

?

参见:mutbga ,recdis ,recint ,reclin

5.2.5 函数 migrate

功能:在子种群间迁移个体。

格式:① Chrom = migrate(Chrom,SUBPOP)

② Chrom = migrate(Chrom,SUBPOP,MigOpt)

③ Chrom = migrate(Chrom,SUBPOP,MigOpt,ObjV)

④ [Chrom,ObjV] = migrate(Chrom,SUBPOP,MigOpt,ObjV)

详细说明:migrate 完成在当前种群Chrom 的子种群间迁移个体,并返回迁移后的种群Chrom 。Chrom 的一行对应一个个体。子种群的数量由SUBPOP 指定。在Chrom 中的子种群按照下列方案进行有序排列。

112111222212Chrom N N SUBPOP SUBPOP N SUBPOP IND SubPop IND SubPop IND SubPop IND SubPop IND SubPop IND SubPop IND SubPop IND SubPop IND SubPop ????

??

???????????????

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

M M

M M 所有子种群必须有相同数量的个体。

MigOpt 是一最大具有三个参数的可选向量。 MigOpt(1):是个体在子种群间的迁移概率。如果省略或为NaN ,则假定MigOpt(1) = 0.2 (即20 %)。如果迁移概率不为0,则在每个子种群至少有一个个体迁移。

MigOpt(2):是指定迁移选择方式的标量。0为均匀迁移,1为基于适应度的迁移。如果省略或为NaN ,则假设MigOpt(2) = 0。

MigOpt(3):是指定迁移种群结构的标量。0为完全网状结构,1为近邻结构,2为环状结构。如果省略或为NaN ,则假设MigOpt(3) = 0。

如果省略MigOpt 或为NaN ,则假设为缺省值。

ObjV 是具有与Chrom 同样行数的任选列向量,并包含Chrom 所有个体对应的目标函数值。对于基于适应度的迁移(MigOpt(2) =1),则ObjV 为必选项。如果ObjV 是一输入输出参数,则目标函数值将按照迁移个体进行拷贝,并保存重新计算的整个种群的目标函数值。

例5.5 下面列举函数migrate 各种调用的情形。

Chrom = (Chrom ,SUBPOP)在一子种群中选择20%的个体,并用均匀选择方式与从其它所有子种群中选择的个体进行替换。这个过程将对所有子种群做一遍。其中

MigOpt = [0.2,0,0]

Chrom = migrate(Chrom,SUBPOP,[NaN 1 NaN],ObjV))在一子种群中选择20%的个体并用从其它所有子种群中选择最适应(较小的ObjV)的个体替换。(网状结构)这个过程将对所有子种群重复。

[Chrom,ObjV] = migrate(Chrom,SUBPOP,[0.3 1 2],ObjV)) ])在一子种群中选择30%的个体并用从单向环状结构的邻近子种群中选择最适应(较小的ObjV)的个体替换。这个过程将对所有子种群重复。第一个子种群从最后一个子种群接收它的新的个体(SUBPOP)。ObjV 按照迁移个体进行返回。

这个迁移方案如下:

subpop1-->subpop2-->subpop3-->...-->subpopSUBPOP--> subpop1

[Chrom ,ObjV] = migrate(Chrom ,SUBPOP ,[NaN NaN 1],ObjV))在一子种群中选择20%的个体并用均匀选择方式与从两个相邻子种群中选择的个体替换。这个过程将对所有子种群重复一遍。第一个子种群从第二个子种群和最后一个子种群中接收新的个体。最后一个子种群从第一个子种群和第SUBPOP -1个子种群接收新的个体。ObjV 按照迁移个体进行返回。

这个迁移方案如下:

subpopSUBPOP-->subpop1<-->subpop2<-->…<-->subpopSUBPOP<--subpop1

参见:select ,recombin ,mutate ,reins

5.2.6 函数 mut

功能:离散变异算子。

格式:① NewChrom = mut(OldChrom,Pm)

② NewChrom = mut(OldChrom,Pm,BaseV)

详细说明:mut 取当前种群的表示,并用特定概率对每个元素变异。如果染色体和种群结构中允许不同的基本字符,则mut 允许用一个附加的变量BaseV 来指定染色体中每一个元素的基本字符。

假定种群为二进制编码,NewChrom = mut(OldChrom,Pm),取当前种群OldChrom ,每一行对应一个体并用概率Pm 变异每一个元素。如果省略,则假设Pm=0.7/Lind ,这里Lind 是染色体结构的长度。这个值的选择将使染色体中的每一个元素的变异概率近似为0.5。

NewChrom = mut (OldChrom,Pm,BaseV)使用第三个变量指明染色体个体元素的变异的基本字符。在这里,length(BaseV) = Lind ,Lind 是染色结构的长度。

mut 是一低级变异函数,通常被mutate 调用。

例5.6 下面的程序代码为使用函数mut 将当前种群变异为新种群。 ① 调用变异函数。

000001111

0001001OldChrom=001010001

1011011?????

???

??

??

变异OldChrom 使用缺省的概率,通过调用变异函数:

NewChrom = mut(OldChrom)

这时,OldChrom 将变成NewChrom :

NewChrom=001001111

1000001000000001

1

1

1

1

1?????

???????

② 创建一长度为8有6个个体的随机种群。 BaseV =[ 8 8 8 4 4 4 4 4]; [Chrom,Lind,BaseV] = crtbp(6,BaseV);

6 1 0 3 2 2 2 20 4 0 2 1 1 3 16 0 2 0 2 1 1 3Chrom= 5 4

7 3 1 1 1 31 3 7 3 3 2 3 14 1 4 0 0 0 3 3??????????

????????

NewChrom = mut (Chrom,0.0778,BaseV)

因此Chrom 将变成

6 1 0 3 2 2 2 20 4 0 2 1 1 3 16 0 2 0 2 2 1 3NewChrom= 5 4

7 3 1 1 1 31 3 7 3 0 2 3 14 1 4 0 0 0 3 3??????????

????????

需要补充说明的是,如果二进制串使用变异概率1,则调用过程及获得的结果如下:

mut ([1 0 1 0 1 1 1 0],1); 运行后得

ans = [0 1 0 1 0 0 0 1] 参见:mutate ,mutbga

5.2.7 函数 mutate

功能:个体的变异(高级函数)。

格式: ① NewChrom = mutate (MUT_F,OldChrom,FieldDR)

② NewChrom = mutate (MUT_F,OldChrom,FieldDR,MutOpt)

③ NewChrom = mutate (MUT_F,OldChrom,FieldDR,MutOpt,SUBPOP)

详细说明:mutate 执行种群OldChrom 中个体的变异,并在新种群NewChrom 中返回变异后的个体,OldChrom 和NewChrom 中每一行对应一个个体。

MUT_F 是一字符串,包含低级变异函数的名字例如mutbga 或mut 。 对实值变量,FieldDR 是一大小为2 ×Nvar 的矩阵,指定每个变量的边界;对离散值变量,FieldDR 是一大小为1× Nvar 的矩阵,指定每个变量的基本字符。如果FieldDR 省略、空或为NaN ,则指定变量为二进制表示。

MutOpt 是一任选参数项,包含变异概率,个体变量的突变可能性。如果MutOpt 省略,一缺省突变概率被假设。对实值变异,MutOpt 可能包含第二个参数说明压缩变异的范围的标量(参见mutbga)。

SUBPOP 是一任选参数项,决定OldChrom 中子种群的数量。如果SUBPOP 省略或NaN ,则假设SUBPOP=1。OldChrom 中的所有子种群必须有相同的大小。

例5.7 变异函数mutate 的应用举例。下面的程序代码为一个二进制种群和一个十进制种群的变异。

对于二进制种群,选取MUT_F='mut'

0 0 1 1 1 0 1 00 1 0 0 1 0 1 1OldChrom= 1 0 0 1 1 0 0 00 0 0 0 0 0 1 0????

?

???????

NewChrom = mutate ('mut',Chrom); 运行后得

0 0 1 1 1 0 1 00 1 0 0 1 0 1 1NewChrom= 1 0 0 1 1 0 0 10 0 0 0 0 0 1 0????

?

???????

对于十进制种群,选取MUT_F='mutbga'。

Chrom = crtbp(6,BaseV); % 6个个体的种群,BaseV 同上 运行后得

2 0 0 2

3 1 2 15

4 4 3 0 1 3 36 6

5 2 2 1 3 2Chrom= 3 2 0 2 3 1 3 33 3 7 3 3 3 1 12 0 3 0 2 2 2 3????????

??????????

边界定义如下:

FieldDR= 0 0 0 0 0 0 0 0 8 8 8 4 4 4 4 4??

?

?

??

NewChrom = mutate ('mutbga',Chrom,FieldDR); % 将Chrom 变异为NewChrom 运行后得

2 0 0 2

3 1 2 15

4 4 3 0 1 3 36 6

5 2 2 1 3 2NewChrom= 3 2 0 2 3 1 3 33 3 7 3 3 3 1 12 0 3 0 2 2 2 3????????

??????????

算法说明:mutate 检测输入参数的一致性和调用低级变异函数,如果mutate 被调用于多

子群,则每个子群分别调用低级变异函数。

参见:mutbga ,mut ,recombin ,select

5.2.8 函数 mutbga

功能:实值种群的变异(遗传算法育种器的变异算子)。 格式:① NewChrom = mutbga(OldChrom,FieldDR)

② NewChrom = mutbga(OldChrom,FieldDR,MutOpt)

详细说明:mutbga 对实值种群OldChrom ,使用给定的概率,变异每一个变量,返回变异后的种群NewChrom 。

FieldDR 是一矩阵,包含每个变量的边界。(参看crtrp) MutOpt 是一可选向量,具有两个参数的最大值。

MutOpt(1)是变异概率。如果缺省或为NaN ,则MutOpt(1) = 1/Nvar ,这里Nvar 是由size(FieldDR ,2)定义的每个个体的变量数。这个值被选定,则表示每个个体的变异数近似为1。

MutOpt(2)是[0,1]之间的一个量,压缩变异的范围。如果省略或为NaN ,则假设MutOpt(2) = 1(不压缩)。

格式②利用保存在矩阵OldChrom 中的当前种群,使用概率MutOpt(1)附加的一个小随机值(变异步长大小)变异每个变量,变异步长可由MutOpt(2)限定。

mutbga 是低级变异函数,通常调用mutate 。

例5.8 使用函数mutbga 变异实值种群应用举例。 考虑下面具有三个实值个体的种群:

40.2381-17.176628.953015.3883OldChrom 82.064213.263913.3596-9.091652.439625.641015.2014-2.5435??

??=??

????

边界定义如下:

?

??

???=20305010020-30-50-100-FieldDR

变异OldChrom 的变异概率为1/4,不压缩变异范围。 NewChrom = mutbga(OldChrom,FieldDR,[1/4 1.0]); mutbga 产生一中间任务表MutMx ,决定变异的变量,并为加入的delta 所表识(参看算法)。例如:

00

1MutMx 0

0100

11??

??=-????--??

第二个中间表 delta 标识正常的变异步长大小。例如: ??

???

?????=0.25050.25050.25050.25050.00010.00010.00010.00010.25000.25000.25000.2500delta

在变异后,NewChrom 成为

??

??

?

?????=7.5539-7.6858-25.641052.43969.0916-13.355913.263982.064220.000028.953017.1766-40.2381NewChrom NewChrom-OldChrom 显示变异的步长。

00 4.6117NewChrom OldChrom 0

0-0.003700

-7.5156

-5.0104??

??-=??

????

算法说明:一个变量的变异是由以下计算得到的:

mutated variable = variable +MutMx ×range× MutOpt (2)×delta

具有概率MutOpt(1),则MutMx =1,否则为0 (+或-具有相等概率)。 range = 0.5 *变量的域(范围)。 如果m =20,概率为1/m ,则i a =1,否则为0。

使用m =20,变异算子能定位最优值到精度为Range* MutOpt(2)*2 -19 。

变异算子mutbga 能在个体变量和变异范围定义的立方体中产生最多的点。这个测试经常接近变量,即小步长概率大于大步长概率。

参见:mutate ,recdis ,recint ,reclin

5.2.9 函数 ranking

功能:基于排序的适应度分配。 格式:① FitnV = ranking(ObjV)

② FitnV = ranking(ObjV ,RFun)

③ FitnV = ranking(ObjV ,RFun,SUBPOP)

详细说明:ranking 按照个体的目标值ObjV 由小到大的顺序对它们进行排序,并返回一包含对应个体适应度值FitnV 的列向量。这个函数是从最小化方向对个体进行排序的。

RFun 是一任选向量,有1、2或length(ObjV)个参数。

如果RFun 是一在[1,2]内的标量,则是线性排序,这个标量指定选择的压差。 如果RFun 是一具有两个参数的向量,则

RFun(1):对线性排序,标量指定的选择压差RFun(1)必须在[1,2]之间;对非线性排序,RFun(1)必须在[1,length(ObjV)-2]之间。如果为NaN ,则RFun(1)假设为2。

RFun(2):指定排序方法。0为线性排序,1为非线性排序。

如果RFun 为长为length(ObjV)的向量,则它包含对每一行的适应度值计算。 如果省略RFun 或为NaN ,则采用线性排序,选择压差假设为2。

SUBPOP 是一任选参数,指明在ObjV 中子种群的数量。如果省略SUBPOP 或为NaN ,则假设SUBPOP=1。在ObjV 中的所有子种群大小必须相同。

如果ranking 被调用于多子种群,则ranking 独立地对每个子种群执行。 例5.9 函数ranking 应用举例。下面为取不同参数时使用函数ranking 对10个个体的种群进行排序。

考虑具有10个个体的种群,其当前目标值如下:

[]T

ObjV=12345109876

(1) 使用线性排序和选择压差为2估算适应度。 FitnV = ranking(ObjV)

2.0000 1.7778 1.5556 1.3333 1.1111FitnV 0 0.2222 0.4444 0.6667 0.8889??????????????

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

(2) 使用非线性排序和选择压差为2估算适应度。

FitnV = ranking(ObjV ,[2 1])

2.0000 1.6633 1.3833 1.1504 0.9568FitnV= 0.3807 0.4577 0.5504 0.6618 0.7957??????????????

??????????????????

(3) 使用Rfun 中的值估算适应度。 []50403025181410753RFun =

FitnV = ranking(ObjV , RFun)

50 40 30 25 18FitnV= 3 5 7 10 14??????????????

??????????????????

(4) 使用非线性排序,选择压差为2,在ObjV 中有两个子种群估算适应度。

FitnV = ranking(ObjV ,[2 1],2)

2.0000 1.2889 0.8307 0.5354 0.3450FitnV= 0.3450 0.5354 0.8307 1.2889 2.0000??

??

??

??

????

??

????

??

??

??

??

??

????

或 2.001.280.830.530.34FitnV=0.340.530.831.282.00???????????????

????????????????? 算法说明:这个算法对线性和非线性的排序首先对目标函数值进行降序排序。最小适应

度个体被放置在排序的目标函数值列表的第一个位置,最适应个体放置在位置Nind 上。这里Nind 是种群中个体的数量。每个个体的适应度值根据它在排序种群中的位置Pos 计算出来。

对线性排序,其适应度值由下式计算:

(1)

()22(1)(1)

Pos FitnV Pos sp sp Nind -=-+?-?

-

对非线性排序:

∑=-?=

Nind i Pos i X X Nind Pos FitnV 1

1

)

()(

这里X 是多项式方程的方根:

sp X sp X sp X sp Nind Nind +?++?+?-=--Λ21)1(0

向量FitnV 是没有排序的,反映原始输入向量ObjV 的顺序。 参见:select ,rws ,sus

5.2.10 函数 recdis

功能:离散重组

格式:NewChrom = recdis(OldChrom)

详细说明:recdis 完成当前种群OldChrom 中一对个体的离散重组,在交配后返回新的种群NewChrom 。OldChrom 中每一行对应一个个体。交配的一对是有序的,奇数行与它下一个偶数行配对。如果矩阵OldChrom 的行数是奇数,最后一个奇数行不交配并添加到NewChrom 的末端。因此种群被组织成需要交配的连续对。通过使用函数ranking 达到计算每个个体的适应度水平和使用选择函数(例如select)在当前种群中按适应度相关的概率选择个体。

recdis 是一个低级重组函数,通常被函数recombin 调用。

例5.10 离散重组函数recdis 应用举例。下面的程序代码为5个实值个体种群的离散重组。 考虑如下具有5个实值个体的种群:

40.23-17.1728.9515.3882.0613.2613.35-9.09OldChrom=52.4325.6415.20

-2.54-47.5049.10

9.0910.65-90.50-13.46-25.63

-0.89??

???

???

?

???????

完成离散重组:

NewChrom = recdis(OldChrom)

函数recdis 提供一中间掩码表决定哪些父个体为子代贡献哪些变量。例如:

12122211Mask=21211122????

?

???????

重组后NewChrom 成为如下:

40.23

13.26

28.95-9.09%(1),1&282.06

13.2628.9515.38%(2),1&2NewChrom=-47.5025.649.09-2.54%(3),3&452.43

25.649.0910.65%(4),3&4mask row mask row mask row mask row

??

???

???

?

?

??

由于在父种群OldChrom 的个体数量是奇数,最后一个个体不参加重组而附加到NewChrom 并且后代返回到用户空间,因此

40.2313.2628.95-9.0982.0613.2628.9515.38NewChrom=-47.5025.649.09

-2.5452.4325.64

9.0910.65-90.50-13.46-25.63-0.89??

???

????

???????

算法说明:离散重组是在个体间交换变量值,对每个变量,贡献给子代变量值的父亲是

用随机的相同的概率挑选的。离散重组产生父母定义的个体的所有可能。

参见:recombin ,recint ,reclin ,ranking ,sus ,rws

5.2.11 函数 recint

功能:中间重组

格式:NewChrom = recint(OldChrom)

详细说明:recint 完成当前种群OldChrom 成对个体的中间重组,返回交配后的新种群NewChrom 。OldChrom 中每一行对应一个个体。

recint 是一个只能应用于实值(非二进制、非整数)变量种群的函数。

交配的对是有序的,奇行与它下一个偶行配对。如果OldChrom 的行数是奇数,最后一个奇数行不参与交配,直接加到NewChrom 的末尾。因此种群根据交配要求组织成连续的对。通过使用ranking 计算每个个体的适应度水平和使用一个选择函数(例如select)和与适应度相关的概率在recint 是一低级重组函数,通常被recombin 调用。

例5.11 中间重组函数recint 应用举例。下面的程序代码为具有3个实值个体种群的中间重组。

考虑下面具有3个实值个体的种群。

40.23-17.1728.9515.38%1OldChrom=82.0613.2613.35-9.09%252.4325.6415.20-2.54%3

??

????

????

父代父代父代

执行中间重组:

NewChrom = recint(OldChrom);

通过向最先的父个体增加不同微量产生新值,中间比率因子表Alpha 被产生,例如:

-0.130.500.320.16%1Alpha 1.120.540.44 1.16%2??

=??

??

子代子代

因此,重组后的NewChrom 成为:

34.40-1.9223.8611.33%(1,;),12NewChrom=87.11-0.5921.98-13.04%(2,;),12

Alpha Alpha ??

??

??

父和父和

由于父种群OldChrom 的个体数是奇数,最后一个个体不参加重组直接加入NewChrom ,因此返回用户空间的后代如下:

34.40-1.9223.8611.33NewChrom=87.11-0.5921.98-13.0452.4325.6415.20-2.54??

????

????

算法说明:中间重组重组双亲值使用如下公式:

offspring = parent1 + Alpha(parent2 - parent1)

这里Alpha 是在区间[-0.25,1.25]内随机一致性选择产生的标量因子。Recint 对重组的每一对值产生一新的Alpha 。

中间重组能产生略大于双亲定义的立体空间中的任意点。

中间重组与线性重组reclin 相似。然而recint 对每对值使用了一新的Alpha 值一起重组,而reclin 对每对双亲使用一Alpha 因子。

参见:recombin ,recdis ,reclin ,ranking ,sus ,rws

5.2.12 函数 reclin

功能:线性重组

格式:NewChrom = reclin(OldChrom)

详细说明:reclin 完成当前种群OldChrom 成对个体的线性重组,返回交配后的新种群

NewChrom 。OldChrom 中每一行对应一个个体。

reclin 是一个只能应用于实值(非二进制、非整数)变量种群的函数。

交配的对是有序的,奇行与它下一个偶行配对。如果OldChrom 的行数是奇数,最后一个奇数行不参与交配,直接加到NewChrom 的末尾。因此种群根据交配要求组织成连续的对。通过使用ranking 计算每个个体的适应度水平和使用一个选择函数(例如select)用与适应度相关的概率在当前种群中选择个体完成这个重组工作。

reclin 是一低级重组函数,通常被recombin 调用。

例5.12 函数reclin 的应用举例。下面的程序代码为具有3个实值个体种群的线性重组。

40.23-17.1728.9515.38%1OldChrom=82.0613.2613.35-9.09%252.4325.6415.20-2.54%3

??

????

????

父代父代父代

执行线性重组:

NewChrom = reclin (OldChrom)

通过向最先的父个体增加不同微量产生新值,中间比率因子表Alpha 被产生,例如:

0.78%1Alpha 1.05%2??

=??

??

子代子代

因此,重组后的NewChrom 成为如下:

72.97 6.6416.74-3.77%(1,;),12NewChrom=84.2514.8512.54-10.37%(2,;),12

Alpha Alpha ??

??

??

父和父和

由于父种群OldChrom ,的个体数是奇数,最后一个个体不参加重组直接加入NewChrom 后,因此返回用户空间的后代如下:

72.97 6.6416.74-3.77NewChrom=84.2514.8512.54-10.3752.4325.6415.20-2.54??

????

????

算法说明:线性重组重组父值使用如下公式:

offspring = parent1 +Alpha * parent2 - parent1)

这里Alpha 是在区间[-0.25,1.25]内随机一致性选择产生的标量因子。reclin 对重组的每一对双亲产生一新的Alpha 。

线性重组能产生略大于双亲定义的线段中的任意点。

线性重组reclin 与中间重组recint 相似。然而reclin 对每对双亲使用一Alpha 因子一起重组,而recint 对每对值使用了一新的Alpha 值。

参见: recombin ,recdis ,recint ,ranking ,sus ,rws

5.2.13 函数 recmut

功能:具有突变特征的线性重组。

格式:① NewChrom = recmut(OldChrom,FieldDR)

② NewChrom = recmut(OldChrom,FieldDR,MutOpt)

详细说明:recmut 完成当前种群OldChrom 成对个体的具有突变特征的线性重组,返回交配后的新种群NewChrom 。OldChrom 中每一行对应一个个体。

FieldDR 是一矩阵,包含一个个体的每个变量的边界(参看crtrp)。 MutOpt 是一最多有两个参数的任选向量。

MutOpt(1):包含在[0,1]范围内的重组概率的标量。如果省略或为NaN ,则MutOpt(1)假设为1。

MutOpt(2):包含在[0,1]范围内用于压缩重组范围的标量值。如果省略或为NaN ,则MutOpt(2)假设为1(不压缩)。

recmut 是一个只能应用于实值(非二进制、非整数)变量种群的函数。

交配的对是有序的,奇数行与它下一个偶数行配对。如果OldChrom 的行数是奇数,最后一个奇数行不参与交配,直接加到NewChrom 的末尾。因此种群根据交配要求组织成连续的对。通过使用ranking 计算每个个体的适应度水平和使用一个选择函数(例如select)用与适应度相关的概率在当前种群中选择个体完成这个重组工作。

Recmut 是一使用突变特征因子的遗传算法育种器(参看mutbga)。这个重组函数的调用语法是与突变函数mutbga 的语法相同。

Recmut 是一低级重组函数,通常被mutate 调用。

例5.13 函数recmut 的应用举例。下面为具有4个实值个体种群的线性重组示例。

40.2381-17.176628.953015.3883%182.064213.263913.3596-9.0916%2OldChrom=52.439625.641015.2014-2.5435%3-47.538149.19639.095410.6521%4

????

?

???????

p p p p

边界定义如下:

100503020FieldDR=100503020----??

?

???

执行下列具有突变特征的线性重组:

NewChrom = recmut(OldChrom,FieldDR)

recmut 产生一中间任务表RecMx ,决定哪些对双亲参加重组(这里全部参加)并记下重组的步长。例如:

1111%1&p2RecMx 1111%p3&p4

p ---??

=??

----??

两个更进一步的表delta 和Diff 指出正常的重组步长:

0.12500.12500.12500.1250%p1&p2delta=0.00050.00050.00050.0005%p3&p4

????

??

1.3937 1.0143-0.5196-0.8157%p1&p2Diff=-10.5712

2.4906-0.6456 1.3952%p3&p4

????

??

重组后NewChrom 成为:

57.6637-23.517730.000017.428164.638619.605011.4106-11.1314NewChrom=52.971925.578315.2112-2.5576-48.070449.25909.085610.6662????

?

???????

算法说明:一对双亲的后代按如下方法计算:

offspring1=parent1 + RecMx ╳range ╳MutOpt(2)╳delta ╳Diff offspring2=parent2 + RecMx ╳range ╳MutOpt(2)╳delta ╳(-Diff)

∑-=-=1

2m i i i a delta

RecMx =±1,具有概率MutOpt(1)(在这里为0.9),否则为0。 range = 0.5,为变量的域 (参看FieldDR 的定义)。 a i =1,具有概率1/m ,否则为0,其中m =20。

parent1-parent2

parent1-parent2

Diff =

这个重组算子产生其双亲(线性重组)定义方向的子代。它经常超出双亲定义的范围或一个父亲定义的方向。子代的这点是由突变算子的特征定义的,小步长情况产生的概率要比大步长产生的概率来得大(参看mutbga)。

参见:mutate ,mutbga ,reclin

5.2.14 函数 recombin

功能:重组个体(高级函数)。

格式: ① NewChrom = recombin(REC_F,Chrom)

② NewChrom = recombin(REC_F,Chrom,RecOpt)

③ NewChrom = recombin(REC_F,Chrom,RecOpt,SUBPOP)

详细说明:recombin 完成种群Chrom 中个体的重组,在新种群NewChrom 中返回重组后的个体。Chrom 和 NewChrom 中的一行对应一个体。

REC_F 是一包含低级重组函数名的字符串,例如recdis 或xovsp 。

RecOpt 是一指明交叉概率的任选参数,如省略RecOpt 或为NaN ,将设为缺省值。

SUBPOP 是一决定Chrom 中子种群个数的可选参数,如果省略SUBPOP 或为NaN ,则假设SUBPOP=1。Chrom 中的所有子种群必须有相同的大小。

例5.14 函数recombin 的应用举例。下面的程序代码为:首先产生5个个体的种群,然后利用函数recombin ,对该种群进行重组。

-100 -50 -30 -20BaseV= 100 50 30 20??

??

??

Chrom = crtrp(5,BaseV); % 产生5个个体的种群

13.3546 -44.1138 -27.0433 9.5997 64.6017 -13.9689 4.2634 -2.7251Chrom 34.7897 4.8513 12.0514 5.3706 99.8895 -23.8230 27.7373 12.1211 92.3273 9.7345 15.0311 -16.6448?=??????

?????????

NewChrom=recombin('recdis',Chrom); % 参数选取离散重组

64.6017 -13.9689 4.2634 -2.7251 64.6017 -13.9689 4.2634 -2.7251NewChrom= 99.8895 4.8513 27.7373 5.3706 34.7897 4.8513 12.0514 5.3706 92.3273 9.7345 15.0311 -16.6448???

????

?????????

NewChrom =recombin('xovsp',Chrom); % 参数选取单点交叉

13.3546 -44.1138 4.2634 -2.7251 64.6017 -13.9689 -27.0433 9.5997NewChrom= 34.7897 4.8513 27.7373 12.1211 99.8895 -23.8230 12.0514 5.3706 92.3273 9.7345 15.0311 -16.6448???????

?????????

算法说明:recombin 检测输入参数的一致性并调用低级重组函数。如果recombin 调用时具

有多个子种群,则对每个子种群分别调用低级重组函数。

参见:recdis ,recint ,reclin ,xovsp ,xovdp ,xovsh ,mutate ,select

5.2.15 函数 reins

功能:重插入子代到种群。

格式:① Chrom = reins(Chrom,SelCh)

② Chrom = reins(Chrom,SelCh,SUBPOP)

③ Chrom = reins(Chrom,SelCh,SUBPOP,InsOpt,ObjVCh)

④ [Chrom,ObjVCh]= reins(Chrom,SelCh,SUBPOP,InsOpt,ObjVCh,ObjVSel)

详细说明:reins 完成插入子代到当前种群,用子代代替父代并返回结果种群。子代包含在矩阵SelCh 中,父代在矩阵Chrom 中,Chrom 和Selch 中每一行对应一个个体。

SUBPOP 是一可选参数,指明Chrom 和SelCh 中子种群的个数。如果SUBPOP 省略或为NaN ,则假设SUBPOP=1。在Chrom 和SelCh 中每个子种群必须具有相同大小。

InsOpt 是一最多有两个参数的任选向量。

InsOpt(1)是一标量,指明用子代代替父代的选择方法。0——均匀选择,子代代替父代使用均匀随机选择。1——基于适应度的选择,子代代替最小适应的个体。如果省略InsOpt(1)或为NaN ,则假设InsOpt(1)=0。

InsOpt(2)是一在[0,1]间的标量,表示每个子种群中重插入的子代个体与整个子种群中个体的比率。如果省略InsOpt(2)或为NaN ,则假设InsOpt(2)=1.0。

如果InsOpt 省略或为NaN ,则InsOpt 为缺省值。 ObjVCh 是一可选的列向量,包含Chrom 中个体的目标值。对基于适应度的重插入,ObjVCh 是必需的。

ObjVSel 是一可选的列向量,包含Selch 中个体的目标值。如果子代的数量大于重插入种群中的子代数量,则ObjVSel 是需要的。在这种情况下,子代将按它们的适应度选择插入。

在格式④中,输出参数ObjVCh 是子代个体的适应度值,包含子代中原个体的适应度值ObjVCh 和产生的新个体的适应度值ObjVSel 。

例5.15 函数reins 的应用举例。下面的程序代码为在6个个体的父代种群中插入子代种群。 FieldDR1=[-10,-5,-3,-1;10,5,3,1]; % 定义边界变量

-10 -5 -3 -1FieldDR1= 10 5 3 1????

??

Chrom=crtrp(6,FieldDR1); % 产生6个个体的父代种群

Chrom=???????

??

???????????0.2042 1.5358- 3.1673 5.3310 0.5719- 0.3613 2.1181- 9.1598 0.3193 0.7268 4.8514- 3.4551 0.5073 1.9164

4.0459- 4.1902- 0.4736- 2.8958- 3.6906- 0.0318- 0.6440 2.9129 1.6612

5.7602- FieldDR2=[-100,-50,-30,-20;100,50,30,20]; % 定义边界变量

-100 -50 -30 -20FieldDR2= 100 50 30 20????

??

SelCh=crtrp(2,FieldDR2); % 产生2个个体的子代种群

SelCh=??

??

??11.6291- 12.1112 36.9018- 49.7599-13.9071 26.4492 43.2736 42.7701

-

插入所有子代到种群中:

Chrom = reins(Chrom,SelCh) 这个新种群Chrom 产生:

-5.7602 1.6612 2.9129 0.6440 -0.0318 -3.6906 -2.8958 -0.4736 -49.7599 -36.9018 12.1112 -11.6291Chrom= 3.4551 -4.8514 0.7268 0.3193 -42.7701 43.2736 26.4492 13.9071 5.3310 3.1673 -1.5358 0.2042????????

??????????

为父种群Chrom 考虑如下目标值ObjVCh 向量和为子代Selch 考虑如下目标值ObjVSel 向量:

ObjVCh = [21; 22; 23; 24; 25; 26]; ObjVSel= [31; 32];

基于适应度插入所有子代代替最不适应的父个体。 Chrom = reins(Chrom,SelCh,1,1,ObjVCh);

-5.7602 1.6612 2.9129 0.6440 -0.0318 -3.6906 -2.8958 -0.4736 -4.1902 -4.0459 1.9164 0.5073Chrom= 3.4551 -4.8514 0.7268 0.3193 -49.7599 -36.9018 12.1112 -11.6291 -42.7701 43.2736 26.4492 13.9071??????????

????????

基于适应度插入50% 的子代,并按插入的子代拷贝目标值:

[Chrom, ObjVCh] = reins(Chrom,SelCh,1,[1 0.5],ObjVCh,ObjVSel) ObjVCh =[21; 22; 23; 24; 25; 31]

遗传算法MATLAB完整代码(不用工具箱)

遗传算法解决简单问题 %主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在区间[-2,2]上的最大值clc; clear all; close all; global BitLength global boundsbegin global boundsend bounds=[-2,2]; precision=0.0001; boundsbegin=bounds(:,1); boundsend=bounds(:,2); %计算如果满足求解精度至少需要多长的染色体 BitLength=ceil(log2((boundsend-boundsbegin)'./precision)); popsize=50; %初始种群大小 Generationmax=12; %最大代数 pcrossover=0.90; %交配概率 pmutation=0.09; %变异概率 %产生初始种群 population=round(rand(popsize,BitLength)); %计算适应度,返回适应度Fitvalue和累计概率cumsump [Fitvalue,cumsump]=fitnessfun(population); Generation=1; while Generation

智能信息处理导论简答题

1、简述可拓思想及其拓展工具 可拓思想是利用物元理论、事元理论和可拓集合理论,结合各应用理论和方法去处理该领域中的矛盾问题,以化不可行为可行,不可知为可知,化不属于为属于、化对立为共存。 可拓拓展工具定性工具物元和事元是可拓学的基本概念,可拓变换是解决矛盾问题的基本工具,可拓分析方法是寻求可拓变换的依据。利用它们可以从定性的角度分析事物开拓的可能性。 定量工具可拓集合是描述事物具有某种性质的程度和量变与质变的定量化工具。 2、什么是云计算?云计算为什么备受关注?为什么要实现云计算? 云计算的基本原理是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统 云计算是一种革命性的举措,打个比方,这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通。它最大的不同在于它是通过互联网进行传输的。 在未来只需一台笔记本或者手机,就可以通过网络服务来满足人们一切甚至包括超级计算这样的任务。最终用户才是云计算的真正拥有者。云计算的思想:把力量联合起来,给其中的每一个成员使用。 3、简述粗集理论. ①利用抽象代数来研究粗糙集代数空间这种特殊的代数结构。②利用拓扑学描述粗糙空间。 ③还有就是研究粗糙集理论和其他软计算方法或者人工智能的方法相接合,例如和模糊理论、神经网络、支持向量机、遗传算法等。④针对经典粗糙集理论框架的局限性,拓宽粗糙集理论的框架,将建立在等价关系的经典粗糙集理论拓展到相似关系甚至一般关系上的粗糙集理论 4、比较协同进化遗传算法与普通遗传算法。 遗传算法虽然实现简单,操作方便,但是存在很多的缺陷:①很容易导致“早熟”,陷入局部最优;②随着问题规模的增大,其计算复杂度明显增加,收敛性显著降低,搜索问题空间能力也下降;③依靠简单的交叉、变异操作,很容易产生不可行解;④交叉产生的子代可能一个适应度很高,另一个很低,低的个体虽然含有较好的基因,但是会被淘汰。 两种算法的比较结果很明显就可以看出两种算法的优劣:CGA、要明显优于GA,计算是时间短,收敛速度快,而且收敛精度也比较高。在求解分类神经网络训练问题计算工作量大大减少,同样达到90%的分类精度,CGA的遗传代数只有GA的1/3.在求解Manipulator Path Planning问题CGA占用CPU的时间只有GA的1/9 5、比较免疫算法与遗传算法。 (1)免疫算法与遗传算法起源于抗原与抗体之间的内部竞争,其相互作用的环境既包括外部也包括内部的环境;而遗传算法起源于个体与自私基因之间的外部竞争。(2)免疫算假设免疫元素互相作用,即每一个免疫细胞等个体可以相互作用,而遗传算法不考虑个体之间的作用。(3)免疫算法中,基因可以由个体自己选择,而在遗传算法中基因有环境选择。(4)免疫算法中,基因组合是为了获得多样性,一般不用交叉算子,因为免疫算法中基因是在同一代个体进行进化,这种情况下设交叉概率为0;而遗传算法后代个体基因通常是由父代交叉的结果,交叉用于混合基因(5)免疫算法选择个变异阶段明显不同,而遗传算法中它们是交替进行的。 6、请描述遗传算法特点。 (1)遗传算法从问题解的串集开始搜索,而不是从单个解开始。这是遗传算法与传统优化算法的极大区别。传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。遗传

遗 传 算 法 详 解 ( 含 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、设置遗传算法的运行参数。包括:种群规模、变量个数、区域描述器、交叉概率、变异概率以及遗传运算的终止进化代数等等。

智能算法实验报告

人工智能实验—智能算法 实验一蚂蚁算法 一、实验目的: 理解蚂蚁算法的本质,会编写蚂蚁算法来求解TSP问题。 二、实验原理: 蚂蚁在寻找食物源时,能在其走过的路上释放一种特殊的分泌物——信息素(随着时间的推移该物质会逐渐挥发), 后来的蚂蚁选择该路径的概率与当时这条路径上该物质的强度成正比。当一定路径上通过的蚂蚁越来越多时,其留下的信息素轨迹也越来越多,后来蚂蚁选择该路径的概率也越高,从而更增加了该路径的信息素强度。 而强度大的信息素会吸引更多的蚂蚁,从而形成一种正反馈机制, 通过这种正反馈机制,蚂蚁最终可以发现最短路径。特别地,当蚂蚁巢穴与食物源之间出现障碍物时,蚂蚁不仅可以绕过障碍物,而且通过蚁群信息素轨迹在不同路径上的变化,经过一段时间的正反馈,最终收敛到最短路径上。 三、实验内容: #include #include #include using namespace std; const int MaxInt=~(unsigned int)0 / 2; /*double d[5][5]={ {0, 7, 6,10,13}, {7, 0, 7,10,10}, {6, 7, 0,5 ,9 }, {10,10,5,0, 6 }, {13,10,9,6, 0 } }; //表示路径(i,j)之间的长度 */ class Ant { private: int AntNum;//蚂蚁个数; int NodeNum;//节点个数; int MaxRunNum;//最大运行次数 int RunNum;//运行次数 double **d;//表示路径(i,j)之间的长度 double **n;//边弧(i,j)的能见度(visibility), 或称局部启发因子,一般取1/d 表示路径(i,j)之间的长度; double **t;//边弧(i,j)的信息素轨迹强度(intensity) double INITINFO;//初始的信息素值 //double **deltaT;//蚂蚁k 于弧上(i,j)留下的单位长度轨迹信息素数量;

MATLAB实验遗传算法与优化设计

实验六 遗传算法与优化设计 一、实验目的 1. 了解遗传算法的基本原理和基本操作(选择、交叉、变异); 2. 学习使用Matlab 中的遗传算法工具箱(gatool)来解决优化设计问题; 二、实验原理及遗传算法工具箱介绍 1. 一个优化设计例子 图1所示是用于传输微波信号的微带线(电极)的横截面结构示意图,上下两根黑条分别 代表上电极和下电极,一般下电极接地,上电极接输入信号,电极之间是介质(如空气,陶瓷等)。微带电极的结构参数如图所示,W 、t 分别是上电极的宽度和厚度,D 是上下电极间距。当微波信号在微带线中传输时,由于趋肤效应,微带线中的电流集中在电极的表面,会产生较大的欧姆损耗。根据微带传输线理论,高频工作状态下(假定信号频率1GHz ),电极的欧姆损耗可以写成(简单起见,不考虑电极厚度造成电极宽度的增加): 图1 微带线横截面结构以及场分布示意图 {} 28.6821ln 5020.942ln 20.942S W R W D D D t D W D D W W t D W W D e D D παπππ=+++-+++?????? ? ??? ??????????? ??????? (1) 其中πρμ0=S R 为金属的表面电阻率,为电阻率。可见电极的结构参数影响着电极损

耗,通过合理设计这些参数可以使电极的欧姆损耗做到最小,这就是所谓的最优化问题或者称为规划设计问题。此处设计变量有3个:W 、D 、t ,它们组成决策向量[W, D ,t ] T ,待优化函数(,,)W D t α称为目标函数。 上述优化设计问题可以抽象为数学描述: ()()min .. 0,1,2,...,j f X s t g X j p ????≤=? (2) 其中()T n x x x X ,...,,21=是决策向量,x 1,…,x n 为n 个设计变量。这是一个单目标的数学规划问题:在一组针对决策变量的约束条件()0,1,...,j g X j p ≤=下,使目标函数最小化(有时 也可能是最大化,此时在目标函数()X f 前添个负号即可)。满足约束条件的解X 称为可行解,所有满足条件的X 组成问题的可行解空间。 2. 遗传算法基本原理和基本操作 遗传算法(Genetic Algorithm, GA)是一种非常实用、高效、鲁棒性强的优化技术,广 泛应用于工程技术的各个领域(如函数优化、机器学习、图像处理、生产调度等)。遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化算法。按照达尔文的进化论,生物在进化过程中“物竞天择”,对自然环境适应度高的物种被保留下来,适应度差的物种而被淘汰。物种通过遗传将这些好的性状复制给下一代,同时也通过种间的交配(交叉)和变异不断产生新的物种以适应环境的变化。从总体水平上看,生物在进化过程中子代总要比其父代优良,因此生物的进化过程其实就是一个不断产生优良物种的过程,这和优化设计问题具有惊人的相似性,从而使得生物的遗传和进化能够被用于实际的优化设计问题。 按照生物学知识,遗传信息基因(Gene)的载体是染色体(Chromosome),染色体中 一定数量的基因按照一定的规律排列(即编码),遗传基因在染色体中的排列位置称为基因

一种改进的遗传算法

第17卷第3期 辽阳石油化工高等专科学校学报Vol.17No.3 2001年9月 Journal of Liaoyang Petrochemical College September2001 一种改进的遗传算法 王亮申 王文友 吴克勤 江远鹏 谢 荣 (辽阳石油化工高等专科学校机械系,辽阳111003) 摘 要 给出的适应值标定公式能够解决对个体选择压力和标定后适应值非负问题. 对多极值函数的遗传算法所提出的改进措施可以增加群体的多样性,避免算法“早熟”,过早 陷入局部最优. 关键词 遗传算法;适应值标定;早熟 中图分类号 O224 由美国密执安(Michrgan)大学的Holland教授等人在1975年创立的遗传算法(G enetic Algo2 rithms简称G A),是建立在达尔文(Darwin)的生物进化论和孟德尔(Mendel)的遗传学说基础上的算法.经过后人的不断改进使得遗传算法更加完善.由于遗传算法求解复杂优化问题的巨大潜力及其在各个领域(如布局优化问题、交通问题、图像处理与识别、结构设计、电力系统设计、可靠性计算等)的成功应用,这种算法越来越被人们所接受. 遗传算法是一种基于生物进化原理构想出来的搜索最优解的仿生算法,它模拟基因重组与进化的自然过程,把待解决问题的参数编成二进制码或十进制码(也可编成其它进制码)即基因(gene),若干基因组成一个染色体(个体),许多染色体进行类似于自然选择、配对交叉和变异运算,经过多次重复迭代(即世代遗传)直至得到最后的优化结果.习惯上,适应度值越大,表示解的质量越好.对于求解最小值问题可通过变换转为求解最大值问题.遗传算法是一种高度并行、随机、自适应搜索算法. 尽管遗传算法有许多优点,也有许多专家学者对遗传算法进行不断研究,但目前存在的问题依然很多.如(1)适应值标定方式多种多样,没有一个简洁、通用方法,不利于对遗传算法的使用; (2)遗传算法的“早熟”现象即很快收敛到局部最 收稿日期:2001-06-27优解而不是全局最优解是迄今为止最难处理的关键问题;(3)快要接近最优解时在最优解附近左右摆动,收敛较慢. 1 改进方法 1.1 适应值标定 初始种群中可能存在特殊个体的适应值超常(如很大).为了防止其统治整个群体并误导群体的发展方向而使算法收敛于局部最优解需限制其繁殖;在计算临近结束,遗传算法逐渐收敛,由于群体中个体适应值比较接近,继续优化选择困难,造成在最优解附近左右摇摆,此时应将个体适应值适当加以放大,以提高选择能力,这就是适应值的标定.文献[1]提出的标定方法有两个计算公式,不利于使用;文献[2]的标定方式虽然限制了适应值范围但将最大最小值颠倒.此外象幂律标定、对数标定等亦有应用.本文针对适应值标定问题提出以下计算公式. f’= 1 f max-f min+δ (f+|f min|) f′—为标定后的适应值;f—为原适应值;δ—为在(0,1)内的一个正实数,目的是防止分母为零和增加遗传算法的随机性;|f min|—是为了保证定标后的适应值不出现负值。

自适应PID控制综述(完整版)

自适应PID控制 摘要:自适应PID控制是一门发展得十分活跃控制理论与技术,是自适应控制理论的一个重要组成部分,本文简要回顾PID控制器的发展历程,对自适应PID控制的主要分支进行归类,介绍和评述了一些有代表性的算法。 关键词:PID控制,自适应,模糊控制,遗传算法。 Abstract: The adaptive PID control is a very active developed control theory and technology and is an important part of adaptive control theory.This paper briefly reviews the development process PID controller.For adaptive PID control of the main branches, the paper classifies,introduces and reviews some representative algorithms. Keywords: PID control, adaptive, fuzzy control, genetic algorithm 1 引言 从问世至今已历经半个世纪的PID控制器广泛地应用于冶金、机械、化工、热工、轻工、电化等工业过程控制之中,PID控制也是迄今为止最通用的控制方法, PID控制是最早发展起来的控制策略之一,因为他所涉及的设计算法和控制结构都很简单,并且十分适用于工程应用背景,所以工业界实际应用中PID 控制器是应用最广泛的一种控制策略(至今在全世界过程控制中用的80% 以上仍是纯PID调节器,若改进型包含在内则超过90%)。由于实际工业生产过程往往具有非线性和时变不确定性,应用常规PID控制器不能达到理想控制效果,长期以来人们一直寻求PID控制器参数的自动整定技术,以适应复杂的工况和高指标的控制要求。随着微机处理技术和现代控制理论诸如自适应控制、最优控制、预测控制、鲁棒控制、智能控制等控制策略引入到PID控制中,出现了许多新型PID控制器。人们把专家系统、模糊控制、神经网络等理论整合到PID控制器中,这样既保持了PID控制器的结构简单、适用性强和整定方便等优点,又通过先进控制技术在线调整PID控制器的参数,以适应被控对象特性的变化。 2 自适应PID控制概念及发展 2.1 PID控制器 常规PID控制系统原理框图如下图所示,系统由模拟PID控制器和被控对象组成。

Matlab遗传算法工具箱的应用

文章编号:1006-1576(2005)06-0115-02 Matlab遗传算法工具箱的应用 曾日波 (江西财经大学电子学院,江西南昌 330013) 摘要:Matlab遗传算法(GA)优化工具箱是基于基本操作及终止条件、二进制和十进制相互转换等操作的综合函数库。其实现步骤包括:通过输入及输出函数求出遗传算法主函数、初始种群的生成函数,采用选择、交叉、变异操作求得基本遗传操作函数。以函数仿真为例,对该函数优化和GA改进,只需改写函数m文件形式即可。 关键词:遗传算法;Matlab;遗传算法工具箱;仿真 中图分类号:TP391.9 文献标识码:A Application of Genetic Algorithm Toolbox Based on Matlab ZENG Ri-bo (College of Finance and Economics Electronics, Jiangxi University, Nanchang 330013, China) Abstract: The optimization toolbox of Matlab genetic algorithm (GA) is a excellent generalized function library is to bases on basic operation and terminate term, the inter-conversion between binary system and ten system the system etc. Its step includes: the main function of GA and the creation functions of initial population was calculated through inputting and outputting functions, and the basic functions of genetic operation was computed by choosing, interlacing, and aberrance functions to realize the system. Take the function simulation as an example, the optimization of function and improvement of GA were achieved by modification the file format of m function. Keywords: Genetic algorithm; Matlab; Optimization toolbox; Simulation 1 引言 遗传算法(GA:Genetic Algorithm)是对生物进化过程进行的数学方式仿真。将Matlab引入遗传算法,在Matlab平台上开发遗传算法的优化工具箱(GAOT:Genetic Algorithm for Optimization Toolbox),可更好地认识GA,改进GA。 2 基于Matlab的优化工具箱 遗传算法的优化工具箱(GAOT)是从遗传算法的基本结构出发,考虑到基本操作及终止条件、二进制和十进制的相互转换等操作的综合函数库。 2.1遗传算法主函数 function[x,endPop,bPop,traceInfo]= ga(bounds,evalFN,evalOps,startPop,opts,termFN,termOps, selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps) 输出参数:x-最优解,endPop-最终种群,bPop-最优种群的搜索轨迹。 输入参数:bounds-变量上下界的矩阵,evalFN-适应度函数,evalOps-传递给适应度函数的参数,startPop-初始种群,termFN-终止函数的名称,termOps-传递个终止函数的参数,selectFN -选择函数的名称,selectOps-传递个选择函数的参数,xOverFNs-交叉函数名称表,以空格分开,xOverOps-传递给交叉函数的参数表,mutFNs-变异函数表,mutOps-传递给交叉函数的参数表。 2.2 初始种群的生成函数 function[pop]=initializega (num,bounds,eevalFN,eevalOps,options) 输出参数:pop-生成的初始种群。 输入参数:num-种群中的个体数目,bounds -代表变量的上下界的矩阵,eevalFN-适应度函数,eevalOps-传递给适应度函数的参数,options -选择编码形式(浮点编码或是二进制编码)[precision F_or_B],precision-变量进行二进制编码时指定的精度,F_or_B-为1时选择浮点编码,否则为二进制编码,由precision指定精度)。 2.3 基本遗传操作函数 (1) 选择 function[newPop] = Select(oldPop,options) 参数说明:newPop-由父代种群选出的新的种群,oldPop-当前的种群(即父代种群),options -选择概率。 (2) 交叉 function [c1,c2]=crossover(p1,p2,bounds,ops) 参数说明:p1-第一个父代个体,p2-第二个父代个体,bounds-可行域的边界矩阵,c1、c2-产生的两个新的子代。 (3) 变异 function [child] = Mutation(par,bounds,genInfo,Ops) 变异操作是由一个父代产生单个子代。 3 仿真实例与分析 收稿日期:2005-06-15;修回日期:2005-08-07 作者简介:曾日波(1964-),男,江西人,2000年获华中科技大学工程硕士学位,从事嵌入式系统的应用研究。 ·115·

matlab遗传算法工具箱函数及实例讲解

matlab遗传算法工具箱函数及实例讲解 最近研究了一下遗传算法,因为要用遗传算法来求解多元非线性模型。还好用遗传算法的工箱予以实现了,期间也遇到了许多问题。借此与大家分享一下。 首先,我们要熟悉遗传算法的基本原理与运算流程。 基本原理:遗传算法是一种典型的启发式算法,属于非数值算法范畴。它是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。它是采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。遗传算法的操作对象是一群二进制串(称为染色体、个体),即种群,每一个染色体都对应问题的一个解。从初始种群出发,采用基于适应度函数的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。如此模仿生命的进化进行不断演化,直到满足期望的终止条件。 运算流程: 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来编写遗传算法代码时,要根据你所安装的工具箱来编写代码。

遗传算法基本原理及改进

遗传算法基本原理及改进 编码方法: 1、二进制编码方法 2、格雷码编码方法 3、浮点数编码方法。个体长度等于决策变量长度 4、多参数级联编码。一般常见的优化问题中往往含有多个决策变量,对这种还有多个变量的个体进行编码的方法就成为多参数编码方法。多参数编码的一种最常用和最基本的方法是:将各个参数分别以某种方式进行编码,然后再将它们的编码按照一定顺序连接在一起就组成了标识全部参数的个体编码。 5、多参数交叉编码:思想是将各个参数中起主要作用的码位集中在一起,这样他们就不易于被遗传算子破坏掉。在进行多参数交叉编码时,可先对各个参数进行编码;然后去各个参数编码串的最高位连接在一起,以他们作为个体编码串前N位编码,同上依次排列之。

改进遗传算法的方法: (1)改进遗传算法的组成成分或实用技术,如选用优化控制参数、适合问题的编码技术等。 (2)采用动态自适应技术,在进化过程中调整算法控制参数和编码精度。 (3)采用混合遗传算法 (4)采用并行算法 (5)采用非标准的遗传操作算子 改进的遗传算法: (1)分层遗传算法 (2)CHC算法 (3)messy遗传算法; (4)自实用遗传算法(Adaptive Genetic Algorithm) (5)基于小生境技术的遗传算法(Niched Genetic Algorithm,简称NGA)。 (6)并行遗传算法(Parallel Genetic Algorithm) (7)混合遗传算法:遗传算法与最速下降法相结合的混合遗传算法;遗传算法与模拟退火算法相结合的混合遗传算法。 解决标准遗传算法早熟收敛和后期搜索迟钝的方案 (1)变异和交叉算子的改进和协调采用 将进化过程划分为渐进和突变两个不同阶段 采用动态变异 运用正交设计或均匀设计方法设计新的交叉和变异算子 (2)采用局部搜索算法解决局部搜索能力差的问题 (3)采用有条件的替代父代的方法,解决单一的群体更新方式难以兼顾多样性和收敛性的问题 (4)收敛速度慢的解决方法; 产生好的初始群体 利用小生境技术 使用移民技术 采用自适应算子 采用与局部搜索算法相结合的混合遗传算法 对算法的参数编码采用动态模糊控制 进行未成熟收敛判断

第五章-遗传算法工具箱函数

第五章遗传算法工具箱函数 本章介绍英国设菲尔德大学开发的遗传算法工具箱函数。 由于MATLAB高级语言的通用性,对问题用M文件编码,与此配对的是MA TLAB先进的数据分析、可视化工具、特殊目的的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。MATLAB遗传算法工具箱为遗传算法从业者和第一次实验遗传算法的人提供了广泛多样的有用函数。 遗传算法工具箱使用MA TLAB矩阵函数为实现广泛领域的遗传算法建立一套通用工具,这个遗传算法工具是用M文件写成的,是命令行形式的函数,能完成遗传算法大部分重要功能的程序的集合。用户可通过这些命令行函数,根据实际分析的需要,编写出功能强大的MATLAB程序。 5.1 工具箱结构 本节给出GA工具箱的主要程序。表5.1为遗传算法工具箱中的各种函数分类表。 表5.1 遗传算法工具箱中函数分类表

5.1.1 种群表示和初始化 种群表示和初始化函数有:crtbase,crtbp,crtrp。 GA工具箱支持二进制、整数和浮点数的基因表示。二进制和整数种群可以使用工具箱中的crtbp建立二进制种群。crtbase是附加的功能,它提供向量描述整数表示。种群的实值可用crtrp进行初始化。在二进制代码和实值之间的变换可使用函数bs2rv,它支持格雷码和对数编码。 5.1.2 适应度计算 适应度函数有:ranking,scaling。 适应度函数用于转换目标函数值,给每一个个体一个非负的价值数。这个工具箱支持Goldberg的偏移法(offsetting)和比率法以及贝克的线性评估算法。另外,ranking函数支持非线性评估。 5.1.3 选择函数 选择函数有:reins,rws,select,sus。 这些函数根据个体的适应度大小在已知种群中选择一定数量的个体,对它的索引返回一个列向量。现在最合适的是轮盘赌选择(即rws函数)和随机遍历抽样(即sus函数)。高级入口函数select为选择程序,特别为多种群的使用提供了一个方便的接口界面。在这种情况下,代沟是必须的,这就是整个种群在每一代中没有被完全复制,reins能使用均匀的随机数或基于适应度的重新插入。 5.1.4 交叉算子 交叉算子函数有:recdis,recint,reclin,recmut,recombin,xovdp,xovdprs,xovmp,xovsh,xovshrs,xovsp,xovsprs。 交叉是通过给定的概率重组一对个体产生后代。单点交叉、两点交叉和洗牌交叉是由xovsp、xovdp、xovsh函数分别完成的。缩小代理交叉函数分别是:xovdprs、xovshrs和xovsprs。通用的多点交叉函数是xovmp,它提供均匀交换的支持。为支持染色体实值表示,离散的、中间的和线性重组分别由函数recdis、recint、reclin完成。函数recmut提供具有突变特征的线性重组。函数recombin是一高级入口函数,对所有交叉操作提供多子群支持入口。 5.1.5 变异算子 变异算子函数有:mut,mutate,mutbga。

出必精品:雷英杰《Matlab遗传算法工具箱及应用》Sheffield大学gatbs工具箱所有算例下载及调试说明

出必精品:雷英杰《Matlab遗传算法工具箱及应用》 Sheffield大学gatbs工具箱所有算例下载及调试说明 这段时间对雷英杰编著《Matlab遗传算法工具箱及应用》涉及Sheffield大学gatbs工具箱的所有算例进行了调试,并修正了一些算例源码中的错误,具体注释可见附件,几点说明如下: 1.附件结构: gatbx.rar: (1)gatbx-origin.zip; (2)gatbx-toolbox.rar; (3)gatbx-example.rar 2.调试所用Matlab版本是6.5,gatbx-toolbox是调试过程中使用的工具箱,有些热心的研友已经提供了该工具箱,之所以再贴一遍,是因为6.5版本下调试该工具箱会出现一些错误提示,在该版本中已经进行了改正,使用该工具箱只需要将压缩包下的gatbx和gatbx\Test_fns加入到Matlab搜索路径即可,另外gatbx-origin是Sheffield大学提供的原始版本的工具箱,未做任何改动,两者可做比较之用 3.gatbx-example是算例调试源码和各算例的调试说明,大家可以对照原书进行比较 4.窃以为gatbx工具箱较之Matlab7新版下的gads工具箱更能让人熟悉和了解遗传算法的原理和计算过程,虽然在可视化方面不及gads 5.学习遗传算法如果首先用熟相关工具箱的话,能够先培养信心,然后更有兴趣去专研和了解具体的算法,如果就用现有的工具箱就能解决问题的话,不了解其详细的算法也未尝不可,毕竟不是每个研友都能向see_moonlight那样开发自己的工具箱吧, 最后感谢see_moonlight斑竹的大力支持和鼓励,在此谨致谢意~

【实用资料】Matlab遗传算法工具箱简介.pdf

Matlab遗传算法工具箱 基于Matlab平台的遗传算法(GA)工具箱主要有:美国北卡罗来纳大学开发的GAOT、英国谢菲尔德大学开发的GATBX以及GADS(Genetic Algorithm and Direct Search Toolbox)遗传算法与直接搜索工具箱。遗传算法与直接搜索工具箱的界面如图所示: GADS工具箱用户界面 (1)Solver(求解器):用于选择需要的算法。 (2)Problem:需要解决的问题。包括: 1)Fitness function:需要最小化的适应度函数,填写的格式为:@objfun,其中objfun.m是编写适应度函数的M文件,返回一个具体数值。 2)Number of variables:适应度函数的自变量的数目,此处表示优化设计的设计变量个数。 (3)Constraints约束。 1)Linear inequalities线性不等式约束,表示为:* ,填写矩阵A和向 A x b 量b的信息。

2)Linear equalities 线性等式约束,表示为:*Aeq x beq ,填写矩阵Aeq 和向量beq 的信息。 3)Bounds :填写独立变量的取值范围。在Lower 中填写变量的取值下界,Upper 中填写变量的取值上界,均以向量形式表示。 4)Nonlinear constraint function 非线性约束函数,编写非线性约束函数的M 文件nonlcon.m ,则在此处填写@nonlcon 。 (4)Run solver and view results 运行求解器并观察结果。点击Start 即可开始运行。Current iteration 中将显示当前运行的代数。Final point 栏中显示最优解对应的变量的取值。 (5)Option 部分是遗传算法参数的设定。 1)Population 种群参数设定。 Population type 种群类型,设定适应度函数的输入数据类型。工具箱提供了 两种输入类型:双精度、串位,用户还可以编写M 文件自定义输入数据的类型。 Population size 种群规模,定义每一代种群的个体数量。种群规模越大,遗传算法的运行速度越慢。 Creation function 创建函数,用于创建初始种群。 Initial population 初始种群,如果不指定初始种群,则系统将运用创建函数创建初始种群。 Initial scores 初始得分,如果此处没有定义初始得分,则系统应用适应度函数来计算初始得分。 Initial range 初始范围,用于指定初始种群中的各变量的上下限。初始范围用一个矩阵表示,该矩阵行数为2,列数为变量的个数。其中第一行描述初始种群中变量的取值下限,第二行描述初始种群中变量的取值上限。 2)Fitness scaling 适应度测量,包括:Rank 排序尺度变换、Proportional 比例尺度变换、Top 顶级尺度变换、Shift linear 线性转换尺度变换以及Custom 用户自定义。 3)Selection 选择,工具箱提供了以下几种选择函数:Stochastic uniform 随机 均匀分布、 Remainder 剩余、Uniform 均匀分布、Roulette 轮盘赌选择、Tournament 锦标赛选项、Custom 用户自定义。 4)Reproduction 再生参数,需设定可生存到下一代的精英个数Elite count ,以及下一代由交叉产生的部分所占比例Crossover fraction 。

最新最全的遗传算法工具箱及说明

最新最全的遗传算法工具箱Gaot_v5及说明 Gaot_v5下载地址:https://www.sodocs.net/doc/659907017.html,/mirage/GAToolBox/gaot/gaotv5.zip 添加遗传算法路径: 1、 matlab的file下面的set path把它加上,把路径加进去后在 2、 file→Preferences→General的Toolbox Path Caching里点击update Toolbox Path Cache更新一下,就OK了

遗传算法工具箱Gaot_v5包括许多实用的函数,各种算子函数,各种类型的选择方式,交叉、变异方式。这些函数按照功能可以分成以下几类:

主程序 ga.m提供了 GAOT 与外部的接口。它的函数格式如下: [x endPop bPop traceInfo]=ga(bounds,evalFN,evalOps,startPop,opts,termFN,termOps, selectFn,selectOps,xOverFNs,xOverOps,mutFNs,mutOps) 输出参数及其定义如表 1 所示。输入参数及其定义如表 2 所示。 表1 ga.m的输出参数 输出参数 定义 x 求得的最好的解,包括染色体和适应度 endPop 最后一代染色体(可选择的) bPop 最好染色体的轨迹(可选择的) traceInfo 每一代染色体中最好的个体和平均适应度(可选择的) 表2 ga.m的输入参数 表3 GAOT核心函数及其它函数

核心函数: (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数 【输出参数】 pop--生成的初始种群 【输入参数】 num--种群中的个体数目 bounds--代表变量的上下界的矩阵 eevalFN--适应度函数 eevalOps--传递给适应度函数的参数 options--选择编码形式(浮点编码或是二进制编码)[precision F_or_B],如 precision--变量进行二进制编码时指定的精度 F_or_B--为1时选择浮点编码,否则为二进制编码,由precision指定精度) (2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,... termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遗传算法函数 【输出参数】 x--求得的最优解 endPop--最终得到的种群 bPop--最优种群的一个搜索轨迹 【输入参数】

matlab自带优化工具箱遗传算法中文解释

matlab自带优化工具箱遗传算法中文解释 problem setup and results设置与结果 problem fitness function适应度函数 number of variable变量数 constraints约束 linear inequalities线性不等式,A*x<=b形式,其中A是矩阵,b是向量 linear equalities线性等式,A*x=b形式,其中A是矩阵,b是向量 bounds定义域,lower下限,upper上限,列向量形式,每一个位置对应一个变量 nonlinear constraint function非线性约束,用户定义,非线性等式必须写成c=0形式,不等式必须写成c<=0形式 integer variable indices整型变量标记约束,使用该项时Aeq和beq必须为空,所有非线性约束函数必须返回一个空值,种群类型必须是实数编码 run solver and view results求解 use random states from previous run使用前次的状态运行,完全重复前次运行的过程和结果 population population type编码类型 double vector实数编码,采用双精度 bitstring二进制编码对于生成函数和变异函数,只能选用uniform和custom,对于杂交函数,只能使用 scattered singlepoint,twopoint或custom不能使用hybrid function和nonlinear constraint function custom 自定义 population size:种群大小 creation function:生成函数,产生初始种群 constraint dependent:约束相关,无约束时为uniform,有约束时为feasible population uniform:均匀分布 feasible population :自适应种群,生成能够满足约束的种群 initial population:初始种群,不指定则使用creation function生成,可以指定少于种群数量的种群,由creation function完成剩余的 initial scores:初始值,如果不指定,则有计算机计算适应度函数作为初始值,对于整型约束不可用,使用向量表示 initial range:初始范围,使用向量矩阵表示,第一行表示范围的下限,第二行表示上限 fitness scaling:适应度尺度 rank:等级。将适应度排序,然后编号 proportional:按比例 top:按比例选取种群中最高适应度的个体,这些个体有等比例的机会繁衍,其余的个体被淘汰 shift linear:线性转换

相关主题