The JavaOpt library contains a collection of metaheuristics for optimization.
In computer science and mathematical optimization, a metaheuristic is a higher-level procedure or heuristic designed to find, generate, or select a heuristic (partial search algorithm) that may provide a sufficiently good solution to an optimization problem, especially with incomplete or imperfect information or limited computation capacity.
Metaheuristics make few or no assumptions about the problem being optimized and can search very large spaces of candidate solutions. However, metaheuristics do not guarantee an optimal solution is ever found.
Metaheuristics do not use the gradient of the problem being optimized, which means they do not require the optimization problem to be differentiable, as is required by classic optimization methods such as gradient descent and Quasi-Newton methods.
Currently, the library contains the following routines:
The routines have been tested so far on the following multidimensional real-valued functions:
A set of specific terms/names is used in the source code. In particular:
- Agent: a basic candidate solution
- Particle: an enhanced candidate solution
- Swarm: a set of candidate solutions