实数编码遗传算法(Real coding based genetic algorithm-RGA)与标准遗传算法的主要不同点在于编码形式,实数编码遗传算法将采用实数编码形式。
设有如下的最小化优化问题
式中:x={x(j)}为优化变量集;[a(j),b(j)]为x(j)的变化区间;p为优化变量数目;f为目标函数(为便于定义后面的适应度函数,假设其值为非负)。
实数编码遗传算法包括如下步骤:
步骤1:编码。实数编码就是利用如下线性变换
把初始变化区间为[a(j),b(j)]区间的第j个优化变量x(j)对应到[0,1]区间上的实数y(j),在遗传算法中称y(j)为基因。优化问题所有变量对应的基因依次连在一起构成问题解(点)的编码形式[y(1),y(2),…,y(p)],称之为染色体或个体。经过编码,所有优化变量的取值范围都统一到[0,1]区间,实数编码遗传算法直接对各优化变量的基因形式进行各种遗传操作。
步骤2:父代群体的初始化。设群体规模为n。生成n组[0,1]区间上的均匀随机数(以下简称随机数),每组有p个,即{u(j,i)}(j=1,2,…,p;i=1,2,…,n,下同),把各u(j,i)作为初始群体的父代个体值y(j,i)。把y(j,i)代入式(5-17)得优化变量值x(j,i),再经式(5-16)得到相应的目标函数值f(i)。把{f(i)}(i=1,2,…,n)按从小到大排序,对应的个体{y(j,i)}也跟着排序,为简便,这些记号仍沿用,称排序后最前面几个个体为优秀个体。
步骤3:父代群体的适应度评价。目标函数值f(i)值越小,表示该个体的适应度值越高,反之亦然。基于此,定义排序后第i个父代个体的适应度函数值F(i)为
式中:“0.001”是经验设置的,以避免f(i)值为0的情况。
步骤4:进行选择操作产生第1个子代群体{y1(j,i)|j=1,2,…,p;i=1,2,…,n}。取比例选择方式,则父代个体y(j,i)的选择概率ps(i)为(www.xing528.com)
生成n-5个随机数{u(k)|k=1,2,…,n-5},若u(k)在[p(i-1),p(i)]中,则第i个个体y(j,i)被选中,即y1(j,k)=y(j,i)。这样从父代群体{y(j,i)}中以概率ps(i)选择第i个个体,共选择n-5个个体。为增强进行持续全局优化搜索的能力,这里把最优秀的5个父代个体直接加入子代群体中,即进行移民操作y1(j,n-5+i)=y(j,i),i=1,2,…,5。
步骤5:进行杂交操作产生第2个子代群体{y2(j,i)|j=1,2,…,p;i=1,2,…,n}。标准遗传算法的杂交操作是在一对父代双亲染色体链上随机分为几段,然后相互交换而成的。根据分段方法的不同,形成了所谓单点、双点、多点或均匀等杂交方法。杂交的目的是寻找父代双亲已有的但未能合理利用的基因信息。对于这里的实数编码系统,一个基因表示一个优化变量。为保持群体的多样性,这里采用的杂交操作是,根据式(5-19)的选择概率随机选择一对父代个体y(j,i1)和y(j,i2)作为双亲,并进行如下随机线性组合,产生一个子代个体y2(j,i)
式中:u1,u2,u3为随机数。
通过这样的杂交操作,共产生n个子代个体。
步骤6:进行变异操作产生第3个子代群体{y3(j,i)|j=1,2,…,p;i=1,2,…,n}。标准遗传算法的变异操作就是,对每个父代个体的染色体上的任意1位或任意2位的基因值以一小概率pm(称之为变异概率)进行翻转(0变成1或1变成0)。变异操作的目的是为了引进新的基因,增强群体的多样性。在实数编码遗传算法中,任意一个父代个体y(j,i),若其适应度函数值F(i)越小,即其选择概率ps(i)越小,则对该个体进行变异的概率pm(i)应越大。因此在实数编码遗传算法中的变异操作是采用p个随机数以pm(i)=1-ps(i)的概率来代替个体y(j,i),从而得到子代个体y3(j,i),j=1,2,…,p,即
式中:u(j)(j=1,2,…,p)和um均为随机数。
步骤7:演化迭代。由前面的步骤4~步骤6得到的3n个子代个体,按其适应度函数值从大到小进行排序,取排在最前面的n个子代个体作为新的父代群体。算法转入步骤3,进入下一轮演化过程,重新对父代群体进行评价、选择、杂交和变异,如此反复演化,直至最优个体的目标函数值小于某一设定值或算法运行达到预定循环次数,结束整个算法的运行,并把当前群体中最佳个体或优秀个体的平均值指定为最终的优化结果。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。