ml-q-learning
Version:
Library implementing the q-learning algorithm and several exploration algorithms.
42 lines (41 loc) • 1.73 kB
TypeScript
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;
}