JGA, the acronym for Java Genetic Algorithm, is a computational object-oriented framework for rapid development of evolutionary algorithms for solving complex optimization problems. This chapter describes the JGA framework and illustrates its use on the dynamic inventory lot-sizing problem. Using this problem as benchmark, JGA is compared against three other tools, namely, GAlib, an open C++ implementation; GADS, a commercial MatlabÒ toolbox; and PROC GA, a commercial (yet experimental) SASÒ procedure. JGA has proved to be a flexible and extensible object-oriented framework for the fast development of single (and multi-objective) genetic algorithms by providing a collection of ready-to-use modules (Java classes) that comprise the nucleus of any genetic algorithm. Furthermore, JGA has also been designed to be embedded in larger applications that solve complex business problems.
Key Terms in this Chapter
Mutation: Genetic operator that alters one or more genes in a chromosome. Mutation is used to maintain genetic diversity in the population of individuals. It is analogous to biological mutation.
Object: Building block of object-oriented programming. Every object has a state, behavior, and identity. The object’s state is defined by the instance variables, while its behavior is defined by the object’s methods. An object is capable of receiving messages, processing data, and sending messages to other objects.
Genetic Algorithm (GA): Stochastic (population-based) search technique, inspired in the natural selection process, used to find approximate solutions to complex optimization problems.
Crossover: Genetic operator that combines (mates) chromosomes (parents) to produce new ones (offspring). It is analogous to the biological reproduction.
Class: Blueprint of an object, but not the object itself. It defines attributes and methods common to all objects of a certain kind.
Gene: Basic information unit in a chromosome.
Chromosome: Data structure (genetic code) that encodes a solution (individual) to the problem that the genetic algorithm is trying to solve.
Object-Oriented Programming (OOP): Computer programming paradigm in which a computer program is written by defining objects, its behavior, and interrelations. The fundamental terms in OOP are objects, classes, and methods.
Genotype: Genetic makeup of an individual.
Abstract Class: In object-oriented technology, a type of class that defines a master structure from which concrete classes are derived. An abstract class provides a contract that users must subscribe to when implementing their own classes extending from it.
Method: Fundamental element in object-oriented programming that defines the object’s behavior.
Fitness Function: Objective function that quantifies the adaptability of an individual. Solutions with better fitness values are more likely to survive and join the next generation in a genetic algorithm. It is analogous to the fitness concept in the natural selection process.
Phenotype: Features or quantifiable measurements of an individual. In a genetic algorithm, the phenotype is the value associated with the fitness function evaluation.