如果您可以帮助我对其执行时间进行任何改进,我将发布这部分代码。
我尝试验证代码并使用 Matlab 编译器,但没有重要的改进。
代码被调用数百万次(一次执行需要数小时,I5 3.5GH 和 Ram=4GH):
function [res] = binCross(a,b,cr)
s=length(a);
mui = rand(1,s) < cr ; % all random numbers < CR are 1, 0 otherwise
mpo = mui < 0.5;
res= a.*mpo + b.*mui;
fx=randi(s);
res(fx)=b(fx);
end
function [res] = mutate(a,b,c,f)
res=a+f*(b-c);
function s=simplebounds(s,Lb,Ub)
% Apply the lower bound
ns_tmp=s;
I=ns_tmp<Lb;
ns_tmp(I)=Lb(I);
% Apply the upper bounds
J=ns_tmp>Ub;
ns_tmp(J)=Ub(J);
% Update this new move
s=ns_tmp;
end
上面的binCross
函数被 profiler 认为是最复杂的。
先感谢您