0

MATLABのグローバル最適化ツールボックスで関数を使用しているときに不可解なエラーが発生しましgaた。エラーメッセージを下に貼り付けて、これが何を意味するのかを誰かが解読できるかどうかを確認します。

私はga、初期母集団、pop-by-nvarの行列をシードしようとしています。ただし、これにより以下のエラーが発生します。ga(pop-1)-by-nvarの初期母集団ベクトルを渡した場合にのみ、を実行できます。人口全体を指定したいので、これは少し不便です。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, ...
4

2 に答える 2

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)であることに注意してください

于 2012-07-31T14:41:22.283 に答える
0

初期母集団を完全に定義するときにも同じ問題が発生しました(母集団のサイズは初期母集団マトリックスの行数に等しい)。これは、初期集団の個人の1人による線形制約の違反によって引き起こされました。したがって、手動で割り当てられた個人が線形制約に違反していないかどうかを確認してください。

于 2013-05-07T13:59:14.863 に答える