sc_evalde.m

来自「模式识别工具箱。非常丰富的底层函数和常见的统计识别工具」· M 代码 · 共 48 行

M
48
字号
function pop = sc_EvalDE(funcstr, maxnum)
global FunCount;
rand('state',sum(100*clock)) ;
[VTR, Box,szObjStr,OptX] = GetFuncInfo(funcstr);

D = size(Box, 1);

XVmin = Box(:,1)';
XVmax = Box(:,2)';

% y		problem data vector (remains fixed during optimization)
y=[]; 

% NP            number of population members
NP = 100;%min(100, D * 10); 

% itermax       maximum number of iterations (generations)
itermax = 1000; 

% F             DE-stepsize F ex [0, 2]
F = 0.9; 

% CR            crossover probabililty constant ex [0, 1]
CR = 0.9; 

% strategy       1 --> DE/best/1/exp           6 --> DE/best/1/bin
%                2 --> DE/rand/1/exp           7 --> DE/rand/1/bin
%                3 --> DE/rand-to-best/1/exp   8 --> DE/rand-to-best/1/bin
%                4 --> DE/best/2/exp           9 --> DE/best/2/bin
%                5 --> DE/rand/2/exp           else  DE/rand/2/bin

strategy = 7

% refresh       intermediate output will be produced after "refresh"
%               iterations. No intermediate output will be produced
%               if refresh is < 1
refresh = 50; 

for i=1:maxnum
    FunCount = 0;
    [x(i,:),f(i), tt, pop] = devec3(szObjStr,VTR,D,XVmin,XVmax,y,NP,itermax,F,CR,strategy,refresh);
    nf(i) = FunCount;
end;
flag = f < VTR;
fname = sprintf('RE_DE_%s.mat', funcstr); 
save(fname, 'f', 'nf', 'flag','x','maxnum');
plot(pop(:,1),pop(:,2),'.')

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?