2012-07-31 108 views
0

当我在MATLAB的全局优化工具箱中使用ga函数时,我遇到了一个令人费解的错误,下面粘贴错误消息以查看是否有人可以解密这意味着什么。全局优化工具箱中的遗传算法(ga)与种子初始种群的错误

我正在尝试给ga播种一个初始种群,一个由nvar弹出的矩阵。但是,这会产生下面的错误。如果我传入(pop-1)-by-nvar的初始种群向量,我只能运行ga。这有点不方便,因为我想指定整个人口。我希望熟悉全局优化工具箱和ga函数的人可以在这里了解一些情况!

??? Index exceeds matrix dimensions. 

Error in ==> gacreationlinearfeasible>lhsLambda at 213 
    [lambda(i,:),f,e] = fmincon(fun,lambda(i,:),[],[],Aeq,beq,lb,ub,[],opts); 

Error in ==> gacreationlinearfeasible>feasibleLHS at 180 
      initialPopulation(boundary_points+1:interior_points+boundary_points,:) = ... 

Error in ==> gacreationlinearfeasible at 42 
     feasiblePop = feasibleLHS(individualsToCreate,GenomeLength,options); 

Error in ==> makeState at 30 
     state.Population = feval(options.CreationFcn,GenomeLength,FitnessFcn,options,options.CreationFcnArgs{:}); 

Error in ==> galincon at 18 
state = makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options); 

Error in ==> ga at 282 
     [x,fval,exitFlag,output,population,scores] = galincon(FitnessFcn,nvars, ... 
+2

如果您发布用于调用“ga”函数的代码,它会有所帮助 – Amro 2012-07-31 14:20:56

回答

2

下面是使用GA与指定的初始种群的一个例子:

%# find minima 
initPop = bsxfun(@plus, [2 3], randn(20,2)*2); %# 20-by-2 matrix 
opts = gaoptimset('InitialPopulation',initPop); 
[x, fx, flag, out, pop] = ga(@rastriginsfcn, 2, [],[], [],[], [],[], [], opts); 

%# plot solution 
figure('Renderer','opengl') 
ezsurfc(@(x,y) rastriginsfcn([x,y])), colormap hot 
line(x(1), x(2), fx, 'Marker','.', 'MarkerSize',50, 'Color','b') 
view(3) 

这里是溶液后72代获得:

screenshot

注意,Rastrigin函数具有全局最小值(0,0)

0

当完全定义初始种群(种群大小等于初始种群矩阵的行数)时,我遇到了同样的问题。 这是由最初人群中的一个人的线性约束的违反造成的。 因此,检查手动分配的个人是否违反线性约束。