distributed-ga-framework
A horizontal scaling framework to distribute evolutionary computation workloads
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
Repository
A horizontal scaling framework to distribute evolutionary computation workloads
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
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
* 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
- Repositories: 5
- Profile: https://github.com/ACSG-64
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
- pika ==1.3.2
- python-dotenv ==1.0.1