The goal of Opt4J is to make the development and usage of user-defined problems and new optimization algorithms as simple as possible. For this purpose, an interface-based approach is used that enables a modular development. As a result, the code is pure Java and free of any text-based configuration files or boilerplate code. The tutorial introduces the basics and gives examples how to write custom optimization problems and algorithms.
Optimizers and Benchmarks
Opt4J already contains a large set of (multi-objective) optimization algorithms such as evolutionary algorithms (including SPEA2 and NSGA2), differential evolution, particle swarm optimization, and simulated annealing. The benchmarks that are included comprise ZDT, DTLZ, WFG, LOTZ, and the knapsack problem.
Graphical User Interfaces
Opt4J contains graphical user interfaces (GUIs) for the configuration of the optimization parameters as well as for the visualization of the optimization process. The configuration GUI allows saving and loading configurations as XML file as well as directly starting and monitoring the optimization tasks. The viewer GUI contains visualization panels for the illustration of the optimization process. The configuration and viewer GUIs are illustrated below (click picture to enlarge):
Using the GUIs for user-defined problems or optimization algorithms does not require any additional code as modules are automatically detected.