现在的位置: 首页 > 综合 > 正文

遗传算法初接触

2013年05月15日 ⁄ 综合 ⁄ 共 1035字 ⁄ 字号 评论关闭

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

【上篇】
【下篇】

抱歉!评论已关闭.