______________________________ "framspy" directory _______________________________ This directory contains sources that allow one to interact with the native Framsticks library from Python, and to perform evolutionary optimization. "frams.py" is the most fundamental file. It allows to access Framsticks script objects in Python. You will find detailed descriptions in the source of this file, but since this file is only responsible for buidling the low-level bridge between Framsticks and Python, understanding and modifying it should not be necessary. "frams-test.py" uses "frams.py" and tests the connection between Python and the native Framsticks library by performing a number of simple yet diversified operations, so you should run it first to ensure everything works correctly. This file can also be treated as a set of examples and demonstrations on how to access Framsticks genotypes, the simulation, body parts, neurons, etc. Again, read the comments in the source for more information. "FramsticksLib.py" uses "frams.py" and provides a few fundamental, high-level building blocks for optimization: functions to mutate, crossover, evaluate a solution, etc. There are three independent implementations of evolutionary algorithms in this directory and they all rely on "FramsticksLib.py": 1) "FramsticksEvolution.py" - the simplest one, everything is in one file. Uses the DEAP framework ( https://deap.readthedocs.io/en/master/ ) to perform the optimization. Supports multiple criteria, the generational architecture, and numerous parameters to customize the evolutionary search. See "run-deap-examples.cmd". 2) The "evolalg_steps" module - the most complicated one, every piece of an algorithm is considered a "step" and can be customized. This results in a large number of small files (classes), but allows for the highest flexibility in building new algorithms. This module is no longer supported, but basic usage scenarios should work correctly. See "run-evolalg_steps-examples.cmd". 3) The "evolalg" module - the middle ground. Minimalistic yet it allows for easy customizations, supports the generational architecture, the island model, quality-diversity techniques and numerical optimization (completely independent from Framsticks). Invalid genotypes are not accepted, so new ones are generated until they are valid. See "run-evolalg-examples.cmd".