当在MATLAB的全局优化工具箱中使用ga
函数时,我遇到了一个令人费解的错误,下面粘贴了错误消息,看看是否有人可以破译这意味着什么。
我试图用ga
种植一个初始种群,一个pop-by-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, ...
答案 0 :(得分: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代之后得到的解决方案:
请注意,Rastrigin函数的全局最小值为(0,0)
答案 1 :(得分:0)
在完全定义初始种群时(种群大小等于初始种群矩阵的行数),我遇到了同样的问题。 这是由初始人口中的一个人违反线性约束引起的。 因此,请检查手动分配的个人是否违反线性约束。