- Notifications
You must be signed in to change notification settings - Fork2
A Java gradient-free optimization library
License
dietmarwo/fcmaes-java
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
fcmaes started as a fast CMA-ES implementation combined with a new smart parallel retry mechanism aimed to solve hard optimization problems from the space flight planning domain. It evolved to a general library of state-of-the-art gradient free optimization algorithms applicable to all kind of real world problems covering multi-objective and constrained problems. Its algorithms are implemented both in C++ and support parallel fitness function evaluation.fcmaes-java provides the same functionality as its Python variantfcmaes.SeePerformance for detailed performance figures.It was used by the team Jena & Wuhan for the11th China Trajectory Optimization Competitionseefcmaes for CTOC11. A comparison of optimizationalgorithms for the solar orbiter mission optimization problem is shown here:Solar Orbiter.Cluster support is implemented based on theTemporal orchestration engine.SeeTemporal-readmeandTemporal-tutorial
Focused on optimization problems hard to solve utilizing modern many-core CPUs.
Parallel fitness function evaluation and different parallel retry mechanisms.
Excellent scaling with the number of available CPU-cores.
Minimized algorithm overhead - relative to the objective function evaluation time - even for high dimensions.
New multi-objective/constrained optimization algorithm MODE combining features from Differential evolution and NSGA-II, supporting parallel function evaluation. Featuresenhanced multiple constraint ranking improving its performance in handling constraints for engineering design optimization.
Selection of highly efficient single-objective algorithms to choose from.
Supports multi node / cluster execution based onTemporal
On windows there may be an issue with recursive dll dependencies preventing loading of fcmaeslib.dll.It is compiled using mingw64, so if you neither have mingw64 nor Anaconda installed you should add"/YOUR_PATH_TO/fcmaes-java/src/main/resources/natives/" to the "PATH" environment variable.
Runtime:
Compile time (binaries for Linux and Windows are included):
Eigenhttps://gitlab.com/libeigen/eigen (version >= 3.9 is required for CMA).
pcg-cpp:https://github.com/imneme/pcg-cpp - used in all C++ optimization algorithms.
LBFGSpp:https://github.com/yixuan/LBFGSpp/tree/master/include - used for dual annealing local optimization.
Ascent:https://github.com/AnyarInc/Ascent/tree/master/include - used for fast ODE integration
@misc{fcmaes-java2021, author = {Dietmar Wolz}, title = {fcmaes-java - A Java derivative-free optimization library}, note = {Java/C++ source code, with description and examples}, year = {2021}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {Available at \url{https://github.com/dietmarwo/fcmaes-java}},}
About
A Java gradient-free optimization library