% Initialization and run of differential evolution optimizer. % A simpler version with fewer explicit parameters is in run0.m % % Here for Rosenbrock's function % Change relevant entries to adapt to your personal applications % % The file ofunc.m must also be changed % to return the objective function % % VTR "Value To Reach" (stop when ofunc < VTR) VTR = 1.e-6; % D number of parameters of the objective function D = 2; % XVmin,XVmax vector of lower and bounds of initial population % the algorithm seems to work well only if [XVmin,XVmax] % covers the region where the global minimum is expected % *** note: these are no bound constraints!! *** XVmin = [-2 -2]; XVmax = [2 2]; % y problem data vector (remains fixed during optimization) y=[]; % NP number of population members NP = 15; % itermax maximum number of iterations (generations) itermax = 200; % F DE-stepsize F ex [0, 2] F = 0.8; % CR crossover probabililty constant ex [0, 1] CR = 0.8; % 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 = 10; [x,f,nf] = devec3('rosen',VTR,D,XVmin,XVmax,y,NP,itermax,F,CR,strategy,refresh)