RyleyGG 5821e709a3 New Initialization Method
This is a test implementation of a potential new initialization method. A testing file - new_initialization_method_testing.py - is included to allow for quick testing.

In summary here is are the major points:
1) Two new attributes of GA were created - gene_input and gene_input_type. gene_input holds the user's custom range(s)/domain(s) after it gets passed to the initialize() function. gene_input_type holds an array with the same length as the chromosomes that holds the input type of the user's gene_input on a gene-by-gene basis. It does this in the same exact way that index-dependent gene ranges/domains are handled. By making the gene_input_type array the same size as the chromosome, the elements can be paired very easily. The acceptable values for this are either "range" or "domain". With a range, any value between the two can be generated; with domain, only the two elements included can be selected from randomly.
2) As mentioned in change 1, the user now has to pass their range(s)/domain(s) to the initialize() function.
3) The package is capable of implicitly determining if a certain input from the user is a range or domain. Strings can only ever be a domain – if given an element that only includes integers, the program assumes range.
4) If the user wishes to use numbers only as a domain, they can specify this by directly interacting with the ga.gene_input_type (or through a setter function).
5) the initialize() function in the GA object determines the implicit range/domain assignments if the user doesn’t do so themselves.
6) The random_initialization() function is effectively the same, except there is now an if/else to determine if the user is using the built-in gene creation function or not. If they are, then pass the gene_input, gene_input_type, and current gene index as arguments to the gene function. If they are using their own function, random_initialization() functions exactly the same way as it does in the current master branch.
7) Based on all the settings mentioned above, the random_gene() function will create a value before passing it back to random_initialization().
2020-09-25 01:15:53 -04:00
2020-09-25 01:15:53 -04:00
2020-09-17 15:15:44 -04:00
2020-09-19 18:09:39 -04:00
2020-09-21 01:46:12 -04:00
2020-09-23 20:30:44 -04:00
2020-09-21 01:47:00 -04:00

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
No description provided
Readme 1.3 MiB
Languages
Python 100%