Skip to content

Latest commit

 

History

History
313 lines (219 loc) · 10.8 KB

CHANGELOG.md

File metadata and controls

313 lines (219 loc) · 10.8 KB

Changelog

All notable changes to the LeggedSnake will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Changed

  • examples/ is now in the main folder. It was in docs/ previously.

Fixed

  • Project links fixed in pyproject.toml.
  • Documentation should be directly under docs/ but the recommended method was placing it in docs/html.

[0.4.0] - 2023-06-21

Added in 0.4.0

  • View all walkers!
    • show_all_walkers in docs/examples/strider.py let you see all walkers in one simulation!
    • You can set the color of walkers during display.
  • Genetic optimization:
    • GeneticOptimization class in geneticoptimizer.py that will replace the previous functional paradigm.
    • The average score is now displayed.
  • VisualWorld has a new method called reload_visuals.
  • show_evolution.py is a new script plotting various data about the Walkers population's evolution during genetic optimization.
  • In docs/examples/strider.py we recommend to use total_distance as the fitness function.

Changed in 0.4.0

  • Genetic optimization:
    • During genetic optimization, population is now stable at max_pop (it used to fluctuate a lot).
    • Genetic optimization do no longer display all dimensions in the progress bar.
    • startnstop argument may now be the name of the file to use (a string).
    • max_genetic_distance was changed from 0.7 to 10. Results are much better now!
  • Visuals:
    • update method of VisualWorld replaced by visual_update. It clearly separates physics and display time.
    • Frame rate and physics speed are now independent parameters.
    • Visuals go to a new file worldvisualizer.py.
    • Camera parameters should now be accessed from CAMERA instead of params["camera"].
    • The camera feels more cinematic.
  • You can define a custom load when using World.add_linkage or VisualWorld.add_linkage. The default is 0.
  • pyproject.toml updated with the data of setup.cfg. This is now the recommended metadata for the project.
  • In docs/example/strider.py, simulation time was increased from 30 seconds to 40. It was just not enough.

Fixed in 0.4.0

  • Documentation of evolutionary_optimization_builtin was wrong: returned data were in order (fitness, dimensions, position), but (fitness, position, dimensions) was indicated.
  • After a genetic optimization, the example script was assigning wrong data to the demo walker.
  • kwargs_switcher from geneticoptimizer.py do no longer pop (destroy) argument from the input dictionary.

Deprecated in 0.4.0

  • setup.cfg should no longer be used, as it is replaced by pyproject.toml.

Removed in 0.4.0

  • evolutionary_optimization function is removed. Use GeneticOptimization class instead.
    • You can no longer use the argument "init_pop" to change the size of the initial population. It now always set to max_pop.
  • time_coef, calc_rate and max_sub parameters of params["simul"] replaced by a unique physics_period set to 0.02 (s).
  • leggedsnake/Population evolution.json removed. It contained data about an evolution run and is not relevant for users.

[0.3.1] - 2023-06-14

Starting from 0.3.1, we won't include "-alpha" or "-beta" in the naming scheme, as it is considered irrelevant.

Added in 0.3.1

  • requirements-dev.txt that contain dev requirements. It makes contribution easier.
  • PyCharm configuration files.

Changed in 0.3.1

  • Animations are now all stored in local variables, and no longer in an "ani" global list of animations.

Fixed in 0.3.1

  • The main example file strider.py was launching animations for each subprocess. This file is now considered an executable.
  • evolutionary_optimization_builtin was during the last evaluation of linkages.
  • data_descriptors were not save for the first line of data only in geneticoptimizer.
  • Multiple grammar corrections.
  • The video function of physicsengine.py now effectively launches the video (no call to plt.show required).
  • The video function of physicsengine.py using debug=True was crashing.

[0.3.0-beta] - 2021-07-21

Added in 0.3.0

  • Multiprocessing is here! The genetic optimization can now be run in parallel! Performances got improved by 65 % using 4 processes only.

Changed in 0.3.0

  • We now save data using JSON! Slow computer users, you can relax and stop computing when you want.
  • The sidebar in the documentation is a bit more useful.
  • Not having tqdm will cause an exception.

Fixed in 0.3.0

  • Corrected the example, the genetic optimization is now properly fixed but slower.

Removed in 0.3.0

  • Native support for PyGAD is no longer present.
  • evolutionnary_optimization (replaced by evolutionary_optimization).
  • Data saved in the old txt format are no longer readable (were they readable?)

[0.2.0-alpha] - 2021-07-14

Added in 0.2.0

  • Dependency to tqdm and matplotlib.
  • The evolutionary_optimization replaces evolutionnary_optimization.
    • The ite parameter renamed iters for consistency with pylinkage.
    • The new parameter verbose let you display a nice progress bar, more information on optimization state, or nothing.
  • The best solution can be displayed with PyGAD as well.

Changed in 0.2.0

  • Typos and cleans-up in docs/examples/strider.py.
  • evolutionnary_optimization_legacy renamed to evolutionary_optimization_builtin.

Deprecated in 0.2.0

  • evolutionnary_optimization is now deprecated. Please use evolutionary_optimization.

Removed in 0.2.0

  • Explicit dependency to PyGAD. There is no longer an annoying message when PyGAD is not installed.

[0.1.4-alpha] - 2021-07-12

Added in 0.1.4

  • It is now possible and advised to import class and functions using quick paths, for instance from leggedsnake import Walker instead of from leggedsnake.walker import Walker.
  • You do no longer have to manually import pylinkage, we silently import the useful stuff for you.
  • We now use bump2version for version maintenance.
  • This is fixed by the road_y parameter in World let you define a custom height for the base ground.

Changed in 0.1.4

  • docs/examples/strider.py has been updated to the latest version of leggedsnake 0.1.4.

Fixed in 0.1.4

  • The full swarm representation in polar graph has been repaired in docs/examples/strider.py.
  • During a dynamic simulation, linkages with long legs could appear through the road.
  • The documentation was not properly rendered because Napoleon (NumPy coding style) was not integrated.

[0.1.3-alpha] - 2021-07-10

This package was lacking real documentation, it is fixed in this version.

Added in 0.1.3

Changed in 0.1.3

  • Tests moved from leggedsnake/tests to tests/.
  • Examples moved from leggedsnake/examples/ to docs/examples/.
  • I was testing my code on leggedsnake/examples/strider.py (the old path) and that's why it was a big mess. I cleaned up that all. Sorry for the inconvenience!

Fixed in 0.1.3

  • A lot of outdated code in the leggedsnake/examples/strider.py
  • Changelog URL was broken in setup.cfg.

[0.1.2-alpha] - 2021-07-07

Added in 0.1.2

  • Security: tests with tox.ini now include Python 3.9 and Flake 8.

Changed in 0.1.2

  • The step function execution speed has been increased by 25% when return_res is True! Small performance improvement when return_res is False.
  • The size argument of step function is now known as witdh.
  • We now require pylinkage>=0.4.0.

Fixed in 0.1.2

  • Files in leggedsnake/examples/ were not included in the PyPi package.
  • The example was incompatible with pylinkage 0.4.0.
  • Test suite was unusable by tox.
  • Tests fixed.
  • Incompatible argument between PyGAD init_pop and built-in GA.

[0.1.1-alpha] - 2021-06-26

Added in 0.1.1

  • The example file examples/strider.py is now shipped with the Python package.
  • leggedsnake/geneticoptimizer.py can now automatically switch to the built-in GA algorithm if PyGAD is not installed.

Changed in 0.1.1

  • setup.cfg metadata

[0.1.0-alpha] - 2021-06-25

Added in 0.1.0

  • Code vulnerabilities automatic checks
  • Example videos in examples/images/

Changed in 0.1.0

  • Many reforms in code style in order to make the dynamic part of naming conventions consistent with Pymunk.
  • Images in the README.md!

Fixed in 0.1.0

  • You can now define linkages with an enormous number of legs. Systems with many should no longer break physics but your CPU instead :)

[0.0.3-alpha] - 2021-06-23

Added in 0.0.3

  • Started walkthrough demo in README.md
  • Automatic release to PyPi

Fixed in 0.0.3

  • Pymunk version should be at least 6.0.0 in requirement files.
  • Some URLs typos in README.md
  • Versioning tests not executing (GitHub action)

[0.0.2-alpha] - 2021-06-22

Added in 0.0.2

  • requirement.txt was absent due to .gitignore misconfiguration.

Changed in 0.0.2

  • .gitignore now ignores .txt files only in the leggedsnake folder.
  • environment.yml more flexible (versions can be superior to the selected). pymunk>5.0.0 and pylinkage added.
  • leggedsnake/utility.py not having zipfile or xml modules error encapsulation.

Fixed in 0.0.2

  • setup.cfg was not PyPi compatible. Removed mail (use GitHub!), we now explicitly say that README.md is markdown (PyPi is conservative)

[0.0.1-alpha] - 2021-06-22

Basic version, supporting Genetic Algorithm optimization, but with various problems.

Added in 0.0.1

  • CODE_OF_CONDUCT.md to help community.
  • LICENSE MIT License.
  • MANIFEST.in to include more files.
  • README.md as a very minimal version.
  • environment.yml with matplotlib, numpy, and pygad requirement.
  • examples/strider.py a complete demo with Strider linkage.
  • leggedsnake/__init__.py.
  • leggedsnake/dynamiclinkage.py.
  • leggedsnake/geneticoptimizer.py.
  • leggedsnake/physicsengine.py.
  • leggedsnake/show_evolution.py just a legacy package, no utility.
  • leggedsnake/tests/test_utility.py untested test case
  • leggedsnake/utility.py contain some useful evaluation function (step and stride) and a broken GeoGebra interface.
  • walker.py defines the Walker object.
  • pyproject.toml.
  • setup.cfg.
  • setup.py empty, for compatibility purposes only.
  • tox.ini tox with Python 3.7 and 3.8.