Skip to main content

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

  1. GenePool: Generates initial populations

    • FloatPool, StringPool, ArrayPool, ImagePool
  2. Individual: Represents a single solution in the population

  3. Layer: Defines genetic operators

    • Selection layers
    • Crossover layers (e.g., N-Point, Uniform)
    • Mutation layers (e.g., Gaussian, Uniform, Polynomial, Swap, Inversion, Scramble)
  4. Environment: Manages the evolution process

  5. Competition: Allows comparing multiple evolutionary strategies

Usage

  1. Define your fitness function
  2. Create a GenePool
  3. Set up Layers for selection, crossover, and mutation
  4. Initialize an Environment with your layers and individuals
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

finch-genetics-3.5.3.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

finch_genetics-3.5.3-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

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

Hashes for finch-genetics-3.5.3.tar.gz
Algorithm Hash digest
SHA256 f8507ac298ee874b06fa8c3882e8b0335ef16dd257daa82463d39faebfcd045c
MD5 72e3aa3a1d4460692fdd8265e24db914
BLAKE2b-256 d99d45250ce60269db8dd982ad9eace850c80d9e894f124df87c8aba5599c63b

See more details on using hashes here.

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

Hashes for finch_genetics-3.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c429858548b3dd7405196f71b2e5eb99ef6b11a0e152dde06183a14a2fea46bb
MD5 a90e6e88102106eb1b70bee7e437e95d
BLAKE2b-256 b95f9ae440c75ee5d3f034ea906dc797e2c57ec18ff3539536b68a838977a872

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page