我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang
以下运用MATLAB实现遗传算法:
 
clc
clear
 
%参数
a = 0 ;
b = 4 ;
eps = 0.01 ;
lenchrom = ceil(log2((b - a)/eps + 1)) ;
sizepop = 50 ;
maxgen = 500 ;
pcross = 0.9 ;
pm = 0.05 ;
 
fitness = ones(1,sizepop) ;
chrom = zeros(sizepop,lenchrom) ;
nx = zeros(sizepop,lenchrom) ;
 
 
%初始化
%随机产生一个种群
for i = 1 : sizepop
    for j = 1 : lenchrom
        chrom(i,j) = round(rand) ;
    end
        x = a + (b - a) * (dot( 2 .^ ((lenchrom - 1) : -1 : 0 ) , chrom(i,:)) ) / ( 2 ^ lenchrom - 1) ;
        fitness(i) = fun(x); 
end
 
[bestfitness , bestindex] = max(fitness); 
bestchrom = chrom(bestindex,:) ;
 
for i = 1 : maxgen
    %select
    sumfitness = sum(fitness) ;
    fit = fitness ./ sumfitness ;
    tfit = zeros(sizepop) ;
    tfit(1) = fit(1) ;
    for j = 2 : sizepop
        tfit(j) = tfit(j - 1) + fit(j) ;
    end
    for k =  1 : sizepop
        pick = rand ;
        if pick < fit(1)
            father = 1 ;
        else
           for l = 1 : (sizepop - 1 )
              if pick > tfit(l) && pick < tfit(l + 1)
                father = l + 1 ;
              end
           end
        end
        mother = ceil(rand * sizepop) ;            
        %cross
        pick = rand ;         
        if pcross > pick
            poscross = randperm(lenchrom,1) ;
            nx(k,1:poscross) = chrom(father,1:poscross) ;
            nx(k,(poscross + 1):lenchrom) = chrom(mother,(poscross + 1):lenchrom) ;
        else
            nx(k,:) = chrom(father,:) ;
        end
       %mutation
       index = randperm(sizepop,1) ; 
       pick = rand ;
       if pick < pm
           posm = randperm(lenchrom,1) ;
           chrom(index,posm) = ~chrom(index,posm) ;
       end
    end
    
    chrom = nx ;
    
    for j = 1 : sizepop
        x = a + (b - a) * (dot( 2 .^ ((lenchrom - 1) : -1 : 0 ) , chrom(j,:)) ) / ( 2 ^ lenchrom - 1) ;
        fitness(j) = fun(x) ;
    end
    
    [newbestfitness , newbestindex] = max(fitness) ;
    if newbestfitness > bestfitness
        bestfitness = newbestfitness ;
        bestindex = newbestindex ;
        bestchorm = chrom(bestindex,:) ;
    end
end
 
bestx = a + (b - a) * (dot( 2 .^ ((lenchrom - 1) : -1 : 0 ) , bestchrom) ) / ( 2 ^ lenchrom - 1)
bestf = bestx * sin(bestx)

遗传算法matlab实现的更多相关文章

  1. 遗传算法MATLAB工具包简介

    下面介绍的函数都是Sheriffed大学遗传算法工具包内的常用函数 复制矩阵 B=rep(A,RepN) 1 A表示要被复制的矩阵,RepN包含每个方向的复制次数,RepN(1)代表纵向复制次数,Re ...

  2. 遗传算法MATLAB实现(2):一元函数优化举例

    遗传算法提供了一种求解非线性.多模型.多目标等复杂系统优化问题的通用框架. 先从例子开始,慢慢再总结理论... [例]利用遗传算法计算函数f(x)=x*cos(5*pi*x)+3.5在区间[-1,2. ...

  3. 遗传算法MATLAB实现(3):多元函数优化举例

    多峰的Shubert为: 求f(x,y)在[-10,10]x[-10,10]上的最大值. MATLAB代码: fun_mutv函数为: function my=fun_mutv(x,y) t1=zer ...

  4. 遗传算法MATLAB实现(1):工具箱下载及安装

    到官网下载谢菲尔德大学的GA工具箱:http://codem.group.shef.ac.uk/index.php/ga-toolbox(其实蛮不懂为什么有人把这个传到某个网上还需要积分才能下载,人家 ...

  5. 遗传算法Matlab源程序

    参考自: http://blog.163.com/zhaoshuyu_thomas/blog/static/461929072009103034816716/ 大家内容上可以参考上述文章,但其代码有很 ...

  6. matlab算法

    流水线型车间作业调度问题遗传算法Matlab源码流水线型车间作业调度问题可以描述如下:n个任务在流水线上进行m个阶段的加工,每一阶段至少有一台机器且至少有一个阶段存在多台机器,并且同一阶段上各机器的处 ...

  7. [Evolutionary Algorithm] 进化算法简介

    进化算法,也被成为是演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算法,而是一个“算法簇”.进化算法的产生的灵感借鉴了大自然中生物的进化操作,它一般包括基因编 ...

  8. MATLAB中如何使用遗传算法

    matlab有遗传算法工具箱. 核心函数:   (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成 ...

  9. matlab遗传算法

    function [xv,fv] = myGA(fitness, a, b, NP, NG, Pc, Pm, eps) % 用遗传算法求解一维无约束优化问题 % % 待优化的目标函数 fitness ...

随机推荐

  1. PHP Java

    http://my.oschina.net/lajp/blog/5121 http://blog.163.com/lijianwei_123/blog/static/18489289120115244 ...

  2. poj 1819 Disks

    http://poj.org/problem?id=1819 #include <cstdio> #include <cstring> #include <cmath&g ...

  3. Android中开发Service

    Service的开发分为两个步骤:定义Service和配置Service1.定义Service定义一个Service子类继承于Service2.配置Service在AndroidManifest.xm ...

  4. Web Server (IIS) Administration Cmdlets in Windows PowerShell

    https://technet.microsoft.com/en-us/library/ee790599.aspx Web Server (IIS) Administration Cmdlets in ...

  5. BZOJ3301: [USACO2011 Feb] Cow Line

    3301: [USACO2011 Feb] Cow Line Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 67  Solved: 39[Submit ...

  6. 【转】Android:控件Spinner实现下拉列表

    原文网址:http://www.cnblogs.com/tinyphp/p/3858920.html 在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉 ...

  7. 大型分布式C++框架《三:序列化与反序列化》

    一.前言  个人感觉序列化简单来说就是按一定规则组包.反序列化就是按组包时的规则来接包.正常来说.序列化不会很难.不会很复杂.因为过于复杂的序列化协议会导致较长的解析时间,这可能会使得序列化和反序列化 ...

  8. spring中获取Bean

    在测试类中我们获取已经装配给容器的Bean的方法是通过ApplicationContext,即 ApplicationContext ac=new ClassPathXmlApplicationCon ...

  9. 解决Qt5.7.0 cannot find -lGL

    很久没用Qt了,这次要做一个协议编辑器,在ubuntu 14.04上安装了最新版本的Qt 5.7.0.界面改用扁平化风格,第一感觉还不错.按默认步骤创建了一个gui程序,编译运行,报了一个错:cann ...

  10. [nagios监控] NRPE: Unable to read output 的原因及排除

    nrpe被监控端运行定义命令正常,监控端运行 #/usr/local/nagios/libexec/check_nrpe -H 117.121.9.200 -c check_oracle_tables ...