Alex is a library for preference and reinforcement learning.
As of version 0.3.0, code is still very open, but that should change for 1.0. The goal is to have a very reinforcement learning centered library, that allows easy construction and use of it.
Documentation of code can be found here: documentation.
Alex is versioned following Semver 2.0.0
just run $ npm i al3x
, which will install the package into your project.
This library runs out of the box, but will give warnings. These warnings just show that no configuration was created.
It will run without, but it is highly suggested to create a custom network layout.
If you want to see how a configuration file has to look, please look at the default configuration
The API is centered around an Alex
class. Other classes might be added later
and will be outlined here, if they are part of the public API.
All methods, not explicitely stated here, are counted not part of the public API.
Public methods:
let alex = new Alex(); // Constructor, which also handles model generation,
// memory loading and other base functions
alex.remember([0,0], [0]);// A method used to save enviroment state and action
// pairs. These are important in later steps.
alex.materialize_memory();// Save the current state of memory to disk, so it can
// be loaded back later.
alex.learn(); // Use current memory to train a network.
// This method should always be run with a memory that
// contains at least one element!
alex.predict([[0,0]]); // Make a prediction of what action to take, when an
// environment state is given.
alex.act([[0,0]], func); // Same as predict, but accepts a function too, that
// is run with the produced prediction
alex.forget_all() // Empty memory. So it can be filled with new memories
For more information, please refer to the more detailed documentation.
Alex code ©️ 2018 Maxine Michalski
Alex art ©️ 2017 Ulvra
- Fork it
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request