Giter VIP home page Giter VIP logo

pygenetic's People

Contributors

bharatrajt avatar dannyi96 avatar dependabot[bot] avatar pshreyasv100 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

pygenetic's Issues

Flask: ga as a cookie

Need to implement ga which is currently a global variable as a cookie to support multiple users accessing it at the same time

Publishing on pypi

Need to have a final review of the entire code and work on publishing it on pypi

Crossover giving same results?

One of the outputs of the crossovers for inputs ([1, 0, 7, 2, 6, 4, 3, 5], [4, 5, 3, 6, 0, 1, 2, 7]) remained ([1, 0, 7, 2, 6, 4, 3, 5], [4, 5, 3, 6, 0, 1, 2, 7]).

Scrolling effect

Need to add scrolling to the bottom of page effect as and when each generation data is received.

Pygenetic no longer using importable version of matplotlib in python 3.8

Hello, having a little trouble using your library so I will probably fork it.

Problem

Pygenetic is not using a version of matplotlib which can be installedin python 3.8
Version 2.2.2 of matplotlib is not available

To reproduce:

Make or access a python 3.8 install.
Attempt to install pygenetic, or even matplotlib 2.2.2
Get told it is not possible, as matplotlib 2.2.2 cannot be found.

I will open a pull request once I know updating to a newer version will not break anything.

Population control parameter

Need to have a population control parameter in GAEngine
If set to true - always ensure that population in each generation is same ( in case it isn't , it selects only needed elements from top of the list )
If set to false - Population can take any number of members. (i.e. - can always be constantly increasing ). User can optionally set a UPPER_LIMIT here. Useful for pySpark Evolutions

GA Statistics

Need to include various statistics of GA to visualize best/avg/max/min fitness over different generations, etc

Selection type Utils

Roulette Wheel Selection
Stochastic Universal Sampling (SUS)
Tournament Selection
Rank Selection
Random Selection

Travis CI

Need to integrate TravisCI in our project

Too small difference in adaptive mutation rates

Figure_1

We have to modify the formula a bit or use a different adaptive method to see a noticeable difference

mutation_rates [0.5859037956712174, 0.5890376972849537, 0.5903909891318503, 0.5916622332897328, 0.5910757976952127, 0.5911468264032488, 0.5913217861004001, 0.5912461103370071, 0.5916085995081001, 0.5918987263324281, 0.5922810038663388, 0.5924175437299303, 0.5919739575621374, 0.5920402257273272, 0.5917604537840548, 0.5924933255524385, 0.5923069473804097, 0.5923912569728325, 0.5926584181942748, 0.5922699332103435]

Option for different optimisations

So users can set different optimisations

  • adaptive_mutation (true/false)
  • injection of half of fame (true/false)
  • stop iterations (true/false)

More examples of GA

Need to explore more application/examples of GA and implement it using our API

PySpark Evolution Class Changes

Need to change evolution using pyspark class since it supports only limited selection - best, worst and equal to selection criteria. Need to ignore other given selection criteria.
Need to change the interfaces as well

Performance Comparisons and Final Report

Compare different GAs executed based on

  • Usage of pyspark vs normal execution
  • pySpark Execution: comparision of different configs( number of masters/workers)
  • Usage of different selection, crossover, mutation methods
  • Usage of different optimisation techniques vs without using them

And completion of final report

Basic API Testing

Chromosome Factory testing

  • Testing Abstract class nature of ChromosomeFactory
  • Testing ChromosomeRangeFactory: Correct chromosomes given valid (data_type, noOfGenes, minValue, maxValue, duplicates)
  • Testing ChromosomeRangeFactory: Throws exception for invalid (data_type, noOfGenes, minValue, maxValue, duplicates). Invalid includes cases like max being lesser than min, wrong datatypes for different inputs, inability to convert to int, etc
  • Testing ChromosomeRegexFactory: Correct chromosomes given valid (data_type,noOfGenes,pattern).
  • Testing ChromosomeRegexFactory: Throws exception for invalid (data_type,noOfGenes,pattern). Invalid includes cases like invalid regex, wrong datatypes for different inputs, inability to convert to int, etc

Utils testing

  • Testing Fitness Utils which works for correct inputs and throws Exception for invalid exceptions
  • Testing CrossoverHandlers Utils which works for correct inputs and throws Exception for invalid exceptions. Need artificial data (since randomness is involved may need to include all possible outputs )
  • Testing MutationHandlers Utils which works for correct inputs and throws Exception for invalid exceptions. Need artificial data (since randomness is involved may need to include all possible outputs )
  • Testing SelectionHandlers Utils which works for correct inputs and throws Exception for invalid exceptions

Population Testing

  • Test if initialisation is done correctly and proper members are created based on the ChromosomeFactory given as input
  • Test population members before and after selection, crossover, mutation

Statistics Testing

  • Test if valid best, worst, avg, diversity, adaptive mutation are stored after each iteration
  • Test all the methods of Statistics class
  • Test if exception is thrown on invalid inputs
  • Test if correct graph is created

Evolution Testing

  • Test if evolution works correctly during different iterations ( ie - correct selection, crossover, mutation takes place. Need artificial data )
  • Test if exceptions are thrown for incorrect

GAEngine Testing

  • Test all the basic methods (setters,etc) of GAEngine class (valid , invalid inputs)
  • Test best_fitness during iterations

User Interface

Making the user interface of main page of our web application (to get details of the GA to be executed)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.