## Documentation

- XML - Syntax and semantics of the XML files used in OPEAL
- canonical-genetic-algorithm.pl - Canonical Genetic Algorithm on a simple fitness function
- rectangle-coverage.pl - Find the dot maximally covered by (random) rectangles
- tide_bitstring.pl - Implementation of the Tide optimization using A::E
- tide_float.pl - Optimization of the tide function using A::E

## Modules

- Algorithm::Evolutionary - Perl module for performing paradigm-free evolutionary algorithms.
- Algorithm::Evolutionary::Experiment - Class for setting up an experiment with algorithms and population
- Algorithm::Evolutionary::Fitness::Any - Façade for any function to look like fitness
- Algorithm::Evolutionary::Fitness::Base - Base class for Fitness functions
- Algorithm::Evolutionary::Fitness::ECC - Error Correcting codes problem generator
- Algorithm::Evolutionary::Fitness::Knapsack - Fitness function for the knapsack problem
- Algorithm::Evolutionary::Fitness::MMDP - Massively Multimodal Deceptive Problem
- Algorithm::Evolutionary::Fitness::ONEMAX - Fitness function for the ONEMAX or count-ones problem
- Algorithm::Evolutionary::Fitness::P_Peaks - P Peaks problem generator
- Algorithm::Evolutionary::Fitness::Rastrigin - Implementation of Rastrigin's function
- Algorithm::Evolutionary::Fitness::Royal_Road - Mitchell's Royal Road function
- Algorithm::Evolutionary::Fitness::String - Base class for string-based fitness functors
- Algorithm::Evolutionary::Fitness::Trap - 'Trap' fitness function for evolutionary algorithms
- Algorithm::Evolutionary::Fitness::ZDT1 - Zitzler-Deb-Thiele #1 Multiobjective test function
- Algorithm::Evolutionary::Fitness::wP_Peaks - wP Peaks problem generator - weighted version of P_Peaks
- Algorithm::Evolutionary::Hash_Wheel - Random selector of things depending on probabilities
- Algorithm::Evolutionary::Individual::Any - Wrapper around any Perl class, turns it into a Chromosome
- Algorithm::Evolutionary::Individual::Base - Base class for chromosomes that knows how to build them, and has some helper methods.
- Algorithm::Evolutionary::Individual::BitString - Classic bitstring individual for evolutionary computation; usually called chromosome
- Algorithm::Evolutionary::Individual::Bit_Vector - Classic bitstring individual for evolutionary computation; usually called chromosome, and using a different implementation from Algorithm::Evolutionary::Individual::BitString
- Algorithm::Evolutionary::Individual::String - A character string to be evolved. Useful mainly in word games
- Algorithm::Evolutionary::Individual::Tree - A Direct Acyclic Graph, or tree, useful for Genetic Programming-Style stuff
- Algorithm::Evolutionary::Individual::Vector - Array as an individual for evolutionary computation
- Algorithm::Evolutionary::Op::Animated_GIF_Output - Creates an animated GIF, a frame per generation. Useful for binary strings.
- Algorithm::Evolutionary::Op::ArithCrossover - Arithmetic crossover operator; performs the average of the n parents crossed
- Algorithm::Evolutionary::Op::Base - Base class for Algorithm::Evolutionary operators, that is any object with the "apply" method, which does things to individuals or populations.
- Algorithm::Evolutionary::Op::Bitflip - Bit-flip mutation
- Algorithm::Evolutionary::Op::Breeder - Even more customizable single generation for an evolutionary algorithm.
- Algorithm::Evolutionary::Op::Breeder_Diverser - Like Breeder, only it tries to cross only individuals that are different
- Algorithm::Evolutionary::Op::CX
- Algorithm::Evolutionary::Op::CanonicalGA - Canonical Genetic Algorithm, with any representation
- Algorithm::Evolutionary::Op::Canonical_GA_NN - Canonical Genetic Algorithm that does not ranks population
- Algorithm::Evolutionary::Op::ChangeLengthMutation - Increases/decreases by one atom the length of the string
- Algorithm::Evolutionary::Op::Combined - Combinator of several operators of the same kind, unary or binary
- Algorithm::Evolutionary::Op::Convergence_Terminator - Checks for termination of an algorithm, returns true if a certain percentage of the population is the same
- Algorithm::Evolutionary::Op::Creator - Operator that generates groups of individuals, of the intended class
- Algorithm::Evolutionary::Op::Crossover - n-point crossover operator; puts fragments of the second operand into the first operand
- Algorithm::Evolutionary::Op::DeltaTerm - Termination condition for an algorithm; checks that the difference of the best to a target is less than a delta
- Algorithm::Evolutionary::Op::EDA_step - Single step for a Estimation of Distribution Algorithm
- Algorithm::Evolutionary::Op::Easy - evolutionary algorithm, single generation, with variable operators.
- Algorithm::Evolutionary::Op::Easy_MO - Multiobjecttive evolutionary algorithm, single generation, with variable operators
- Algorithm::Evolutionary::Op::Eval::General - General and simple population evaluator
- Algorithm::Evolutionary::Op::Eval::MO_Rank - Multiobjective evaluator based on Pareto rank
- Algorithm::Evolutionary::Op::FullAlgorithm - Skeleton class for a fully-featured evolutionary algorithm
- Algorithm::Evolutionary::Op::GaussianMutation - Changes numeric chromosome components following the gaussian distribution
- Algorithm::Evolutionary::Op::Gene_Boundary_Crossover - n-point crossover operator that restricts crossing point to gene boundaries
- Algorithm::Evolutionary::Op::GeneralGeneration - Customizable single generation for an evolutionary algorithm.
- Algorithm::Evolutionary::Op::Generation_Skeleton - Even more customizable single generation for an evolutionary algorithm.
- Algorithm::Evolutionary::Op::GenerationalTerm - Checks for termination of an algorithm.
- Algorithm::Evolutionary::Op::IncMutation - Increments/decrements by one the value of one of the components of the string, takes into account the char class
- Algorithm::Evolutionary::Op::Inverover - Michalewicz's inver-over Operator.
- Algorithm::Evolutionary::Op::LinearFreezer - Used by Simulated Annealing algorithms, reduces temperature lineally.
- Algorithm::Evolutionary::Op::Mutation - BitFlip mutation, changes several bits in a bitstring, depending on the probability
- Algorithm::Evolutionary::Op::NoChangeTerm - Checks for termination of an algorithm; terminates when several generations transcur without change
- Algorithm::Evolutionary::Op::Novelty_Mutation - Mutation guaranteeing new individual is not in the population
- Algorithm::Evolutionary::Op::Permutation - Per-mutation. Got it?
- Algorithm::Evolutionary::Op::Population_Output - Flexible population printing class
- Algorithm::Evolutionary::Op::QuadXOver - N-point crossover operator that changes operands
- Algorithm::Evolutionary::Op::Quad_Crossover_Diff - Uniform crossover, but interchanges only those atoms that are different
- Algorithm::Evolutionary::Op::Replace_Different - Incorporate individuals into the population replacing the worst ones but only if they are different.
- Algorithm::Evolutionary::Op::Replace_Worst - Incorporate individuals into the population replacing the worst ones
- Algorithm::Evolutionary::Op::RouletteWheel - Fitness-proportional selection, using a roulette wheel
- Algorithm::Evolutionary::Op::Selector - Abstract base class for population selectors
- Algorithm::Evolutionary::Op::SimulatedAnnealing - An operator that performs the simulated annealing algorithm on an individual, using an external freezing schedule
- Algorithm::Evolutionary::Op::Storing - Applies the op and keeps the result
- Algorithm::Evolutionary::Op::StringRand - randomly change chars in a string
- Algorithm::Evolutionary::Op::String_Mutation - Single character string mutation
- Algorithm::Evolutionary::Op::TournamentSelect - Tournament selector, takes individuals from one population and puts them into another
- Algorithm::Evolutionary::Op::Tournament_Selection - Tournament selector, takes individuals from one population and puts them into another
- Algorithm::Evolutionary::Op::TreeMutation - GP-like mutation operator for trees
- Algorithm::Evolutionary::Op::Uniform_Crossover - interchanges a set of atoms from one parent to the other.
- Algorithm::Evolutionary::Op::Uniform_Crossover_Diff - Uniform crossover, but interchanges only those atoms that are different
- Algorithm::Evolutionary::Op::VectorCrossover - Crossover for Algorithm::Evolutionary::Individual::Vector.
- Algorithm::Evolutionary::Run - Class for setting up an experiment with algorithms and population
- Algorithm::Evolutionary::Utils - Container module with a hodgepodge of functions
- Algorithm::Evolutionary::Wheel - Random selector of things depending on probabilities

## Examples

- examples/eda.yaml
- examples/ez-ga-gif-output.pl
- examples/ez_moga.pl [pod]
- examples/fake-parallel-ga.pl [pod]
- examples/ga.yaml
- examples/mmdp.pl [pod]
- examples/p_peaks.pl [pod]
- examples/p_peaks.yaml
- examples/run_EDA.pl [pod]
- examples/run_easy_ga.pl [pod]
- examples/runfromXML.pl [pod]
- examples/simulated-annealing.pl [pod]
- examples/wp_peaks.pl [pod]