mass-extinction 1.0.0
Mass extinction class for evolutionary algorithms.
Keywords: extinction evolutionary genetic algorithm

# **Biologically-Inspired Mass Extinction in Evolutionary Algorithms**
## _The Biologically-Inspired Extinction Operator_
###### Author: Kaelan Engholdt
###### Version: 05/26/2021

###

## **Section 1 - Introduction**
Mass extinction events have previously been shown to be a catalyst for accelerating the rate of evolution in evolutionary algorithms.  This increased rate of evolution combined with a destabilization of the dynamic equilibrium of the evolutionary algorithm can allow the algorithm to overcome local optima in the solution space; however, most implementations of mass extinction squander the full benefit of the increased evolutionary rate by relying upon random chance to generate better solutions in the post-extinction generations.

This operator is a biologically-inspired mass extinction operator specifically designed for use in evolutionary algorithms, while retaining the benefits of extinction events from the natural world.  By increasing variability and decreasing selection pressure immediately after an extinction event, the evolutionary algorithm has a higher chance of yielding more fit individuals and overcoming local optima in the post-extinction generations.  The operator works especially well on problem domains with many local optima, with many evolutionary algorithms exhibiting a higher success rate than with standard implementations of mass extinction.

This operator contains adjustable parameters for extinction events and methods of repopulation, and is designed to be integrated into an evolutionary algorithm.  Due to the problem-specific nature of evolutionary algorithms, minor parts of this package must be finished by the user.

If used and tuned correctly, extinction can be a powerful tool in evolutionary algorithms.  This simple package attempts to provide a basis upon which users can integrate extinction events into their evolutionary algorithms, maintain population diversity, improve the overall fitness of their population, and attempt to overcome sub-optimal peaks within the search space of their particular problem.

Includes support for integration with evolutionary algorithms that make use of the _Distributed Evolutionary Algorithms in Python (DEAP)_ library, which is a framework for writing evolutionary algorithms.  This package is not affiliated with DEAP, but offers support for evolutionary algorithms using that library.

> This concludes the Introduction section.

###
###

## **Section 2 - Compatibility**
The files in this package are OS independent, and can be run on either Python 2 or Python 3.

> This concludes the Compatibility section.

###
###

## **Section 3 - Requirements**
Requirements:  
 - A population-based evolutionary algorithm written in Python 2 or Python 3.  
 - The parent population must be sorted by fitness and stored in a list.  
 - Following and completing all `TODO` comments.  

> This concludes the Requirements section.

###
###

## **Section 4 - Contents**
The package consists of the following files:  
 - `mass_extinction.py` : Contains the Extinction class.  
 - `ext_params.py` : Contains all of the adjustable extinction parameters for the Extinction class.  
 - `ext_types.py` : Contains numerous extinction parameter sets for testing purposes.  
 - `README.md` : Contains all documentation related to the Extinction class.  

> This concludes the Contents section.

###
###

## **Section 5 - Design**
The files in this package have been specifically designed to be integrated and interlaced with an evolutionary algorithm.  Due to the problem-specific nature of evolutionary algorithms, some of this package must be finished by the user.

This package features the following:  
 - A multitude of completely adjustable parameters that affect how both extinction and repopulation operate.  
 - Two methods of extinction:  
    - Instant Extinction  
    - Gradual Extinction  
 - Three types of extinction that can be used separately or in conjunction with one another:  
    - Interval Extinction  
    - Probabilistic Extinction  
    - Fitness Extinction  
 - Two methods of repopulation:  
    - Instant Repopulation  
    - Gradual Repopulation  
 - Three types of repopulation that can be used separately or in conjunction with one another:  
    - Repopulation using children of elite members.  
    - Repopulation using children of surviving members of an extinction event.  
    - Repopulation using random members.  
 - Testing of up to 324 parameter sets generated from permutations of user-defined parameters.  
 - All parameters can be saved as parameter sets and later called upon to revert back to a previous version of extinction/repopulation.  

> This concludes the Design section.

###
###

Additional information can be found in the `README.md`, which is included in the package download.