演化计算笔记

遗传算法:(传统过程)

一、解空间确定

二、编码:二进制编码、实数向量编码

三、初始化

四、计算适应度值

五、父体选择:轮盘赌

六、遗传算子:杂交、变异

技术细节:

一、编码:(用自然的方式编码)

数值优化时二进制好,TSP时自然数编码好

二进制编码确定位数方法:


依上式得到第j个变量xj编码为二进制时所需二进制位数。总的二进制位数为所有之和

缺点:

1.相邻整数的二进制编码的hamming距离较大,可以采用gray编码克服

2.在高维高精度问题求解中,串长太长

实数向量编码,排列编码,结构编码,树编码,图编码


二、适应函数

1.原始适应函数,即目标函数

2.简单适应函数,加减常量,倒数等

3.适应值比例变换f'(v)=g(f(v))

(1)线性比例变换:f'(v)=af(v)+b,ab可以根据最大最小平均适应度值的限定来确定,使得变换后的适应函数在我们要求范围内

(2)σ截断:,其中σ为标准差

(3) 幂函数变换:最好与最坏染色体的适应值之差随着     的增加而增加。

三、父体选择策略

基于适应值比例的选择策略

(1) 确定性选择:选择每个个体的期望个数

(2)轮盘赌选择:

(3) 随机通用采样(stochastic universal sampling):轮盘上放N个指针,以此选出N个个体

(4) Boltzmann选择
基于排名的选择策略

(1) 线性排名选择

(2) 指数排名选择
基于竞争的选择策略

(1) 锦标赛(tournament)选择:随机挑k个,选最好的

(2) Boltzmann锦标赛选择:

四、遗传算子设计

1. 二进制编码

(1) 杂交算子:点式杂交,交换一点或多点;均匀杂交,每一位都判定,是否交换

(2) 变异算子

2. 实数向量编码

(1) 杂交算子:

离散杂交,可模拟二进制的单点,均匀杂交

部分算术杂交,

x’=(x1,...,xk,ak+1xk+1+(1-ak+1)yk+1,...,anxn+(1-an)yn)

y’=(y1,...,yk,ak+1yk+1+(1-ak+1)xk+1,...,anyn+(1-an)xn)

整体算术杂交,

x’=(x1+(1-a1)y1,...,xk+(1-ak)yk,ak+1xk+1+(1-ak+1)yk+1,...,anxn+(1-an)yn)

y’=(y1+(1-a1)x1,...,yk+(1-ak)xk,ak+1yk+1+(1-ak+1)xk+1,...,anyn+(1-an)xn)

(2) 变异算子
均匀变异,在取值范围内,随机选取一个数

非均匀变异,

是当前演化代数,δ(t,y)函数返回[0,y]中的一个值,并且随t的增加而趋于0。其中或者,

其中[0,1]上的一个随机数,T表示最大演化代数。b是确定非均匀度的一个参数,通常b的取值为2~5

在优化中的应用

约束优化问题:
常用的约束处理技术。
   1.拒绝法
   拒绝法抛弃所有在演化过程中产生的不可行染色体。
   2.修复法
   修复法是通过一个修复程序对不可行个体进行修复,使之成为可行个体。修复后的个体可以只用作评估,也可以用来替代原个体进入种群。
3.算子修正法
算子修正法是指设计专门的遗传算子来保持种群中个体的可行性。
4.惩罚函数法
惩罚函数法是一种常用的处理约束条件的方法。本质上它是通过惩罚不可行解,将约束问题转化为无约束问题。广义目标函数F(x)=f(x)+P(x),对非可行解x有p(x)>0,而对可行解x有p(x)=0,即不产生惩罚。

许多方法用函数fi(x)(i=1,2,...,m)来构造惩罚函数,fi(x)按照下面的方式度量对第i个约束的违背程度:


(1) 静态惩罚函数

静态惩罚函数具有下列形式:

其中 ci(i=1,2...m) 是预先指定的常数,称为惩罚系数,也可以根据解的优劣进行设置。 d 是一个常数,通常取 d=1 2

(2) 动态惩罚函数

JoinesHouck提出了如下形式的动态惩罚函数:,其中t为当前演化代数,C,α,β都为正常数,通常取C=0.5,α=β=2。 

 (3) 自适应惩罚函数

自适应惩罚函数的目的是希望利用演化搜索中的反馈信息自适应地调节惩罚系数,从而避免对惩罚系数的不恰当设置。

BeanHadj-Alouane提出的一种自适应惩罚函数的形式如下:其中λ(t)与演化代数有关.

譬如可取λ(t)=(Ct)α,并且在每一演化代按下列公式更新:

其中best(i)表示在第i代时上述广义目标函数值是最好的个体,β1,β2>1,且β1!=β2以避免循环,k是一个正常数。



你可能感兴趣的:(演化计算笔记)