6aec9770b681fcc27a490d33146cf6272737fbc1
1) The initialization now accepts "general" inputs that should apply to each gene. For example, rather than a gene input of [1,100] being interpreted to mean gene 1 hsould be 1 and gene 2 should be 100, it will apply a range of [1,100] to each gene. 2) The initialization now accepts "general" gene_input_types. For example, if the user had a set of index-dependent number values, they could just say ga.gene_input_type = "domain" and the package will propagate that across all genes in the chromosome. The user still has the option of defining the entire array or just defining a specific element if they so choose. For later commits, the general gene_input_type will have to be checked for validity; for example, a string can never be a range. 3) Fixed an issue in the ordering of the initialization function call. 4) Added comments surrounding the signfiicant changes to the initialization. 5) Added example tests to the testing file.
EasyGA - A general solution to Genetic Algorithms
Project description
Installation:
Run the rolling to install:
pip3 install EasyGA
Getting started with EasyGA:
import EasyGA
# Setup the default genetic algorithm
ga = EasyGA.GA()
# Run the default genetic algorithm
ga.evolve()
Output:
Put the out here
Customized:
import random
import EasyGA
# Create the Genetic algorithm
ga = EasyGA.GA()
# Makes a new gene
new_gene = ga.make_gene("HelloWorld")
# Makes a chromosome to store genes in
new_chromosome = ga.make_chromosome()
# Makes a Population to store chromosomes in
new_population = ga.make_population()
ga.initialize()
print(ga.population)
for chromosome in ga.population.chromosomes:
print(chromosome.genes[0].__dict__)
Output:
<initialization.population_structure.population.population object at 0x7f993002fdf0>
{'fitness': None, 'value': 47}
{'fitness': None, 'value': 4}
{'fitness': None, 'value': 68}
{'fitness': None, 'value': 57}
How Testing works
Getting started with testing
pip3 install pytest
Navigate to your EasyGA folder and run:
pytest
Output
============================== 1 passed in 0.02s ===============================
danielwilczak@Daniels-MacBook-Pro EasyGA % pytest
============================= test session starts ==============================
platform darwin -- Python 3.8.6rc1, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /Users/danielwilczak/github/EasyGA
collected 1 item
src/gene/test_gene.py . [100%]
============================== 1 passed in 0.03s ===============================
This is only an example and we will create hundreds of tests so this list will become bigger and bigger.
Developing EasyGA:
If you know how to use Github and git ignore this section.
Getting started with development
To work together we plan on using github and the git framework. This is made easy with the Atom software.
Download Atom for whatever OS you have. https://atom.io/
Use the github tab to pull the github repository. Its self explanitory.
Use the run_testing.py file inside the src folder to run your code and test while we build the package.
Other options
Download the repository to some folder - If you never used git. Look up a youtube tutorial. It will all make sense.
git clone https://github.com/danielwilczak101/EasyGA.git
Or download as a zip file.
https://github.com/danielwilczak101/EasyGA/archive/master.zip
Use the example.py file inside the src folder to run your code and test while we build the package.
Description
Languages
Python
100%