我是小鸭酱,博客地址为: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. ural 1572 Yekaterinozavodsk Great Well

    #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> # ...

  2. Linux永久挂载远程网络目录

    一般我们不永久挂载可以这样: mount -t cifs -o user=administrator,password=Fjqx2012,codepage=cp936,iocharset=cp936 ...

  3. linux下编译eXosip、osip,以及UAC和UAS的例子

    从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013 ...

  4. LeetCode-Word LadderII

    Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...

  5. JBossESB教程(二)——将JBossESB部署到JBossAS中

    前言 上篇讲了JBossESB的环境搭建,但是细心的同学会发现,我们在添加JBoss AS的时候,实际上添加的是jbossesb-server,而这个里面是没有EJB的支持的.如果我们想要使开发环境能 ...

  6. Java学习笔记(1)——基本数据类型

    一.进制转换 10^n被称为权  10称为基数   计算机中正数和负数的关系是取反加一, 如: ~3+1=-3 补码边界运算有溢出风险 32位二进制补码最多表示2^32个数, -2G~2G 1,计算机 ...

  7. 设置MyEclipse的右击新建后面的选项

    转自:http://blog.sina.com.cn/s/blog_929b09ac010197g6.html,做了修改 最近发现在MyEclipse右击后,新建后面的菜单选项太少了,新建一个文件,还 ...

  8. 计算app内部缓存文件大小

    #pragma mark - 计算单个文件大小 - (long long)fileSizeAtPath:(NSString*)filePath{ NSFileManager* manager = [N ...

  9. lesson5:利用jmeter来压测消息队列(activemq)

    本文讲述了利用jmeter来压测消息队列,其中消息队列采用apache的activemq,jmeter本身是支持符合jms标准消息队列的压测,由于jmeter的官方sampler配置比较复杂,本文直接 ...

  10. asp.net 分页类

    PaginatedList.cs using System;using System.Collections.Generic;using System.Linq;using System.Web; n ...