2012-07-31 109 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

當完全定義初始種羣(種羣大小等於初始種羣矩陣的行數)時,我遇到了同樣的問題。 這是由最初人羣中的一個人的線性約束的違反造成的。 因此,檢查手動分配的個人是否違反線性約束。