Informal Framework Definition ================================================================================ *Additional input welcome* I concieve of the framework for a genetic algorithm package encompassing three basic concepts: agents one or more populations one or more environments Agent: An agent is the entity which exists in a certain selective environment, as a member of a population. Agents may be composed of the following attributes - genetic makeup - fitness (as determined by the environment) - age The end use should have direct influence on the structure of the genetic make-up of the agents. Populations: A population is composed of agents. A population is basically a means of organizing agents into the same gene pool for cross breeding purposes. A population may also contain further suborganization, such as familial clusters. The end-user should be able to determine the following attributes of the population: - population size - familial cluster size (?) Environment: An environment is, in a sense, the "world" definition in which one or more populations of agents exists. It is the environment which determines how to evaluate the fitness of an agent. For example, a fish is extremely fit to exist in an ocean, but the same fish will die in a gaseous environment. So, it can be said that the environment determines fitness, not the fish. Furthermore, the environment determines how the genetic makeup of an agent will be modified. The idea being that different environments can have different evolution mechanisms, even if they have the same "fitness" evaluation. Or, possibly, the fitness evaluation involves many complex components which are difficult to assess all at once, but can be bread separately in different environments, and cross bread later for the optimal solution for the combination. The end-user should be able to determine the following attributes of the environment: - fitness evaluation - maximum age of agents in population before death (or specify no death) - mutation frequency (both number of mutations to occur, and the chance of mutation success.) - crossover frequency - nudge frequency (temporary high frequency mutation rate to push out of local optima) -------------------------------------------------------------------------------- Other Entities: World The world class is an interface or facade into the rest of the package. The user input (be it from command line, properties file, or run time) is supplied to the World. A World can contain mutliple envronments, multiple populations, etc. The world object populates the original populations, manages generation advancement, etc. Evolve A module which will embed the basic evolutionary modification functions that are required to "evolve" an agent. Such as mutate, crossover, catastrophy, etc. -------------------------------------------------------------------------------- Applied to a Problem: Define problem Define agents Define fitness evaluation Define environment parameters (population size, mutation frequency, etc.) Build initial population via random sampling Evolve population Check solution/fitness