UNPKG

ml-q-learning

Version:

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

42 lines (41 loc) 1.73 kB
import { IMemoryAdapter } from './memory'; import { IQLearningAgent } from './q-learning-agent.interface'; export interface ITrainingInfo { episode: number; trained: boolean; } export declare type IQTable = [string, number[]][]; export interface IAIDocument { Q: IQTable; trainingInfo: ITrainingInfo; } export interface IState { toString(): string; } export interface IStep<T> { action: T; historyIndex: number; trainingInfo: ITrainingInfo; } export { IQLearningAgent }; export declare class QLearningAgent<TAction = any> implements IQLearningAgent { actions: TAction[]; protected pickActionStrategy: (actionsStats: number[], episode: number) => Promise<number> | number; memory: IMemoryAdapter; learningRate: number; discountFactor: number; private startEpisode; replayMemory: [string, number, number][]; episode: number; trained: boolean; constructor(actions: TAction[], pickActionStrategy?: (actionsStats: number[], episode: number) => Promise<number> | number, memory?: IMemoryAdapter, learningRate?: number, discountFactor?: number); private init; play(state: IState): Promise<IStep<TAction>>; protected chooseActionAlgorithm(stateSerialized: string): Promise<number>; reward(step: IStep<TAction>, reward: number): void; protected createStateIfNotExist(stateSerialized: string): Promise<void>; protected greedyPickAction(stateSerialized: string): Promise<number>; learn(): Promise<void>; protected learningAlgorithm(action: number, reward: number, stateSerialized: string, stateSerializedPrime: string, getState: (stateSerialized: string) => Promise<number[]>): Promise<[string, number[]]>; private updateTrainingInfo; }