Skip to content

dietmarwo/fcmaes-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fcmaes-java - a Java gradient-free optimization library

logo

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 variant fcmaes. See Performance for detailed performance figures. It was used by the team Jena & Wuhan for the 11th China Trajectory Optimization Competition see fcmaes for CTOC11. A comparison of optimization algorithms for the solar orbiter mission optimization problem is shown here: Solar Orbiter. Cluster support is implemented based on the Temporal orchestration engine. See Temporal-readme and Temporal-tutorial

Features

  • 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. Features enhanced 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 on Temporal

DLL dependencies

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.

Compilation

  • mvn install

Usage

See the examples and tests .

Dependencies

Runtime:

Compile time (binaries for Linux and Windows are included):

Citing

@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}},
}