ml-q-learning
TypeScript icon, indicating that this package has built-in type declarations

0.0.15 • Public • Published

ml-q-learning

Library implementing the q-learning algorithm and several exploration algorithms.

Install

npm install ml-q-learning

QLearningAgent

export class QLearningAgent<TAction = any> implements IQLearningAgent {
  public replayMemory: [string, number, number][] = [];
  public episode: number = 0;
  public trained = false;
 
  constructor(
    public actions: TAction[],
    private pickActionStrategy: (actionsStats: number[], episode: number) => Promise<number> = greedyPickAction,
    public memory: IMemoryAdapter = new MapInMemory(),
    public learningRate = 0.1,
    public discountFactor = 0.99,
  ) {}
 
  public async play(state: IState): Promise<IStep<TAction>> {};
 
  public reward(step: IStep<TAction>, reward: number): void {};
 
  public async learn(): Promise<void> {};
}

Memory

Pick action strategy

Example use

Maze escape

src/example/maze-escape.ts

P - Player
# - Wall
. - Nothing
X - Trap = -200
R - Treasure = 200
F - Finish = 1000
Start maze
[ [ 'P''.''.''#''.''.''.''#''R' ],
  [ '.''#''.''#''.''.''.''#''.' ],
  [ '.''#''.''#''.''#''.''#''.' ],
  [ '.''#''X''#''.''#''.''.''.' ],
  [ '.''#''#''#''F''#''.''.''.' ],
  [ '.''#''.''#''#''#''.''#''X' ],
  [ '.''.''X''.''.''.''.''#''.' ],
  [ '.''.''.''.''#''.''.''#''R' ] ]
 
...many plays...
 
-------------------------------
  numberOfPlay: 35702,
  score: 1168
  episode: 3322672
  memorySize: 968
-------------------------------
 
[ [ '.''.''.''#''.''.''.''#''.' ],
  [ '.''#''.''#''.''.''.''#''.' ],
  [ '.''#''.''#''.''#''.''#''.' ],
  [ '.''#''X''#''.''#''.''.''.' ],
  [ '.''#''#''#''P''#''.''.''.' ],
  [ '.''#''.''#''#''#''.''#''X' ],
  [ '.''.''X''.''.''.''.''#''.' ],
  [ '.''.''.''.''#''.''.''#''R' ] ]

Package Sidebar

Install

npm i ml-q-learning

Weekly Downloads

1

Version

0.0.15

License

ISC

Unpacked Size

33.4 kB

Total Files

18

Last publish

Collaborators

  • zniwus