This program based on a genetic algorithm is aimed on finding the best configuration of knights on a chess desk which follows these simple rules:
- The more knights - the better
- The more of them can capture each other - the worse
The genetic algorithm lying in the base of this project can also be applied to different tasks.
To launch the program, execute Launch.py with Python 3 interpreter or execute Launch.bat if you are using Windows or Launch.sh if you are using Linux.
TODO:
-
Make individuals differentiate
-
Add some description and documentation
-
Breeding display to see which genes came from whom
- Some kind of genealogical tree
-
Settings file (?)
-
Think of a better
__init__()
for Population -
Add loading placeholders in GUI
-
Implement saving the progress of evolution (partially done)
-
Think about passing all the parameters to the individuals (extra memory)
-
Fitness_multiplier?
-
CHECK ALL THE CODE FOR REFERENCE TYPE MISTAKES
-
Optimize the number of fitness function calls
-
Correct
choose_parent()
. Something is definitely wrong with it- Maybe force breeding of alpha individuals?
-
Some analytics:
- Count the percent of mutated nextgens on the list
-
Implement printing from pool
-
Add tooltips for settings
-
Try using canvas instead of frames for improved performance on linux
-
Try to find the dependence of number of cycles needed for population to become stable on field size
-
Think of a better way of breeding in Tests module (not average between two numbers)