popt4jlib is an open-source parallel optimization library for the Java programming language supporting both shared memory and distributed message passing models. Implements a number of meta-heuristic algorithms for Non-Linear Programming, including Genetic Algorithms, Differential Evolution, Evolutionary Algorithms, Simulated Annealing, Particle Swarm Optimization, Firefly Algorithm, Monte-Carlo Search, Local Search algorithms, Gradient-Descent-based algorithms, as well as some well-known network flow and other graph algorithms. A fast parallel implementation of the network simplex method, and some full-fledged parallel/distributed MIP solvers will be added in the next version. In general, emphasis is given in improving the efficiency of the algorithms in shared-memory models via java threads, since multi-core machines are so wide-spread today.
Features
- multi-threaded implementation of the following meta-heuristics: (1) island-model GA (2) Simulated Annealing (3) Differential Evolution (4) Evolutionary Algorithm (5) Particle-Swarm Optimization (6) Firefly Algorithm
- multi-threaded multi-start implementation of Steepest Descent with Armijo Rule for NLP
- multi-threaded multi-start implementation of BFGS method for box-constrained NLP
- multi-threaded multi-start implementation of Conjugate-Gradient method with Fletcher updates for box-constrained NLP
- multi-threaded implementation of Monte-Carlo Search
- multi-threaded implementation of Graph 1- and 2-packing problems, max-clique problems, shortest-path problem, minimum spanning tree problem and other graph problems
- very fast multi-threaded implementations of K-Means, K-Means++, Neural-Gas, and other algorithms for the minimum sum-or-square-errors clustering problem
- an alternative very fast concurrent/distributed programming utils library