Skip to content

FinchGE: A Modular Grammatical Evolution Library

PyPI Python License Docs Status Tests

FinchGE is a modern, modular, and user-friendly Python library for Grammatical Evolution (GE) - a powerful evolutionary algorithm that uses formal grammars to evolve programs, expressions, and solutions.

Features

  • Define grammars using BNF-style syntax
  • Supports standard genetic operations: selection, crossover, mutation, replacement
  • Flexible fitness evaluation for various problem domains
  • Modular and extensible design allowing conveniently plugin custom components
  • Easy-to-read in-built logging and visualization
  • Intuitive API with extensive documentation and examples
  • Benchmark suite for regression, logic and control problems

Why finchGE

  • Modular and extensible: Plug-and-play mutation, selection, fitness, and search strategies.
  • Designed for research and industry: Convenient and flexible API for quicker implementation.

Installation

PyPI

Bash
python -m pip install finchge
For further details on installation, please check. Installation

Quick Example

Using finchGE is straightforward.

Step 1. Define grammar

Python
grammar_file = "grammar.bnf"
grammar = Grammar.from_file(grammar_file)

Step 2. Define a Fitness Evaluator

Python
# Initialize Fitness Evaluator
fitness_evaluator = FitnessEvaluator(
    fitness_functions=StringMatchFitness(target="hello"),
    mapper=GenotypeMapper(grammar=grammar)
)

Step 3. Create GrammaticalEvolution instance and run

Python
ge = GrammaticalEvolution(config=FinchConfig.default(),
                           grammar=grammar,
                           fitness_evaluator=fitness_evaluator)
ge.run()

For further details and more advanced usage, please check. Getting Started, API Reference and Examples

Development Status

Note: This is version 1.0.1-beta.12 - a beta release. Expect breaking changes and bugs.

What to expect:

  • Bugs and unexpected behavior
  • Rapid API changes
  • Frequent updates
  • Limited test coverage