Skip to content

Latest commit

 

History

History
238 lines (156 loc) · 8.54 KB

File metadata and controls

238 lines (156 loc) · 8.54 KB

Apr 16th, 2021

A new side experiment: a standalone sandbox for experimenting with generative systems, in the form of a basic UI for Interactive Evolution. Currently there are implementations for a few generative systems:

  • A 2D version of Karl Sims's Virtual Creatures
  • A Cell Lab-inspired system
  • An original, yet very basic system ("Segment Tree")

Replicators Sandbox

This new sub-project is located under experimental/replicators, and a WASM build can be found here (note that this build is significantly slower, and less stable, compared with the native builds)

Dec 12th, 2020

The new notebooks subdirectory contains a few examples of using Darwin's Python API as Jupyter notebooks. Thanks to Binder, interactive version of these notebooks are one click away.

Binder

Dec 9th, 2020

Darwin is now on PyPI: https://pypi.org/project/darwin-framework !

This means that if you're on Linux or Windows (sorry, no macOS packages yet), getting it is as simple as:

pip install darwin-framework

Dec 2nd, 2020

Python bindings are now supported on Windows (MSVC++) too.

Nov 29th, 2020

Experimental Python bindings!

Currently available only on Linux, check out the setup instructions and a basic intro / tutorial.

Feb 2nd, 2020

Last year I gave a talk about the Darwin Framework at a Seattle area C++ meetup. Here is slide deck I prepared for the talk, in case anyone is curious.

Dec 21st, 2019

It took a bit longer than expected, but the car version of the race track domain is here. The car controls are more restricted compared to the drone and this variation seems quite a bit challanging. Both CGP and NEAT manage to evolve reasonable car controllers (the capture below is NEAT after ~350 generations)

CarTrack demo

Dec 18th, 2019

A small detour through the land of splines and generating random race tracks. The new implementation is significantly more robust (ex. no more self intersections for complex tracks). The spline & outline offset computation is now encapsulated in math::Outline.

Spline sampling before and after implementing equidistant points (before/after):

The new math::Outline based implementation results in much cleaner tracks:

Nov 30th, 2019

drone_track is a new domain starring the drone, this time racing around a track.

Consistent with the rest of the built-in domains implemented in Darwin, the test tracks are procedurally generated, which means that the trained model can't simply "memorize" the track layout and has to generalize (procedural environment generation proves to be a great answer to overfitting)

DroneTrack demo

Nov 13th, 2019

Another drone-based domain: drone_follow. Follow another drone which moves on a random path (keeping a fixed distance). The only inputs are drone's sensors (camera plus optionally touch, compass or accelerometer sensors)

DroneFollow demo

Nov 10th, 2019

New domain: drone_vision created using the new sim::Scene & associated building blocks (sim::Camera, sim::Drone). The agent's goal is to "simply" track a bouncing ball using only the camera pixels.

DroneVision demo

Oct 5th, 2019

A new experimental directory is the place for subprojects which are not strictly required in order to build & run Darwin experiment. The first such project is a simple sandbox intended to help with prototyping 2D-physics environments.

Part of this sandbox (experimental/2d_physics), Box2D was extended with support for minimal visual attributes (ex. object color/material) and a few sensors:

  • TouchSensor: contact information
  • Accelerometer: linear and angular acceleration
  • Compass: heading information (in the object local coordinates)
  • Camera: a simple 2d raytracer providing color and depth channels

Jun 14th, 2019

New domain: ballistics. Given the (x, y) coordinates of the target, output the aim angle required to hit the target (initial velocity is fixed). The analytical solution is not exactly trivial and both CNE and NEAT struggle to solve this seemingly simple problem.

Mar 16th, 2019

A new tournament implementation: Swiss Tournament

Feb 23rd, 2019

Various additions to the CGP implementation:

  • CGP genotype exporter
  • Support for multiple selection algorithms
  • Evolvable constants
  • Stateful functions
  • A simple one-point crossover operator

Feb 1st, 2019

New population: a basic Cartesian Genetic Programming (CGP) implementation.

Jan 17th, 2019

Yet another take on inverted pendulums: this time the pole is attached to a wheel and the agent tries to keep the pole balanced by applying torque to the wheel, similar to riding an unicycle.

It also introduces an additional goal: keep the unicycle close to a random target position. This is rewarded by a fitness bonus inversely proportional to the absolute distance from the target (but only if the pole is balanced for the whole episode)

Unicycle screenshot

Jan 16th, 2019

New domain: double-cart-pole. This is a more difficult variation of the single-pole balancing problem.

Double-Cart-Pole screenshot

Jan 5th, 2019

New domain: the classic cart-pole control theory benchmark problem (also known as "pole balancing" or "inverted pendulum")

Cart-Pole screenshot

This is the first domain implementation to take advantage of third_party/box2d. Using a complex physics engine for this problem is arguably an overkill, although it does allow a wide range of interesting variations. For example the current implementation exposes the following configuration knobs:

  • world gravity
  • pole length and density
  • cart density and friction
  • discrete vs continuous force applications

For more information, see the cart_pole domain documentation.

Dec 27th, 2018

Adding experimental support for the Box2d physics engine (third_party/box2d).

Dec 21st, 2018

Updating and restructuring the documentation.

Dec 9th, 2018

Added a rudimentary support for batching experiment runs in Darwin Studio. The "experiment run dialog" allows setting the number of batch runs (default is 1) and also a max_generations limit:

Fitness Values

This has the same effect as repeatedly running the same experiment variation multiple times, and the result of each run is recorded as a separate trace pointing to the same parent variation.

The aggregated results can be visualized using the new batch_fitness.py script.

Nov 23rd, 2018

Added core::PropertySetVariant and the corresponding support in core_ui::PropertiesWidget:

PropertySetVariant editor

The intention is to allow sub-modules (for example multime tournament implementations) to define their specific configurations.

Nov 11th, 2018

Initial release