我有一个向量化函数,它是优化器的目标函数(遗传算法)。
在该函数中,有一个快速优化,它是该函数计算的一部分,如下所示:
function error = ObjectiveFunction(a, b, c)
x = a.*b;
y = c.*b;
z = patternsearch(@fun, [x, y]);
error = x+y.*z;
end
solution = ga(@ObjectiveFunction, 'vectorized', true);
ObjectiveFunction
接受解的向量。这使得
ga
速度更快。不过,既然里面
patternsearch
在这个过程中,这个矢量化将是无用的,因为
模式搜索
(作为优化器)不以矢量化方式工作。
所以我不得不编辑我的函数:
function error = ObjectiveFunction(a, b, c)
x = a.*b;
y = c.*b;
for i = 1:size(x,1)
z(i) = patternsearch(@fun, [x(i), y(i)]);
end
error = x+y.*z;
end
有没有办法用一个向量化的调用来替换循环
?