浅析遗传算法

浅析遗传算法

 

一、遗传算法的基本概念

遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。它是由美国的J.Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。

 

二、遗传算法的步骤和意义

1、初始化

选择一个群体,即选择一个串或个体的集合bi,i=1,2,...n。这个初始的群体也就是问题假设解的集合。一般取n=30-160。通常以随机方法产生串或个体的集合bi,i=1,2,...n。问题的最优解将通过这些初始假设解进化而求出。

2、选择

根据适者生存原则选择下一代的个体。在选择时,以适应度为选择原则。适应度准则体现了适者生存,不适应者淘汰的自然法则。

3、交叉

对于选中用于繁殖下一代的个体,随机地选择两个个体的相同位置,按交叉概率P。在选中的位置实行交换。这个过程反映了随机信息交换;目的在于产生新的基因组合,也即产生新的个体。交叉时,可实行单点交叉或多点交叉。

4、变异

根据生物遗传中基因变异的原理,以变异概率Pm对某些个体的某些位执行变异。在变异时,对执行变异的串的对应位求反,即把1变为0,把0变为1。变异概率Pm与生物变异极小的情况一致,所以,Pm的取值较小,一般取0.01-0.2。

单靠变异不能在求解中得到好处。但是,它能保证算法过程不会产生无法进化的单一群体。因为在所有的个体一样时,交叉是无法产生新的个体的,这时只能靠变异产生新的个体。也就是说,变异增加了全局优化的特质。

5、全局最优收敛

当最优个体的适应度达到给定的阀值,或者最优个体的适应度和群体适应度不再上升时,则算法的迭代过程收敛、算法结束。否则,用经过选择、交叉、变异所得到的新一代群体取代上一代群体,并返回到第2步即选择操作处继续循环执行。

三、遗传算法的主要特点:
1、 遗传算法以决策变量的编码作为运算对象。传统的优化算法往往直接决策变量的实际植本身,而遗传算法处理决策变量的某种编码形式,使得我们可以借鉴生物学中的染色体和基因的概念,可以模仿自然界生物的遗传和进化机理,也使得我们能够方便的应用遗传操作算子。
2、 遗传算法直接以适应度作为搜索信息,无需导数等其它辅助信息。
3、 遗传算法使用多个点的搜索信息,具有隐含并行性。
4、 遗传算法使用概率搜索技术,而非确定性规则。

 

四、遗传算法的缺点: 

 1、遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码,

 2、另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验.
 3、没有能够及时利用网络的反馈信息,故算法的搜索速度比较慢,要得要较精确的解需要较多的训练时间。
 4、算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进。

 5、算法的并行机制的潜在能力没有得到充分的利用。

 

五、遗传算法的应用领域
1、优化:遗传算法可用于各种优化问题。既包括数量优化问题,也包括组合优化问题。
2、程序设计:遗传算法可以用于某些特殊任务的计算机程序设计,如元胞计算机。
3、机器学习:遗传算法可用于许多机器学习的应用,包括分类问题和预测问题等,如预测天气或预测蛋白质的结构。

4、经济学:应用遗传算法对经济创新的过程建立模型,可以研究投标的策略,还可以建立市场竞争的模型。
5、免疫系统:应用遗传算法可以对自然界中免疫系统的多个方面建立模型,研究个体的生命过程中的突变现象以及发掘进化过程中的基因资源。
6、生态学:遗传算法可以应用于对生态学的一些现象进行建模,包括生物间的生存竞争,宿主—寄生物的共同进化,共生现象,甚至包括生物学“军备竞赛”。
7、进化现象和学习现象:遗传算法可以用来研究个体是如何学习生存技巧的,一个物种的进化对其他物种会产生何种影响等等。
8、社会经济问题:遗传算法可以用来研究社会系统中的各种演化现象,例如在一个多主体系统中,协作与交流的是如何演化出来的。

六、一个简单的遗传算法实例

求函数f(x1,x2)=100*(x1*x1-x2)^2+(1-x1)^2 ;-2.0480<=x1,x2<=2.0480的最大值。

 

clc;clear all;

format long;%设定数据显示格式

%初始化参数

T=100;%仿真代数

N=80;% 群体规模

pm=0.05;pc=0.8;%交叉变异概率

umax=2.048;umin=-2.048;%参数取值范围

L=10;%单个参数字串长度,总编码长度2L

bval=round(rand(N,2*L));%初始种群

bestv=-inf;%最优适应度初值

%迭代开始

for ii=1:T

%解码,计算适应度

for i=1:N

        y1=0;y2=0;

       for j=1:1:L

          y1=y1+bval(i,L-j+1)*2^(j-1);

       end

       x1=(umax-umin)*y1/(2^L-1)+umin;

       for j=1:1:L

          y2=y2+bval(i,2*L-j+1)*2^(j-1);

       end

       x2=(umax-umin)*y2/(2^L-1)+umin;

       obj(i)=100*(x1*x1-x2).^2+(1-x1).^2; %目标函数

       xx(i,:)=[x1,x2];

    end

func=obj;%目标函数转换为适应度函数

p=func./sum(func);

q=cumsum(p);%累加

[fmax,indmax]=max(func);%求当代最佳个体

   if fmax>=bestv

     bestv=fmax;%到目前为止最优适应度值

     bvalxx=bval(indmax,:);%到目前为止最佳位串

     optxx=xx(indmax,:);%到目前为止最优参数

   end  

   Bfit1(ii)=bestv; % 存储每代的最优适应度

%遗传操作开始

%轮盘赌选择

 for i=1:(N-1)

    r=rand;

    tmp=find(r<=q);

    newbval(i,:)=bval(tmp(1),:);

 end

  newbval(N,:)=bvalxx;%最优保留

  bval=newbval;

%单点交叉

for i=1:2:(N-1)

   cc=rand;

   if cc<pc

      point=ceil(rand*(2*L-1));%取得一个1到2L-1的整数

      ch=bval(i,:);

      bval(i,point+1:2*L)=bval(i+1,point+1:2*L);

      bval(i+1,point+1:2*L)=ch(1,point+1:2*L);

    end

end  

bval(N,:)=bvalxx;%最优保留

%位点变异

mm=rand(N,2*L)<pm;

mm(N,:)=zeros(1,2*L);%最后一行不变异,强制赋0

bval(mm)=1-bval(mm);

end

%输出

plot(Bfit1);% 绘制最优适应度进化曲线

bestv   %输出最优适应度值

optxx    %输出最优参数

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是遗传算法的一些相关知识遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它最初由美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Holland教授所提出的GA通常为简单遗传算法(SGA)。   遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值