来自全局优化工具箱的MATLAB遗传算法(ga)与种子初始种群的误差

时间:2012-07-31 13:59:35

标签: genetic-algorithm mathematical-optimization matlab

当在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, ...

2 个答案:

答案 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代之后得到的解决方案:

screenshot

请注意,Rastrigin函数的全局最小值为(0,0)

答案 1 :(得分:0)

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