遗传算法(Genetic Algorithm)---(2) 点击:619 | 回复:1



若此笔名未被注册

    
  • 精华:10帖
  • 求助:1帖
  • 帖子:294帖 | 3225回
  • 年度积分:0
  • 历史总积分:6058
  • 注册:2003年3月30日
发表于:2006-02-19 21:09:00
楼主


        
  遗传算法将个体的集合──群体作为处理对象,利用遗传操作──交换和突变,使群体不断"进化",直到成为满足要求的最优解。

  霍勒德的GA算法中采用二进制串来表示个体。考虑到物种的进化或淘汰取决于它们在自然界中的适应程度,GA算法为每一个体计算一个适应值或评价值,以反映其好坏程度。因而,个体的适应值越高,就有更大的可能生存和再生,即它的表示特征有更大的可能出现在下一代中。遗传操作"交换"旨在通过交换两个个体的子串来实现进化;遗传操作"突变"则随偶地改变串中的某一(些)位的值,以期产生新的遗传物质或再现已在进化过程中失去的遗传物质。

  霍勒德提出的遗传算法也称为简单遗传算法(simple  genetic  algorithm,SGA),是一种基本的遗传算法。SGA的处理过程如下:
    begin
       1.  选择适当表示,生成初始群体;
             2.  评估群体;
       3.  While  未达到要求的目标  do
          begin
                      1.  选择作为下一代群体的各个体;
                      2.  执行交换和突变操作;
                      3.  评估群体;
          end
    end  

  因此,对于一个SGA算法来说主要涉及以下内容:
   ·编码和初始群体生成;
   ·群体的评价;
   ·个体的选择;
   ·交换;
   ·突变;

1.  编码和初始群体的生成

  GA的工作基础是选择适当的方法表示个体和问题的解(作为进化的个体)。SGA要求个体均以0、1组成的串来表示,且所有个体串都是等长的。实际上,可以任意指定有限元素组成的串来表示个体,而不影响GA的基本算法。

  对于同一问题,可以有不同的编码表示方法。由于遗传操作直接作用于所表示的串上,因而不同的表示方法对SGA的效率和结果都会有影响。从原理上讲,任何取值为整数(或其它有限可枚举的值)的变量,均可用有限长度的0、1串来表示,而任何取值为连续实数的变量也均可用有限长度的0、1串来近似表示。因此,对任何一个变量,均可在一定程度上用0、1串来表示(编码),而当问题的解涉及多个变量时,则可用各变量对应串的拼接(形成一个长串)来表示相应解。  

  SGA处理的起始点并非一个个体,而是由一组个体所组成的群体。一般可用随机方法来产生初始群体,当然最好能考虑各个体的代表性和分布概率。

2.  群体的评价

  对群体中各个体的适应性评价常需直接利用待优化问题的目标函数。这一目标函数也可称为适应函数,个体选择(或再生)过程正是基于这一函数来评价当前群体中各个体的再生概率。

3.  个体的选择

  选择操作是对自然界"适者生存"的模拟。评价值(目标函数值)较大的个体有较高的概率生存,即在下一代群体中再次出现。

  一种常用的选择方法是按比例选择,即若个体i的适应值(目标函数值)是fi,则个体i在下一代群体中复制(再生)的子代个数在群体中的比例将为:
        fi/∑fi  。
  其中,∑fi示指所有个体适应值之和。

        若当前群体与下一代群体的个数均维持在n,则每一个体i在下一代群体中出现的个数将是:
        n*fi/∑fi=fi/f  ,  
  其中f=∑fi/n是群体评价的平均值。fi  /f的值不一定是一个整数。为了确定个体在下一代中的确切个数,可将fi/f的小数部分视为产生个体的概率。如,若fi/f为2.7,则个体i有70%的可能再生2+1=3个,而有30%的可能只再生2个。
  
        SGA采用称为旋转盘(roulette  wheel)的方法来产生各个体的再生数。方法是:
  每一个体均对应于旋转盘中的一个以园点为中心的扇形区域,区域角度为2π*fi/∑fi,因而,各个体的区域角度之和等于2π。然后随机产生一个0到2π的值,根据该值所对应的区域,再生一个对应个体,直到产生的个体个数达到所需的数目,从而生成下一代的原始群体。这个群体还需进一步应用交换和突变操作。  

4.  交换
  
        交换是GA中最主要的遗传操作,其工作于选择过程结束后产生的下一代群体。交换操作应用于从这一群体中随机选择的一系列个体对(串对)。

  SGA采用的是单点交换。设串长为L,交换操作将随机选择一个交换点(对应于从1到L-1的某个位置序号),紧接着两串交换点右边的子串互换,从而产生了两个新串。

        例如,设A1,A2为要交换的串,交换点被随机选择为7(串长为10)。
    A1=1000011111
    A2=1111111011
      交换得新串A1',A2':
    A1'=1000011011
    A2'=1111111111

  当然,并非所有选中的串对都会发生交换。这些串对发生交换的概率是Pc。Pc为事先指定的0-1之间的值,称为交换率。

5.  突变

  另一种遗传操作是突变,它一般在交换后进行。突变操作的对象是个体(即串),旨在改变串中的某些位的值,即由0变为1,或由1变为0。并非所有位都能发生变化,每一位发生变化的概率是Pm。Pm为事先指定的0-1之间的某个值,称为突变率。串中每一位的突变是独立的,即某一位是否发生突变并不影响其它位的变化。突变的作用是引进新的遗传物质或恢复已失去的遗传物质。例如,若群体的各串中每一位的值均为0,此时无论如何交换都不能产生有1的位,只有通过突变。
  
遗传算法进化循环的一个例子

        设每一串的长度为10,共有4个串组成第一代群体(POP1),目标函数(适应函数)为各位值之和,因而函数值为0-10。POP1中四个串的适应值分别为:3,6,6,9,所以再生的比例个数为:0.5,1,1,1.5。若最后实际的再生个数为0,1,1,2,则产生选择后的群体POP2。下一步对POP2中各串配对,随机选择串1和串4为一对,串2和串3为另一对。

    群体POP1
         串        适应值
         0000011100      3
         1000011111         6
         0110101011         6
         1111111011         9

    群体POP2(选择后)
         



若此笔名未被注册

  • 精华:10帖
  • 求助:1帖
  • 帖子:294帖 | 3225回
  • 年度积分:0
  • 历史总积分:6058
  • 注册:2003年3月30日
发表于:2006-02-19 21:14:00
1楼
本文原为某研究所一论文,性质是概论性,对初学遗传算法理解有帮助,本身对实际的工程研发帮助并不大,本人为节省空间删掉文的第一段。

热门招聘
相关主题

官方公众号

智造工程师