在Matlab中通过遗传算法传递额外参数
问题描述:
我无法通过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,...)
答
使用功能手柄!!!
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)
所以,现在我的约束条件和目标函数被通过了所有他们所需要的参数!
您可以通过这种方式发布自己问题的答案 – YXD
谢谢你告诉我:) –