进化计算(一)——基本原理&GA&GP

进化计算(EAs)

Defination

 In computer science, evolutionary computation is a family of algorithms for global optimization inspired by biological evolution, and the subfield of artificial intelligence and soft computing studying these algorithms. In technical terms, they are a family of population-based trial and error problem solvers with a metaheuristic or stochastic optimization character.

Classification

 进化计算包括遗传算法(Genetic Algorithms)、遗传规划(Genetic Programming)、进化策略(Evolution Strategies)和进化规划(Evolution Programming)4种典型方法。

Key Concept

  • Population-Based Stochastic Optimization Methods(多点随机)
  • Inherently Parallel (多点并行搜索,不容易陷入局部最优解)
  • Metaheuristics(启发式)

部分名词解释

  • 代数(generation):种群进化的代数,即迭代的次数;
  • 群体的规模(popsize):一般地,个体数量在整个进化过程中是不变的;
  • 当前解:新解的父解(parent,或称为父亲、父体等);
  • 后代解(offspring,或称为儿子、后代等):产生的新解;
  • 交叉重组:两父代个体随机匹配并将部分结构加以替换重组形成新个体。

Parallel Search

 Local search and Divide-and-Conquer(N维问题转换为多个一维问题)都容易造成局部最优。因此,需要采用Parallel并行搜索的方式进行优化,即Population-Based。

基本步骤

 进化计算的基本步骤包括基因编码(适于计算机处理)、选择(根据适应度函数)、复制(Elitism)、交叉重组(繁衍后代)和变异(提高随机性)。其中选择和交叉重组完成了大部分搜索功能,而变异则可以防止陷入局部最优解。基本步骤如下:
在这里插入图片描述
Codeing:将实际问题转换为计算机可以执行的问题;
Objective Function:待求解的目标函数
Domain Knoeledge:对自变量的约束
Evolutionary Search:评价(适应度函数)——选择——杂交(交叉重组)——突变(变异)

可用EA解决的常见优化问题

TSP:Travelling Salesman Problem。不一定能求出最优解,只能收敛于(近似逼近)最优解,得到一个次优解,因为他们本质都是随机算法,大多都会以类似“一定概率接受或舍去”的思路去筛选解。 使用遗传算法求解旅行商问题 in Java
Knapsack Problem:背包问题。使用遗传算法求解背包问题 in Python
Bin Packing Problem等。

遗传算法(GA)

名词解释(Biology)

  • 基因:DNA片段
  • Gene Trait:基因性状(基因控制的特性外在表现形式)
  • Allele:某一性状的可能取值
  • Genotype:具体基因型
  • Phenotype:基因特性的外在表现(不同Genotype可能对应相同的Phenotype)

名词解释(Algorithm)

  • Individual:个体,表示目标函数特定解的一个向量(多变量);
  • Population:种群,a set of individual(Evolve based on population—>Global Optimization);
  • Offspring:后代,交叉重组产生的new individuals;
  • encoding:编码方式,Binary vs.Gray。(Gray:任意两个相邻编码之间汉明距离均为1。实际应用中,每次仅变化1位,不存在多位变化的同步问题,相对stable)

Code

遗传算法(GA)中的编码方式-二进制编码、格雷编码、实数编码

Selection

(1)轮盘赌-Roulette Wheel Selection

 适应度高的在轮盘上所占面积大,即适应度越高被选中的概率越大。轮盘赌算法基本步骤:link

缺点

  • 适应度为负值无法表示概率。
  • 适应度的值不确定可能会导致资源过度集中。(某一个体适应度的值过高)

(2)Rank Selection-分级选择

 不直接使用原始适应度的值,而是对其进行排序(适应度越高,Rank等级越高)后利用排序值进行轮盘赌。采用该种方法就可以缩小差距,同时解决负数问题。

(3)Tournament Selection-联赛选择

 N个Individuals为一组进行比较,胜者(适应度最大的)被选中。其中,Tournament Size即N对选择结果的影响较大。若N=2,则倒数第一个不会被选中;若N=3,则倒数第一和倒数第二个不可能被选中。

(4)Elitism-精英策略

 由于进化的随机性,需要保证当前种群中的最优解不被交叉重组破坏或不被lost(若best solution被破坏,可能导致收敛不稳定)。因此,采用copy的方法,将当前generation的best solution复制到next generation。

(5)子代选择的方法

  • 子代完全替换父代
  • 子代与父代混合后再进行Selection

最终保证群体规模不变

适应度函数fitness的选取

 可以参考该篇博客,但需要注意举例3选取的适应度函数中max分母中f(x)前为‘-’,min分母中f(x)前为+。


遗传算法的一般步骤

基本概念

重要词汇:Chromosome(Coding/Representation)、Crossover、Mutation、Selection

基本思想:

  • 将每一个solution编码表示成一个chromosome;
  • 随机生成多个chromosome作为初始solution;
  • 经过适应度计算、选择、交叉重组、变异更新迭代。

基本步骤:首先实现从性状到基因的映射,即编码工作;然后从代表问题可能潜在解集的一个种群开始进行进化求解,即种群初始化工作;初代种群产生后,按照优胜劣汰的原则,根据个体适应度大小挑选个体(选择);随后进行复制(精英策略)、交叉、变异(产生子代,防止陷入局部最优),产生出代表新的解集的群体。重新对其进行选择、复制、交叉、变异…如此往复,逐代演化产生出越来越好的近似解。

应用

示例1:遗传算法用于特征选择

  • 特征选择基本原理

    • 从初始特征中选择特征子集:降维或去除相关性
    • 期望达到的目标:降低训练难度;加快运行速度;高精确度;更好的理解力
    • 方法:Filter Method—不考虑具体使用的分类器的特性;Wrapper Method—将分类器的属性也考虑在特征选择当中(即分类器不同特征选择结果也不同)。
  • 利用GA进行特征选择
     维度过高时可以先降维再GA,效果可能会更好。
    在这里插入图片描述

示例2:使用GA完成聚类cluster

cluster:基于一些相似性度量(similarity metric)的方法将一组数据划分为K组的过程——无监督式学习(无标签数据)。

常用的聚类方法:K-Means

在这里插入图片描述
 缺点:对初始K个点的选取不宜把控,容易陷入局部最优。使用遗传算法做聚类时,主要目的就是为了选取最合适的K个中心点。基本步骤如下:
在这里插入图片描述
更多示例: 利用遗传算法更新神经网络参数的理解.

遗传编程-GP

GA vs. GP

在这里插入图片描述

Functions & Terminals

 实际在进化的是一个Tree,而不是一组value。
在这里插入图片描述
Crossover of Tree:两棵树的子树进行交换。此处,杂交后的维度由3->4,与GA算法中种群规模始终不变有所区分,变得更加灵活。

在这里插入图片描述
  此外,在GA中相同父代之间进行的交换并无意义(交换后产生的子代不变)。而在GP中,是对Tree进行杂交,则完全有可能产生一个新的子代,即在GP中相同父代杂交可以得到不同的后代。这进一步体现了GP的灵活性。
在这里插入图片描述
Mutation of Tree

在这里插入图片描述

GP for Regression

 使用某一公式生成一系列data,使用GP根据data推出原始公式。
在这里插入图片描述

  1. 随机生成一些Tree代表可能的candidate;
  2. 依次求出原始曲线与该曲线之间的误差;(曲线间面积)
  3. crossover&mutation—>ground truth

More applications:Control problem\classfication…

本文参考链接

进化计算概念
进化计算1
进化计算2
课程

  • 10
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"woa"和"ga"都是优化算法中常见的两种进化算法,它们在解决问题的过程中都通过进化曲线来描述算法性能的改进情况。 首先,"woa",全名为"Whale Optimization Algorithm"(鲸鱼优化算法),是一种基于鲸鱼群体行为的进化算法。它模拟了鲸鱼狩猎时的策略,通过利用鲸鱼个体之间的社会行为和通信来寻找最优解。"woa"算法通过几个阶段的迭代来不断改进解空间中的个体,并逐渐收敛于最优解。"woa"算法的进化曲线往往表现为一条逐渐下降的曲线,体现了算法在解决问题过程中逐渐优化的情况。 而"ga",全名为"Genetic Algorithm"(遗传算法),是一种模拟自然进化过程的优化算法。它通过模拟基因的交叉、变异和选择机制,不断迭代产生更好的个体解,并通过自然选择来筛选优秀的个体。"ga"算法的进化曲线也是一条逐渐下降的曲线,代表了算法在解空间中逐步逼近最优解的过程。 对比来看,"woa"和"ga"在进化曲线上都呈现出逐渐下降的趋势,但它们的具体形态可能不尽相同。因为两种算法的具体实现细节不同,所以它们的进化曲线可能受到一些因素的影响而有所不同,例如初始种群的质量、迭代次数、交叉变异概率等等。 总的来说,"woa"和"ga"作为两种常见的进化算法,它们都通过进化曲线展示算法性能的改进过程。它们的进化曲线都体现了算法逐步优化解空间中个体解的能力,但具体形态可能会有区别。选用哪种算法应该根据具体问题的特点和需求来确定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值