Differential Evolution

Optimization using the evolutionary algorithm of Differential Evolution.
Updated 13 Nov 2019

View License

This contribution provides functions for finding an optimum parameter set using the evolutionary algorithm of Differential Evolution. Simply speaking: If you have some complicated function of which you are unable to compute a derivative, and you want to find the parameter set minimizing the output of the function, using this package is one possible way to go.
The core of the optimization is the Differential Evolution algorithm. However, this package provides much more than the code available on the Differential Evolution homepage:
Here is a list of some features:
* Optimization can run in parallel on multiple cores/computers.
* Extensive and configurable progress information during optimization.
* Intermediate results are stored for later review of optimization progress.
* Progress information can be sent by E-mail.
* Optimization toolbox is not needed.
* Quick start with demo functions.
* Intermediate results are displayed after the optimization.
* Different end conditions can be chosen (maximum time, value to reach etc.).
* Each parameter value can be constrained to an interval.
* Each parameter value can be quantized (for example for parameters of integer nature).
* Code can easily be extended to use the evolutionary algorithm of your choice.
I have spent many hours to develop this package. If you would like to let me know that you appreciate my work, you can do so by leaving a donation:
Keywords: Optimization, evolutionary algorithm, genetic algorithm, differential evolution, parallel processing, distributed computing, multiple core.

Cite As

Markus Buehren (2024). Differential Evolution (https://www.mathworks.com/matlabcentral/fileexchange/18593-differential-evolution), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2009b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Find more on Global Optimization Toolbox in Help Center and MATLAB Answers

Inspired: Ogive optimization toolbox

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

Sound feature removed due to incompatibility of function wavread with newer Matlab versions.

Deactivated pushbutton generation which causes error in late Matlab versions.

New feature: A previous optimization run can be continued. Set DEParams.saveHistory to true for saving intermediate results, then call differentialevolution.m with the name of the intermediate result file as an extra input argument.

Bugfix: File needed by setfilesemaphore.m was missing.

Performance optimization for multicore processing.

Bugfix: Results computed by slave processes were set to NaN when maxMasterEvals was not equal to Inf.

New feature: Now the objective function may return NaN, Inf or -Inf.

New feature: Now the objective function may return NaN, Inf or -Inf.

Only E-mail changed in html file.

Bugfix: Constraint function was called with empty matrix as input argument. blat.exe no longer contained in the package due to restrictions on Matlab Central.

Bugfix: Constraint function was called with empty matrix.

Paths are now built using the system-dependent file separator.

Semaphore mechanism improved.

Link in package description corrected.

File datenum2 was not needed.

Handling of parameter quantization improved.