我是小鸭酱,博客地址为: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. ui router digest 10 time

    refer : https://github.com/angular-ui/ui-router/issues/600 $urlRouterProvider.when("/", &q ...

  2. Android取得屏幕的高度和宽度

    //获得手机屏幕的宽度和高度 width=getWindowManager().getDefaultDisplay().getWidth(); height=getWindowManager().ge ...

  3. Findbugs初探-使用idea获取findbugs插件

    /* * 整天忙于无限重复的黑盒测试,不论是写脚本,还是手工测,都难以脱离黑&&灰盒测试,所以忽然间想,大学时期学过的所有课程就这样扔掉吗?不好!既然选择了做测试,那么就要一直坚持下去 ...

  4. HDFS文件读取详解

    客户端与HDFS文件读取 创建HDFS文件系统实例 FileSystem fs = FileSystem.get(new URI("hdfs://ns1"), new Config ...

  5. angular 数据加载动画 longding

    由于公司服务器架构不行,每次加载数据都要很久,但是都是使用angular来渲染数据,不像jquery有beforsend什么的方法, 这是一个github上找的,很轻使用也很简单 1.安装  npm ...

  6. MYSQL数据备份与还原学习笔记

    数据备份与还原   1.mysqldump 1.1 文件地址: E:\xampp\mysql\bin 文件名:mysqldump.exe CMD下进入mysqldump.exe cd E:\xampp ...

  7. SVN权限修复

    Description : Commit failed (details follow): Suggestion : The operation could not be completed. Tec ...

  8. 添加链接服务器 SQL SERVER

    使用sql语句: exec sp_addlinkedserver @server='serverontest',@provider='sqloledb',@srvproduct='',@datasrc ...

  9. swift 实现漂亮的粒子效果CAEmitterLayer

    一些粒子效果 我们经常会在一些游戏或者应用中看到一些炫酷的粒子效果,我们在iOS中也能很轻松的搞一些粒子效果 我们本次做得是一个下雪的效果,看下效果图 源码地址: https://github.com ...

  10. 50个android开发技巧

    50个android开发技巧 http://blog.csdn.net/column/details/androidhacks.html