数学建模社区-数学中国

标题: 新人求教一个遗传算法的问题 [打印本页]

作者: xiaoOMming    时间: 2013-8-22 14:30
标题: 新人求教一个遗传算法的问题
程序如下:
%m文件
function eval=f(sol)
numv=size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
%m文件
function[sol,eval]=fitness(sol,options)
numv=size(sol,2)-1;
x=sol(1:numv);
eval=f(x);
eval=-eval;
%主程序
clc,clear
bounds=ones(2,1)*[-5 5];
initPop=initializega(10,bounds,'fitness');
[p,endPop,bestSols]=ga(bounds,'fitness',[],initPop,[1e-6 0 0],'maxGenTerm',1000,'normGeomSelect',[0.08],['simpleXover'],[0.3],'binaryMutation',[0.1]);
然后是出现的问题:Index exceeds matrix dimensions.

Error in b2f (line 34)
  a=bval((cs(i)+1):cs(i+1));


Error in ga (line 194)
      bPop(bFoundIn,:)=[gen b2f(startPop(bindx,1:numVar),bounds,bits)...


Error in Untitled4 (line 4)
[p,endPop,bestSols]=ga(bounds,'fitness',[],initPop,[1e-6 0 0],'maxGenTerm',1000,'normGeomSelect',[0.08],['arithXover'],[2 0;2 3;2 0],'nonUnifMutation',[2 25 3]);
是我的工具箱有问题还是程序有问题,不懂求教大神



作者: xiaoOMming    时间: 2013-8-22 17:56
自己顶一下

作者: magic2728    时间: 2013-8-22 19:37
你的矩阵维数不互相匹配,仔细检查下每个矩阵之间的计算是否符合维度要求。
作者: xiaoOMming    时间: 2013-8-22 19:51
magic2728 发表于 2013-8-22 19:37
你的矩阵维数不互相匹配,仔细检查下每个矩阵之间的计算是否符合维度要求。

是知道是这个问题,但是不知道怎么改,是这个程序要改,还是工具箱里的程序要改?
作者: magic2728    时间: 2013-8-22 22:39
你去看一个个变量的维数,自然就会了。
作者: xiaoOMming    时间: 2013-8-23 00:02
magic2728 发表于 2013-8-22 22:39
你去看一个个变量的维数,自然就会了。

找不到问题出在哪里。。
能否请你帮忙运行一下,提示一下错误,拜托
作者: madio    时间: 2013-8-23 03:52
initializega这个函数是安装了什么工具箱?我这里没有
作者: xiaoOMming    时间: 2013-8-23 10:27
madio 发表于 2013-8-23 03:52
initializega这个函数是安装了什么工具箱?我这里没有

就是这个 遗传工具箱.rar (102.67 KB, 下载次数: 2)




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5