JavaGenes and Condor
Al Globus, Eric Langhirt, Miron Livny, Ravishankar Ramamurthy, Marvin H. Solomon, Steve Traugott · 2000
A genetic algorithm code, JavaGenes, was written in Java and used to evolve pharmaceutical drug molecules and digital circuits.JavaGenes was run under the Condor cyclescavenging batch system managing 100-170 desktop, deskside, and rack-mounted SGI workstations.Genetic algorithms mimic biological evolution by evolving solutions to problems using crossover and mutation.While most genetic algorithms evolve strings or trees, JavaGenes evolves graphs representing (currently) molecules and circuits.Java was chosen as the implementation language because the genetic algorithm requires random splitting and recombining of graphs, a complex data structure manipulation with ample opportunities for memory leaks, loose pointers, out-of-bound indices, and other hard to find bugs.Java garbage-collection memory management, lack of pointer arithmetic, and arraybounds index checking reduces the frequency of these bugs, substantially reducing development time.While a run-time performance penalty must be paid, the only unacceptable performance we encountered was using standard Java serialization to checkpoint and restart the code.This was fixed by a two-day implementation of custom checkpointing.