【发布时间】:2015-02-14 09:25:54
【问题描述】:
我正在运行 ga 优化,并且在 fcnvectorizer.m 的 feval 行中浪费了很多时间。这是 ga 优化的私有函数。我已经运行了探查器,结果如下。
适应度函数被调用1600次,总共需要9.8秒。
下面的 fval 行一共调用了 1600 次,总共需要 117 秒。
y(i,:) = feval(fun,(pop(i,:)));
这里,fun 是我的健身函数的函数句柄。上面的行应该简单地调用适应度函数并将结果分配给 y 向量。我不明白为什么简单调用适应度函数需要这么多时间。
我使用的是 Matlab 7.9.0(R2009b),下面是内存命令的输出
Maximum possible array: 25346 MB (2.658e+010 bytes) *
Memory available for all arrays: 25346 MB (2.658e+010 bytes) *
Memory used by MATLAB: 661 MB (6.936e+008 bytes)
Physical Memory (RAM): 16324 MB (1.712e+010 bytes)
开始 ga 的代码片段:
contract='NIFTY';
dates=all_dates([20140801 20140831]); % all_dates between given two dates
options=gaoptimset('PopInitRange',Bound,'PopulationSize',100,...
'EliteCount',2, 'Generations',16,'StallGenL',8,...
'Display','iter');
options.dates=dates;
for i=1:length(dates)
options.data(i)=loaddata(contract,dates(i)); %loaddata is custom function to load data for a particular date.
end
fitnessFcn=@(x)fitness(x,options);
[x,fval] = ga(fitnessFcn,8,options);
【问题讨论】:
-
您能否提供一段代码来重现该行为?
标签: performance matlab genetic-algorithm