zoukankan      html  css  js  c++  java
  • 遗传算法初接触

    遗传算法(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遗传算法工具箱及应用 》《遗传算法及其应用》

  • 相关阅读:
    使用Beanstalkd_console
    使用Beanstalkd实现队列
    队列中使用Database Driver
    Myeclipse中无法删除部署在tomcat上的工程
    欢迎使用CSDN-markdown编辑器
    oracle11g 远程登录数据库
    oracle11g卸载出错 无法删除文件,文件正在使用中
    oracle11g OEM无法连接到数据库实例解决办法
    用SQLData读写数据库自定义类型
    java读写中文文件
  • 原文地址:https://www.cnblogs.com/feisky/p/1591666.html
Copyright © 2011-2022 走看看