distributed-ga-framework

A horizontal scaling framework to distribute evolutionary computation workloads

https://github.com/acsg-64/distributed-ga-framework

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.2%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

A horizontal scaling framework to distribute evolutionary computation workloads

Basic Info
  • Host: GitHub
  • Owner: ACSG-64
  • License: agpl-3.0
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 73.2 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 2 years ago · Last pushed almost 2 years ago
Metadata Files
Readme License Citation

README.md

Distributed GA Framework

NOTE: I originally created this framework for personal use, but I decided to make it open source. As such, the codebase is not as clean and high quality as other public projects. Additionally, this repository may not be maintained actively.

A horizontal scaling framework to distribute the evaluation of individuals.

Basic schematic

Distributed GA * Original proposal: https://gist.github.com/ACSG-64/e791917544bef41f8cfe56346b831726

Getting started

Both the coordinator and the worker have runners that set up the essential working configuration to run each application. These runners were tested using the built-in implementations of the services, but they should work fine if you use other implementations.

To add extensions without the need to edit the source code, many components emit events that your custom listeners can listen to.

Dependencies

Base dependencies for both components can be found in the requirements.txt file.

The software was tested using Python 3.12 but it should work fine with Python 3.10 and above.

Coordinator

At a minimum, you need to create your custom experiment class implementing the IExperiment interface where its method, apply_genetic_operations, will be called by the coordinator when a generation is evaluated, so it would be appropriate to apply the genetic operators in that method in order to create a new generation.

After creating the new generation, call _next, otherwise, if you want to stop the experimentation, call _stop. Feel free to check an example of this in the coordinator/experimenter/experiments/my_experiment.py file.

If you set a fitness to an individual (IndividualEntity), it will be stored in the next generation, but it won't be part of the testing sample that is passed to the testing sample listeners (those listeners added through the coordinator's add_on_testing_sample_selected_listener method) since it was already evaluated. You could take advantage of this behaviour to, for example, apply the elite strategy.

Check the `coordinator/examplemain.py` file for a simple example on how to set up the components._

Worker

At a minimum, you need to create your custom evaluator class implementing the IExperiment interface where its method, evaluate_sample, will be called by the local coordinator when a sample is ready to be evaluated.

After evaluating the sample, call _next. Feel free to check an example of this in the worker/experimenter/evaluators/my_evaluator.py file.

Check the `worker/examplemain.py` file for a simple example on how to set up the components._

Built-in implementations

  • Message bus/queues and PubSub: any AMQP 0-9-1 compatible service could be used. By using this protocol, you could add or remove any number of workers at any time.
  • Persistent storage: SQLite, both an in-memory and a persistent implementation.

Citation

If you use this software for academic purposes, please add an appropriate citation.

APA

Sarmiento Garzón, A. C. (2024). Distributed GA Framework [Computer software]. https://github.com/ACSG-64/distributed-ga-framework

BibTeX ``` @software{SarmientoGarzonDistributedGAFramework_2024, author = {Sarmiento Garzón, Andrés Camilo}, license = {AGPL-3.0}, month = jun, title = {{Distributed GA Framework}}, url = {https://github.com/ACSG-64/distributed-ga-framework}, year = {2024} }

```

Contact

  • Do you have questions? ask them in the Discussion page

Owner

  • Name: Andrés Sarmiento
  • Login: ACSG-64
  • Kind: user
  • Location: Colombia

I'm a mobile and web developer and am currently exploring other areas such as Blockchain and AI.

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Distributed GA Framework
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Andrés Camilo
    family-names: Sarmiento Garzón
    affiliation: Student at University of London
    orcid: 'https://orcid.org/0009-0004-3985-3163'
repository-code: 'https://github.com/ACSG-64/distributed-ga-framework'
abstract: >-
  A horizontal scaling framework to distribute the
  evaluation of individuals.
license: AGPL-3.0
date-released: '2024-06-15'

GitHub Events

Total
Last Year

Dependencies

requirements.txt pypi
  • pika ==1.3.2
  • python-dotenv ==1.0.1