A modern Fortran simulated annealing optimization method.
A Fortran Package Manager manifest file is included, so that the library and test cases can be compiled with FPM. For example:
fpm build --profile release
fpm test --profile release
To use simulated-annealing within your fpm project, add the following to your fpm.toml file:
[dependencies]
simulated-annealing = { git="https://github.com/jacobwilliams/simulated-annealing.git" }To generate the documentation using ford, run: ford ford.md
The library contains an implementation of a simulated annealing optimization method. See the references for more details. The main class is simulated_annealing_type. It also includes the ability to submit function evaluations to parallel workers (the exact parallel implementation is up to the user to implement).
The library also exports a C interface, which can also be called from Python. A Python package is also included (see the sa_fortran class). To use the Python interface, first build and install the shared library using:
fpm install --prefix ./sa_fortran/lib --profile release
Then refer to the two python examples python_example.py and parallel_example.py for how to use it.
The latest API documentation can be found here. This was generated from the source code using FORD.
- Corana et al., "Minimizing multimodal functions of continuous variables with the "simulated annealing" algorithm", september 1987 (vol. 13, no. 3, pp. 262-280), acm transactions on mathematical software.
- Goffe, Ferrier and Rogers, "Global optimization of statistical functions with simulated annealing", journal of econometrics, vol. 60, no. 1/2, jan./feb. 1994, pp. 65-100.
- S. Kirkpatrick, C. D. Gelatt Jr., M. P. Vecchi, "Optimization by Simulated Annealing", Science 13 May 1983, Vol. 220, Issue 4598, pp. 671-680
- W. L. Goffe, SIMANN: A Global Optimization Algorithm using Simulated Annealing, Studies in Nonlinear Dynamics & Econometrics, De Gruyter, vol. 1(3), pages 1-9, October 1996.

