【人工智能系列 - 智能硬件 - 08】演化硬件常用算法-解析遗传程序设计和演化策略

解析遗传程序设计

遗传程序设计(GP,Genetic Programming)的思想是在二十世纪九十年代初由美国斯坦福大学的J. R. Koza教授所提出的,它使用分层结构来表示问题的解空间,通过遗传操作动态地改变这些结构,以便于自动获得能够解决待求解问题的有效可行的计算机程序。

解析遗传程序设计(CGP,Cartesian Genetic Programming)是遗传程序设计的一种新形式。

传统的遗传程序设计采用LISP(链表处理语言)语法树的形式来演化程序,而CGP使用一个整数表来描述基因型,该整数表映射到程序的方向图。

在假定一个节点网络通向一个对应的解析坐标系的前提下,CGP是解析的。

CGP采用一个m行n列的细胞单元阵列来表示待演化电路,阵列中的每一个细胞都是一个功能单元,如非门、或门等。

该细胞阵列有三个参数:输入数目,输出数目和“L-back”参数,其中“L-back”参数决定了细胞单元的最左列。

每个细胞单元的输入仅限于电路的基本输入和前排细胞单元阵列的输出,而不能取自于其后排细胞单元阵列的输出,也就是说,不允许反馈的存在。

“L-back”参数确定了电路的连接性。

若L等于l,则只有前一排的细胞单元阵列的输出能够作为当前细胞单元阵列的输入;否则意味着前面各排的细胞单元阵列的输出都可以作为当前细胞单元阵列的输入。

一个由基因型到表现型的映射阵列连接实例如下图所示。图中所描述的是一个六输入三输出的程序,该程序具有三种函数功能单元(即0,1,2),细胞阵列的大小为三行四列,灰色的部分表示未被连接使用的单元。

【人工智能系列 - 智能硬件 - 08】演化硬件常用算法-解析遗传程序设计和演化策略_第1张图片

演化策略

演化策略(ES,Evolution Strategy)是演化计算的一个分支,是由德国柏林工业大学的I. Rechenberg和H. P. Schwefel两人在20世纪60年代初所共同开发的一种优化算法。

该算法的灵感来自于利用生物变异的思想随机地改变参数值。

不同于遗传算法利用编码位串空间来映射原问题的解空间,演化策略在原问题的解空间上直接执行各种演化操作,从而在演化过程中更加注重从父代到子代的演化行为的多样性以及演化的自适应性。

最开始的演化策略称为(1+1)演化策略或二元(two-membered)演化策略,其种群只含有一个个体,并且只使用变异算子为正态分布的变异操作,在每一次演化中,将变异后的个体与其父体(即未变异的原个体)进行比较,选择获胜的个体作为下一次演化的父体。

但是(1+1)演化策略存在有众多的弊端,如计算效率低下、有时无法收敛到全局最优解等。

当前所使用的演化策略主要有(μ+1)演化策略,(μ+λ)演化策略和(μ,λ)演化策略。

(μ+1)演化策略的种群中含有μ个个体,随机选取其中的一个个体来执行变异操作,然后用变异后的个体取代种群中的最差个体,每次演化只产生一个后代。

(μ+λ)演化策略和(μ,λ)演化策略另外引入了重组操作,即选择两个个体以类似于杂交的方式生成一个个体,以达到提高算法执行效率的目的。

(μ+λ)演化策略根据种群中的μ个个体通过执行变异和重组操作生成λ个个体,然后将μ个父代个体和其所生成的λ个子代个体合并在一起,并且从这合并而成的(μ+λ)个个体中选取μ个最优的个体保留到子代群体。

(μ,λ)演化策略则是在新生成的λ个个体中选择出μ(1≤μ≤λ)个最优的个体保留到子代群体。

你可能感兴趣的:(AI,演化硬件)