Skip to content

Commit b010705

Browse files
committed
Implements updateFreq for simplex and de
1 parent 1651dc0 commit b010705

2 files changed

Lines changed: 21 additions & 3 deletions

File tree

minimisers/DE/deopt.m

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@
311311
%----Output section----------------------------------------------------------
312312

313313
if (I_refresh > 0)
314-
if ((rem(I_iter,I_refresh) == 0) || I_iter == 1) && strcmpi(controls.display, coderEnums.displayOptions.Iter)
314+
if ((rem(I_iter,I_refresh) == 0) || I_iter == 1) && strcmpi(controls.display, coderEnums.displayOptions.Iter) && rem(I_iter, controls.updateFreq) == 0
315315
triggerEvent(coderEnums.eventTypes.Message, ...
316316
sprintf('Iteration: %g, Best: %f, fWeight: %f, F_CR: %f, I_NP: %g\n\n', I_iter,S_bestval.FVr_oa(1),fWeight,F_CR,I_NP));
317317

@@ -347,4 +347,14 @@
347347
% I_iter = I_itermax + 1;
348348
% end
349349
end %---end while ((I_iter < I_itermax) ...
350+
if ~strcmpi(controls.display, coderEnums.displayOptions.Off) && rem(I_iter, controls.updateFreq) ~= 0
351+
% This should ensure the final result is printed at the end of a run irrespective of update frequency
352+
triggerEvent(coderEnums.eventTypes.Message, ...
353+
sprintf('Iteration: %g, Best: %f, fWeight: %f, F_CR: %f, I_NP: %g\n\n', I_iter,S_bestval.FVr_oa(1),fWeight,F_CR,I_NP));
354+
end
355+
if rem(I_iter, controls.updatePlotFreq) ~= 0
356+
% This should ensure the final result is always plotted irrespective of update frequency
357+
[~,result] = fname(FVr_bestmem,problem,controls);
358+
triggerEvent(coderEnums.eventTypes.Plot, result, problem);
359+
end
350360
end

minimisers/simplex/fMinSearch.m

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@
298298
how = 'initial simplex';
299299
itercount = itercount + 1;
300300
func_evals = n+1;
301-
if prnt == 3
301+
if prnt == 3 && rem(itercount, controls.updateFreq) == 0
302302
triggerEvent(coderEnums.eventTypes.Message, ...
303303
sprintf(' %5.0f %5.0f %12.6g %s\n', itercount, func_evals, fv(1), how));
304304
% elseif prnt == 4
@@ -418,7 +418,7 @@
418418
[fv,j] = sort(fv);
419419
v = v(:,j);
420420
itercount = itercount + 1;
421-
if prnt == 3
421+
if prnt == 3 && rem(itercount, controls.updateFreq) == 0
422422
triggerEvent(coderEnums.eventTypes.Message, sprintf(' %5.0f %5.0f %12.6g %s\n', itercount, func_evals, fv(1), how));
423423
% elseif prnt == 4
424424
% fprintf('%s \n', ' ')
@@ -454,6 +454,14 @@
454454
x(:) = v(:,1);
455455
fval = fv(:,1);
456456

457+
if prnt == 3 && rem(itercount, controls.updateFreq) ~= 0
458+
% This should ensure the final result is printed at the end of a run irrespective of update frequency
459+
triggerEvent(coderEnums.eventTypes.Message, sprintf(' %5.0f %5.0f %12.6g %s\n', itercount, func_evals, fv(1), how));
460+
end
461+
if rem(itercount, controls.updatePlotFreq) ~= 0
462+
% This should ensure the final result is always plotted irrespective of update frequency
463+
triggerEvent(coderEnums.eventTypes.Plot, result, problemStruct);
464+
end
457465

458466
% OutputFcn and PlotFcns call
459467
% if haveoutputfcn || haveplotfcn

0 commit comments

Comments
 (0)