##
Global Optimization by Differential Evolution method

_{i}) three different points (p

_{a}, p

_{b}and p

_{c}) are randomly chosen from the population. A new point (p

_{z}) is constructed from those three points by adding the weighted difference between two points [w(p

_{b}-p

_{c})] to the third point (p

_{a}). Then this new point (p

_{z}) is subjected to a crossover with the current point (p

_{i}) with a probability of crossover (c

_{r}), yielding a candidate point, say p

_{u}. This point, p

_{u}, is evaluated and if found better than p

_{i}then it replaces p

_{i}else p

_{i}remains unaltered. Thus we obtain a new vector in which all points are either better than or as good as the current points. This new vector is used for the next iteration. This process makes the differential evaluation scheme completely self-organizing. On many test functions DE performs quite well (Mishra 2006; 2007). Quite often, the Differential Evolution method obtains more accurate results (in comparable time of run) than other methods such as Genetic algorithms and Particle Swarm optimization methods. It also succeeds so often in optimizing a larger gamut of objective functions than its competitors (Mishra, 2010).

The Fortran computer program (source codes) provided here includes numerous test (benchmark) functions. The user may remove or retain them and add a specific subroutione to formulate the problem of interest. The user-written subroutine must be linked to the main program through SUBROUTINE FSELECT(KF,M,FTIT) and SUBROUTINE FUNC(X,M,F). The program may be compiled by a suitable FORTRAN compiler (e.g. Microsoft Fortran Compiler or force.lepsch.com or FORCE Fortran 77 compiler; note that FORCE Compilers are free downloadable), which, after compilation will yield DE.EXE.

A typical subroutine is given here. It is also shown how the SUBROUTINE TREFETHEN is joined to SUBROUTINE FSELECT(KF,M,FTIT) and SUBROUTINE FUNC(X,M,F). The main program calls FSELECT and FUNC subroutines (and others, too).

**References**:

- Mishra, S.K. (2006) "Global Optimization by Differential Evolution and Particle Swarm Methods: Evaluation on Some Benchmark Functions". Available at
*SSRN*http://ssrn.com/abstract=933827. - Mishra, S.K. (2007) "NLINLS: A Differential Evolution Based Nonlinear Least Squares Fortran 77 Program". Available at
*SSRN*http://ssrn.com/abstract=1015254. - Mishra, SK (2010): "Performance of Differential Evolution and Particle Swarm Methods on Some Relatively Harder Multi-modal Benchmark Functions", The IUP Journal of Computational Mathematics, III(1), 2010, pp. 7-18.

Other Fortran Computer Programs |