• 遗传算法初接触


    遗传算法(Genetic Algorithm, GA)是模拟达尔文的遗传选择和自然淘汰的生物进化工程的计算模型,它由美国Michigan大学J.Holland教授于1975年首先提出。

    GA是全局寻优的优化算法,简单通用,鲁棒性强,适用于并行处理,应用范围广。

    image

    从上述的流程可以看出,遗传算法包括5个基本要素:参数编码,初始群体设定,适应度函数的设计,遗传操作,控制参数的设定(群体大小、遗传操作的概率等)。

    遗传算法的优点:

    (1)处理的对象的不是参数本身,而是对参数及进行了编码的个体。

    (2)同时对多个个体进行评估,具有较好的全局搜索性能,减少陷入局部最优解的风险。

    (3)仅用适应度函数值来评估个体,适应度函数不受连续可微的约束,其定义域可以任意指定,这样就大大扩展了其应用范围。

    (4)采用概率变迁规则来指导它的搜索方向。

    遗传算法的主要应用领域

    image

    遗传算法今后的主要课题

    1. 优化搜索方向的研究;
    2. 学习系统的遗传算法研究;
    3. 生物进化与遗传算法的研究;
    4. 遗传算法的秉性分布处理;
    5. 人工生命与遗传算法的研究。

    一个小例子:

    题目:求解下列函数的最大值
          max f(x)=xsin(10*pi*x)+2,x∈[-1,2]

       1:  
       2: %fminbnd 单变量,黄金分割法,插值法
       3: x1=1.5;
       4: x2=2;
       5: [x,fval]=fminbnd('-x*sin(10*pi*x)-2',x1,x2)  %max
       6:  
       7: %fminunc 单多变量,梯度最优化算法
       8: x1=1.5;
       9: x2=2;
      10: [x,fval]=fminunc('-x*sin(10*pi*x)-2',x1,x2)  %max
      11:  
      12: %fminsearch 多变量 Nelder算法
      13: x1=1.5;
      14: x2=2;
      15: [x,fval]=fminsearch('-x*sin(10*pi*x)-2',x1,x2)   %max

    采用遗传算法:(Matlab R2008a)

    function y=cc(x)
    y=-x*sin(10*pi*x)-2;
    
    clc;clear all; close all;
    FitnessFunction=@cc;
    numberOfVariables=1;
    LB=1.5;
    UB=2;
    [x,fval] = ga(FitnessFunction,numberOfVariables,[],[],[],[],LB,UB)

    GA GUI工具:optimtool(‘ga’)  gatool

    image

    参考书籍:《MATLAB遗传算法工具箱及应用 》《遗传算法及其应用》

  • 相关阅读:
    算法的定义
    用标准的CSS定义你的表格样式
    Mysql存储过程中临时表的建立及游标遍历
    Ubuntu10.0下编译qt版webkit
    指针函数的一个范例,在单片机上运用它能让您的程序结构更明朗清晰,层次感强
    你若不自己爬上来,我就把你打死在水中——分享三个跟管理有关的小故事
    Windows 上使用 Github 手记
    IIS应用程序池由服务器引起常见错误号的原因分析及解决方法
    如何实施好基于MOSS的企业搜索项目(上)
    如何做好项目经理
  • 原文地址:https://www.cnblogs.com/feisky/p/1591666.html
Copyright © 2020-2023  润新知