初遇Sheffield遗传算法工具箱

安装参考      http://www.cnblogs.com/kissrat/archive/2008/10/15/1311563.html

安装:
1、解压gatbx-origin.zip,得到DOC和SRC文件夹;
2、拷贝SRC到Matlab安装目录下的toolbox文件夹中,并将SRC更名为gatbx;
3、打开toolbox\local\目录下的pathdef.m文件,在适当位置添加以下两行代码:  (也可addpath)

Code in pathdef.mmatlabroot,'\toolbox\gatbx;',... matlabroot,'\toolbox\gatbx\TEST_FNS;',...

这样子就表示安装好了吧,哈哈。。

>> v=ver('gatbx')

v = 

        Name: 'Genetic Algorithm Toolbox'
     Version: '1.2'
     Release: ''
        Date: '15-Apr-94'
    Licenses: {'unknown'}

然而,事不尽人意,正准备好好研究下它的内置函数时,,

% 创建初始种群
clc;clear;
Nind=60;   %种群个体数
Lind=30;   %个体长度
[Chrom,Lind,BaseV]=CRTBP(Nind,Lind);   %创建随机二进制矩阵

却报错了,错误如下。。。。

Cannot find an exact (case-sensitive)
match for 'CRTBP.m'

The closest match is E:\my programming
software\matlab\matlab
2012a\toolbox\gatbx\CRTBP.M

To change the file extension, cd to the
file's folder, type:
   movefile CRTBP.M CRTBP.m_bad;
   movefile CRTBP.m_bad CRTBP.m
and then cd back.


Error in sheffield (line 10)
[Chrom,Lind,BaseV]=CRTBP(Nind,Lind);
%创建随机二进制矩阵 

上网找了一个解决方法。。

http://www.ilovematlab.cn/thread-277326-1-1.html

但,仍然出错,,继续找解决方法

http://cn.mathworks.com/matlabcentral/answers/89490-cannot-find-an-exact-case-sensitive-match

http://cn.mathworks.com/help/matlab/matlab_env/toolbox-path-caching-in-the-matlab-program.html

(⊙o⊙)嗯,原来清空路径缓存就可以啦,开心!(英语还是蛮有用的,以后要好好学,O(∩_∩)O哈哈~)

 

好啦,弄了一上午,终于可以开启我的遗传算法之旅了!

之前,遗传算法都是自己一点点摸索一点点写的,但是,很不幸,解决问题的效果不好。这就是在打击我的自信心嘛,(⊙o⊙)…所以,决定换个思路,,

这几天整理知识,看了《Matlab智能算法30个案例分析》这本书,嗯,为了更好的解决问题,还是学学著名的Sheffield遗传算法工具箱啦。。

这篇博文整理得还不错    http://www.cnblogs.com/zhengnanlee/p/3439649.html

 

1.创建种群

  crtbase:创建基向量

  crtbp:创建任意离散随机种群

  crtrp:创建实质初始种群

2.适应度计算

  ranking:基于排序的适应度分配

  scaling:比率适应度计算

3.选择函数

  rws:轮盘选择

  sus:随机遍历采样

  select:高级选择例程

4.交叉算子

  recdis:离散重组

  recint:中间重组

  recline:线性重组

  recmut:具有变异特征的线性重组

  xovdp:两点交叉算子

  xovdprs:减少代理的两点交

  xovmp:通常多点交叉

  xovsh:洗牌交叉

  xovshrs:减少代理的洗牌交叉

  xovsp:单点交叉

  xovsprs:减少代理的单点交叉

  recombin:高级重组算子

5.变异算子

  mut:离散变异

  mutate:高级变异函数

  mutbga:实值变异

6.重插入

  reins:一致随机和基于适应度的重插入

7.子种群的支持

  migrate:在子种群间交换个体

8.实用函数

  bs2rv:二进制串到实值的转换

  rep:矩阵的复制

 

 

遇到了一个区域描述器的概念,有点棘手。。

  某一元函数优化

FieldD=[PRECI;lb;ub;1;0;1;1];                      %区域描述器

      某二元函数优化

FieldD=[PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1];                      %区域描述器
X=bs2rv(Chrom,FieldD); 

区域描述器行数必须为7

    len;  (num)
    lb;  (num)
    ub;  (num)
    code;  (0=binary     | 1=gray)
    scale;  (0=arithmetic | 1=logarithmic)
    lbin;  (0=excluded   | 1=included)
    ubin];  (0=excluded   | 1=included)

 len是包含在Chrom中的每个子串的长度,注意sum(len)=length(Chrom);

 lb、ub是行向量,分别指明每个变量使用的上界和下界;

 code是二进制行向量,指明子串是怎样编码的,code(i)=1为标准二进制编码,code(i)=0则为格雷编码

 scale是二进制行向量,指明每个子串是否使用对数或算术刻度,scale(i)=0为算术刻度,scale(i)=1则为对数刻度;

 lbin、ubin是二进制行向量,指明表示范围中是否包含每个边界,选择lbin=0或ubin=0,表示从范围中去掉边界;lbin=1或ubin=1则表示范
围中包含边界。

 

posted @ 2015-09-06 09:00  Nagihiko  阅读(2222)  评论(0编辑  收藏  举报