【问题标题】:feval taking a lot of time in matlab ga optimizationfeval 在 matlab ga 优化中花费了很多时间
【发布时间】: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


【解决方案1】:

想不出改进 feval。所以决定完全绕过它。

设置 options.Vectorized='on' 并修改适应度函数以获取输入数组。

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 2015-08-02
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 2019-01-06
    相关资源
    最近更新 更多