0

実行時間の改善にご協力いただける場合は、コードのこの部分を投稿します。

私はコードを verctorising し、Matlab コンパイラを使用しようとしましたが、重要な改善はありませんでした。

何百万回も呼び出されるコード (I5 3.5GH および Ram=4GH では、1 回の実行に数時間かかります):


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関数は、プロファイラーによって最も複雑であると言われています。

前もって感謝します

4

0 に答える 0