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

from Finch import FloatPool, Environment, TournamentSelection, GaussianMutation

# Define fitness function
def fitness_function(individual):
    return -sum((x - 1)**2 for x in individual.item)  # Minimize distance from 1

# Create gene pool and initial population
gene_pool = FloatPool(ranges=[[-5, 5]] * 10, length=10, fitness_function=fitness_function)
initial_population = gene_pool.generate_individuals(100)

# Set up layers
layers = [
    TournamentSelection(percent_to_select=0.5),
    GaussianMutation(mutation_rate=0.1, sigma=0.5)
]

# Create and run environment
env = Environment(layers, initial_population)
env.evolve(generations=100)

# Plot results
env.plot()

Installation

pip install finch-evolution

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.0.tar.gz (6.9 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.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file finch-genetics-3.5.0.tar.gz.

File metadata

  • Download URL: finch-genetics-3.5.0.tar.gz
  • Upload date:
  • Size: 6.9 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.0.tar.gz
Algorithm Hash digest
SHA256 37de1b7f2f9921ac56f5c009e144200b95ee733ff5c2d6f52ae554ec676aeb08
MD5 7b360b838c1f5fc9cf803f1a98446d67
BLAKE2b-256 0071a76f4afb7b76216476004aa63a11dc11b9ecce2290d29fe876a6e0e7f297

See more details on using hashes here.

File details

Details for the file finch_genetics-3.5.0-py3-none-any.whl.

File metadata

  • Download URL: finch_genetics-3.5.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a2eda9020064db1332fba67c0b5d4464f8e5db8f56a99f71ceaf3b99dc75230
MD5 1461aafd3681cbef89bac6b5e14be583
BLAKE2b-256 26827b677ad37431e571f459a9fa1bfbb77eac8a0d1b7c9fac8d20eaac2e851e

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