模式识别:遗传算法

1、遗传算法

1.1基本原理

遗传算法正是依据生物进化中的“适者生存”规律的基本思想设计的(如下表1.1),它把问题的求解过程模拟为群体的适者生存过程,通过群体的一代代的不断进化(包括选择竞争、交叉繁殖和变异等)出现新群体,相当于找出问题的新解,最终收敛到“最适应环境”的个体(解),从而求得问题的最优解或满意解。

                                                                                           表1.1

算法设计中包含5个基本要素:

1)参数编码;
2)控制参数设定;
3)初始群体的设计;
4)适应度函数的设计;
5)遗传算子设计。

5 个要素构成了遗传算法的核心内容。基本遗传算法的主要运算过程如下。

1.1.1 编码

遗传算法在求解优化问题时,都是将实际问题的求解空间按一定的编码方式表现出来,即对解空间中的各个解进行编码。所谓解的编码就是把各个解用一定数目的字符串(如“0”和“1”)表示。字符串中的每一位数称为遗传基因,每一个字符串(即一个解的编码)称为一个染色体或个体。个体的集合称为群体。遗传算法的寻优过程就是通过染色体的结合,即通过双亲的基因遗传、变异和交配等,使解的编码发生变化,从而根据“适者生存”的规律,最终找出最优解;

1.1.2 控制参数的设计

算法的控制参数包括种群的规模M、交配率Pc和变异率Pm。

1.1.3 初始群体的生成

随机产生一组初始解(即个体)组成初始种群。初始种群中个体的数目称作初始种群的规模;

1.1.4 适应度值评价检测

适应度函数是用以描述个体适应环境的程度,也是生物进化中决定哪些染色体可以产生优良后代(适者生存)的依据。一般是,个体的适应度函数值越大,则个体性能越好,生存可能性越大;反之,若个体的适应度函数值越小,则个体的性能越差,越有可能被淘汰。

1.1.5 遗传算子的设计

遗传算子包括选择算子、交叉算子、突变算子。

a.选择:将选择算子作用于群体。根据种群中各个染色体的适应度函数值,采取一定的选择方法(一般为赌轮选择法),从种群中选出适应值较大的个染色体;

b.交叉:是指两个相互配对的染色体按某种方式相互交换其部分基因而生产两个新的个体;

c.突变:是指将个体编码字符中的某些基因用其他等位基因来替换,从而生成一个新的染色体。

这三个算子一般都按一定的种群选择概率、交叉概率和突变概率随机地进行,造成遗传中的子代和父代的差异。

1.2 算法基本流程

1)编码:确定寻优参数,进行编码。编码时先要设置编码长度;

2)初始群体的生成:随机产生一组初始解(即个体)组成初始种群。初始种群中个体的数目称作初始种群的规模;

3) 适应度值评价检测:适应度函数表明个体或解的优劣性。对于不同的问题,适应度函数的定义方式不同。计算种群中各个个体的相应的适应度函数值;

4)a.选择:将选择算子作用于群体。 

      b.交叉:将交叉算子作用于群体。

      c.变异:将变异算子作用于群体。

5)若遗传代数(迭代次数)达到给定的允许值或其它收敛条件已满足时停止遗传,否则返回步骤3

上述遗传算法的计算过程可用如下流程图表示:

                                                                             图1.1 GA算法流程图

1.2类别可分性判据

一 般来讲 , 不同类的模式可以被区分是由于它们所属类别在特征空间中的类域是不同的区域。显然,区域重叠的部分越小或完全没有重叠 ,类别的可分性就越好。因此可以用距离或离差测度(散度)来构造类别的可分性判据。

1.2.1点与点的距离

d(\underset{a}{\rightarrow},\underset{b}{\rightarrow})=[(\underset{a}{\rightarrow}-\underset{b}{\rightarrow})^T(\underset{a}{\rightarrow}-\underset{b}{\rightarrow})]^{1/2}

1.2.2点到点集的用 均方欧氏距离

\bar{d}^2({\underset{x}{\rightarrow}},\{\underset{a}{\rightarrow}^{(i)}\})=\frac{1}{N_i}\sum_{k=1}^{N_i}d^2(\underset{x}{\rightarrow},\underset{a_k}{\rightarrow}^{(i)})

1.2.3类内及总体均值矢量

类的均值矢量:\underset{m}{\rightarrow}^{(i)}=\frac{1}{N_i}\sum_{k=1}^{N_i}\underset{x_k}{\rightarrow}^{(i)}                            i=1,2,3,...,c(类别数)

各类模式的总体均值矢量:\underset{m}{\rightarrow}=\sum_{i=1}^{c}P_i\underset{m}{\rightarrow}^{(i)}                 P_i为相应类的先验概率

1.2.4类内距离与类内离差矩阵

类内距离:\bar{d}^2(w_i)=\frac{1}{N_i}\sum_{k=1}^{N_i}(\underset{x_k}{\rightarrow}^{(i)}-\underset{m}{\rightarrow}^{(i)})^T(\underset{x_k}{\rightarrow}^{(i)}-\underset{m}{\rightarrow}^{(i)})

类内离差矩阵:S_{(w_i)}=\frac{1}{N_i}\sum_{k=1}^{N_i}(\underset{x_k}{\rightarrow}^{(i)}-\underset{m}{\rightarrow}^{(i)})(\underset{x_k}{\rightarrow}^{(i)}-\underset{m}{\rightarrow}^{(i)})^T      显然\bar{d}^2(w_i)=Tr[S_{w_i}]

1.2.5 两类之间的距离

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值