2015-04-12 203 views
0

我無法通過Matlabs GA函數傳遞數據時遇到問題。在Matlab中通過遺傳算法傳遞額外參數

我有我存儲在以下結構中的一些數據:

param = 
       g: 9.8100 
      rho: 1.2000 
     mph_mps: 0.4470 
     rpm2rads: 0.1047 
gasoline_density: 0.7197 
    liter2gallon: 0.2642 
     MIN_SOC: 0.4000 
     MAX_SOC: 0.8000 
      grade: 0 

ds1 = struct2dataset(param); 
options1 = gaoptimset('InitialPopulation',1,'PopulationSize',100,'Generations',50,'PlotFcns',@gaplotbestfun,ds1); 

然後我得到這個錯誤:

Error using gaoptimset (line 267) 
Arguments must occur in name-value pairs. 

我有數據,有更多的結構,我不希望傳遞每個參數就像他們說的:

http://www.mathworks.com/help/gads/gaoptimset.html(IE)

options = gaoptimset('param1',value1,'param2',value2,...) 
+0

您可以通過這種方式發佈自己問題的答案 – YXD

+0

謝謝你告訴我:) –

回答

1

使用功能手柄!!!

http://www.mathworks.com/help/optim/ug/passing-extra-parameters.html

% Set objective function 
[email protected](x)Dynamic_Programming_func(x,param); 
% Set constraint function 
[email protected](x)constraint(x,param); 

options1 = gaoptimset('InitialPopulation',ini,'PopulationSize',populations,'Generations',generations,'PlotFcns',@gaplotbestfun); 

%% Solve problem 
[x,fval,exitflag,output] = ga(vfun,nvars,[],[],[],[],x_L,x_U,nonlcon,IntCon,options1) 

所以,現在我的約束條件和目標函數被通過了所有他們所需要的參數!