A flexible framework for evolutionary algorithms in Python
Project description
Finch: Evolutionary Algorithm Framework
Finch is a Python framework for implementing evolutionary algorithms. It provides a modular approach to building and experimenting with various evolutionary computation techniques.
Key Features
- Modular design with customizable components
- Support for different types of genes (float arrays, strings, arrays)
- Various selection, crossover, and mutation operators
- GPU acceleration support using CuPy
- Visualization tools for monitoring evolution progress
Main Components
-
GenePool: Generates initial populations
- FloatPool, StringPool, ArrayPool, ImagePool
-
Individual: Represents a single solution in the population
-
Layer: Defines genetic operators
- Selection layers
- Crossover layers (e.g., N-Point, Uniform)
- Mutation layers (e.g., Gaussian, Uniform, Polynomial, Swap, Inversion, Scramble)
-
Environment: Manages the evolution process
-
Competition: Allows comparing multiple evolutionary strategies
Usage
- Define your fitness function
- Create a GenePool
- Set up Layers for selection, crossover, and mutation
- Initialize an Environment with your layers and individuals
- Run the evolution process
Example
import Finch.layers as layers
from Finch.selectors import *
from Finch.generic import *
def fitness_function(individual):
return sum(individual.item)
gene_pool = layers.float_arrays.FloatPool(ranges=[[-5, 5]] * 10, length=10, fitness_function=fitness_function)
mutation_selection = RandomSelection(percent_to_select=.1)
crossover_selection = RandomSelection(amount_to_select=2)
# Set up layers
layers = [
layers.universal_layers.Populate(population=500, gene_pool=gene_pool),
layers.array_layers.ParentNPoint(selection_function=crossover_selection.select, families=4, children=4),
layers.float_arrays.GaussianMutation(mutation_rate=0.1, sigma=0.5, selection_function=mutation_selection.select),
layers.universal_layers.SortByFitness(),
layers.universal_layers.CapPopulation(1000),
]
env = Environment(layers)
env.compile()
env.evolve(generations=1000)
print(env.best_ever.item)
env.plot()
Installation
pip install finch-genetics
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file finch-genetics-3.5.3.tar.gz.
File metadata
- Download URL: finch-genetics-3.5.3.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8507ac298ee874b06fa8c3882e8b0335ef16dd257daa82463d39faebfcd045c
|
|
| MD5 |
72e3aa3a1d4460692fdd8265e24db914
|
|
| BLAKE2b-256 |
d99d45250ce60269db8dd982ad9eace850c80d9e894f124df87c8aba5599c63b
|
File details
Details for the file finch_genetics-3.5.3-py3-none-any.whl.
File metadata
- Download URL: finch_genetics-3.5.3-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c429858548b3dd7405196f71b2e5eb99ef6b11a0e152dde06183a14a2fea46bb
|
|
| MD5 |
a90e6e88102106eb1b70bee7e437e95d
|
|
| BLAKE2b-256 |
b95f9ae440c75ee5d3f034ea906dc797e2c57ec18ff3539536b68a838977a872
|