UNPKG

@ai-on-browser/data-analysis-models

Version:

Data analysis model package without any dependencies

99 lines (98 loc) 2.75 kB
/** * Base class for Q-table */ export class QTableBase { /** * @param {RLEnvironmentBase} env Environment * @param {number} [resolution] Resolution */ constructor(env: RLEnvironmentBase, resolution?: number); _env: RLEnvironmentBase; _resolution: number; _state_sizes: any; _action_sizes: any; _sizes: any[]; _tensor: Tensor<number>; _table: number[]; /** * Tensor * @type {Tensor} */ get tensor(): Tensor; /** * States * @type {(*[] | RLRealRange | RLIntRange)[]} */ get states(): (any[] | RLRealRange | RLIntRange)[]; /** * Actions * @type {(*[] | RLRealRange | RLIntRange)[]} */ get actions(): (any[] | RLRealRange | RLIntRange)[]; /** * Resolution * @type {number} */ get resolution(): number; _state_index(state: any): any; _state_value(index: any): any; _action_index(action: any): any; _action_value(index: any): any; _to_position(size: any, index: any): number[]; _to_index(size: any, position: any): any[]; _q(state: any, action: any): number[] | number[][]; /** * Returns Q-table as array. * @returns {*[]} Nested array */ toArray(): any[]; /** * Returns the best action. * @param {*[]} state Current states * @returns {*[]} Action */ best_action(state: any[]): any[]; } /** * Q-learning agent */ export default class QAgent { /** * @param {RLEnvironmentBase} env Environment * @param {number} [resolution] Resolution */ constructor(env: RLEnvironmentBase, resolution?: number); _env: RLEnvironmentBase; _table: QTable; /** * Returns a score. * @returns {Array<Array<Array<number>>>} Score values */ get_score(): Array<Array<Array<number>>>; /** * Returns a action. * @param {*[]} state Current states * @param {number} greedy_rate Greedy rate * @returns {*[]} Action */ get_action(state: any[], greedy_rate?: number): any[]; /** * Update model. * @param {*[]} action Action * @param {*[]} state Current state * @param {*[]} next_state Next state * @param {number} reward Reward */ update(action: any[], state: any[], next_state: any[], reward: number): void; } import { RLEnvironmentBase } from '../rl/base.js'; import Tensor from '../util/tensor.js'; import { RLRealRange } from '../rl/base.js'; import { RLIntRange } from '../rl/base.js'; declare class QTable extends QTableBase { constructor(env: any, resolution?: number, alpha?: number, gamma?: number); _alpha: number; _gamma: number; update(action: any, state: any, next_state: any, reward: any): void; } export {};