@ai-on-browser/data-analysis-models
Version:
Data analysis model package without any dependencies
99 lines (98 loc) • 2.75 kB
TypeScript
/**
* 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 {};