遗传算法及其应用part1

1 遗传算法绪论

遗传算法(Genetic Algorithm ,GA)是受生物进化学说和遗传学说的启发发展起来的,生物在进化过程中:

  • 不断繁殖
  • 生存竞争
  • 适者生存
  • 遗传和变异

生物的遗传特点:

  • 分离规律
  • 自由组合规律

生物变异特点:

  • 基因重组
  • 基因突变
  • 染色体变异

GA就是模仿生物遗传和变异的这些特点,它是一种新型的优化算法(所要解决的问题从初始解一步步逼近最优解(不一定就是最优解)),原理是模仿生物进化过程中的特点。

GA的研究对象:研究各种非线性、多变量、多目标、复杂的自适应系统问题。(比较简单的问题就别用它了,比如:单值函数的极大极小值。毕竟杀鸡焉用牛刀?这也不能体现GA的优势。有时候有些问题连明确的函数关系都不清楚,这时候就可以试试GA了)

GA的基本特征:

  • 智能式搜索
    根据适应度(目标函数)进行智能搜索。(不是盲目式和穷举式搜索)
  • 渐进式优化
    利用复制、交换、突变等操作、使下一代结果优于上一代。
  • 全局最优解
    采用交换和突变操作产生新个体,使得搜索得到的优化结果逼近全局最优解。
  • 黑箱式结构
    根据问题的特性进行编码(输入)和确定适应度(输出),具有只考虑输入和输出关系的黑箱式结构,并不深究输入和输出关系的原因。
  • 通用性强
    不要求明确的数学表达式,只需要一些简单的原则要求,可应用于解决离散问题、函数关系不明确的复杂问题。GA是一种框架型的算法,通用性很强。从而不同的算子、技术编出的程序效率可能是不一样的。
  • 并行式的运算
    每次迭代计算都是对羣体中的所有个体同时进行运算,是并行式运算方式,搜索速度快。(对所有个体可以同时进行运算)

遗传算法和遗传规划自身需要完善的环节,有很多地方是没有特定的规则:

  • 编码技术和程序表达技术的改进
  • 复制、交换、突变等遗传操作的改进
  • 适应度的表达和计算的改进
  • 寻求其他有效遗传算子,防止近缘杂交、过早收敛
  • 进一步探讨遗传算法和遗传规划的机理
  • 开发遗传算法和遗传规划的商业软件

2 GA基本运算过程

总共五个步骤:

  1. 编码、随机产生初始羣体(编码的好坏会影响是否可以高效率的解决目标问题,然后随机产生初始羣体)
  2. 个体评价、选择、确定是否输出(随机产生初始羣体之后,要设定一个适应度函数进行评价,看它有没有达到你自己的规则要求,是否得到了这个全局最右解,如果得到最优解,那就选择输出,结束算法;否则,进入循环进行选择,首先选择比较好的个体(优胜劣汰),对于特别好的个体进行复制,也就是让它在这个羣体里面的比例增大,当然,把特别差的个体筛选掉。)
  3. 随机交叉运算(对已经复制、存在的比较好的个体进行随机的交叉运算)
  4. 随机变异运算
  5. 转向个体评价,开始新循环(经过交叉、变异运算之后,这时候已经是第二代了,然后对其进行评价,看羣体是否达到了要求)

遗传算法基本运算流程图

《遗传算法及其应用part1》
前期处理:编码
产生第一代种羣:初始化种羣
计算性能指标:适应度验算
满足结束条件:否之后,可以先对适应度按照大小排序

编码: 遗传算法的工作对象是字符串,对字符串编码要求:

  • 字符串要反映所研究问题的性质
  • 字符串的表达要便于计算机处理

适应度:在遗传算法中,衡量个体优劣的尺度是适应度。根据适应度的大小决定个体繁殖的数量、或者决定其是否消亡。适应度是驱动遗传算法的动力。

复制: 复制算子将优良个体在下一代予以繁殖,体现了“适者生存”的自然选择原则。
个体被复制的数量是按照适应度大小决定的(因此会有很多不同的复制方法,比如:等差),适应度大的复制得多,适应度小的复制的少,羣体中个体总数保持不变。

  • 生物种羣如果环境(空气、溼度、温度等)、食物等比较充足,比较适合某种羣体生存,那么这种羣体就有可能迅猛的增长,如果环境较差,那么羣体数量就会比较少。
    遗传算法和生物种羣是不一样的,遗传算法是保证羣体中的个体总数是保持不变的。

  • 个体被复制的数量是按照适应度大小决定的,因此会有很多不同的复制方法,比如:等差,Holland提出轮盘方式复制对象,知道满足所需要的个体数目,防止过早收敛。可以在复制的过程中选择不同的阶段,比如:初选阶段(选择等差、等比方式)、精选阶段(选择轮盘方式)。

轮盘方式

个体序号i12345678910
适应度Xi8217721211737
适应度累计值Si8102734364859666976

第一步:适应度累计值Si:前面的适应度Xi相加 比如:S3 = S1 + S2 + S3 = 8 + 2 + 7 = 17
第二步:随机数R(在闭区间[0,Xi]之间均匀产生的随机数,不一定产生): 23 49 76 13 1 27 57
第三步:被选中的个体号: 3 7 10 3 1 3 7。

选择策略:
用随机数R和Si进行比较,当遇到第一个Si >= 当前R的数,则选中该第i个个体。
比如:第一个R=23 > S1 = 8,则不选择1号个体,R=23 > S2 = 10,则你不选择个体2,R=23 < S3=27,则选择个体3。即被选中的个体号是: 3
当R=49 < S7 = 59,则按照以上策略,即被选中的个体号是: 7
当R=76 <= S10 = 76,则按照以上策略,即被选中的个体号是: 10
当R=13 < S3 = 27,则按照以上策略,即被选中的个体号是: 3
当R=1 < S1 = 8,则按照以上策略,即被选中的个体号是: 1
当R=27 <= S3 = 27,则按照以上策略,即被选中的个体号是: 3
当R=57 < S7 = 59,则按照以上策略,即被选中的个体号是: 7

即,被选中的个体号依次为: 3、7、 10、 3、 1、 3、 7

可以看到选中的个体相应的适应度的值是比较大的(相对来说也是比较优秀的个体),然后对这些选中的个体号进行复制。

每个个体选中几次就会复制几次,比如:7号个体被选中了2次,则7号个体就会被复制2次。则在新一代中7号个体就会有3个。3号个体被选中了3次,则3号个体就会被复制3次。则在新一代中3号个体就会有4个。这样来说,新一代个体中就会多出5个个体,鉴于遗传算法是保证羣体中的个体总数是保持不变的。也就相应的说,需要筛掉5个个体,当然我们是需要将5个较差的个体筛掉。这样就保证了羣体中个体的稳定性。

拿3号个体的情况来说,也就是说3号个体出现在羣体中的次数比较多,从表里也可以看出来3号个体的适应度值也是比较大的,该个体也是比较优秀的个体。

《遗传算法及其应用part1》

交换: 交换是遗传算法中产生新个体的主要手段,将两个个体的部分字符互相交换。

  • 执行交换的个体是随机选择的
  • 交换的概率一般为50%~80%

变异: 变异是遗传算法中产生新个体的另外一种方法,借鉴了生物学中的突变现象,将被选择的个体的部分字符进行补运算

  • 选择哪一个个体变异是随机的
  • 个体在哪一位开始变异是随机的
  • 一个个体中有几位进行变异的是随机的

终止条件:遗传算法是一种反复迭代的搜索方式,它通过多次进化逐渐逼近最优解。

  • 最常用的终止方法是迭代代数
  • 当目标函数有最右目标值,可采用控制偏差的方式实现终止
  • 第三种终止方法是检查适应度函数的变化,一直没什么变化,就要终止
点赞