JavaGenes is a general-purpose software program that implements several different data optimization techniques. The program is intended for problems that have no gradient, comparing genetic algorithms with stochastic hill climbing and simulated annealing to generate optimal design solutions. JavaGenes can create many different data structures, and describe problems in a variety of ways.
The software is a 100% pure Java that has been used for pharmaceutical drug design, Earth observation, antenna design, air traffic control simulation, and force field parameters for molecular simulations. Each problem requires a custom fitness function, but existing JavaGenes capabilities can often implement the rest of the search functionality. It implements a number of search techniques including steady state and generational genetic algorithms, stochastic hill climbing, simulated annealing, and heuristic biased stochastic search.
JavaGenes uses several different data structures to describe solutions to a problem, including variable length arrays of floating point numbers, permutations of integers, and graphs. Each data structure comes with a set of mutation and recombination operators that can be used in any combination. The choice of search technique and search parameters is made by a Java class created for each run. This class can choose a specific technique and parameters, or it can stochastically choose the technique and parameters for each of many runs, eliminating tedious parameter tuning.
JavaGenes outputs results and a variety of intermediate data, and the best solution from many runs can be found easily and the path of the search examined to improve performance