UNPKG

agentjs-core

Version:

A comprehensive agent-based modeling framework with built-in p5.js visualization

105 lines 2.95 kB
/** * Abstract Scheduler class - foundation for agent activation scheduling */ import { EventEmitter } from 'eventemitter3'; import type { Agent } from '../agents/Agent'; /** * Abstract Scheduler class controlling agent activation order * * Responsibilities: * - Determine order of agent updates each simulation step * - Manage agent registration/deregistration * - Provide scheduling statistics and monitoring * - Handle agent lifecycle events * * Educational Context: Represents different approaches to * community organization and decision-making processes, * from random consultation to structured hierarchies. */ export declare abstract class Scheduler extends EventEmitter { /** Agents managed by this scheduler */ protected agents: Set<Agent>; /** Current step number */ protected stepNumber: number; /** Performance tracking */ protected lastStepTime: number; protected totalSteps: number; /** Random seed for deterministic scheduling */ protected randomSeed: number | undefined; constructor(randomSeed?: number); /** * Add agent to scheduling */ addAgent(agent: Agent): void; /** * Remove agent from scheduling */ removeAgent(agent: Agent): boolean; /** * Get all scheduled agents */ getAgents(): ReadonlyArray<Agent>; /** * Get number of scheduled agents */ getAgentCount(): number; /** * Execute one simulation step */ step(): void; /** * Reset scheduler state */ reset(): void; /** * Get current step number */ getCurrentStep(): number; /** * Get total steps executed */ getTotalSteps(): number; /** * Get last step execution time in milliseconds */ getLastStepTime(): number; /** * Get scheduling statistics */ getStatistics(): SchedulerStatistics; /** * Abstract method: Get agent activation order * Must be implemented by concrete scheduler types */ protected abstract getActivationOrder(): ReadonlyArray<Agent>; /** * Abstract method: Get scheduler type name * Must be implemented by concrete scheduler types */ protected abstract getSchedulerType(): string; /** * Hook for subclasses when agent is added */ protected onAgentAdded(_agent: Agent): void; /** * Hook for subclasses when agent is removed */ protected onAgentRemoved(_agent: Agent): void; /** * Initialize random number generator with seed */ private initializeRandom; } /** * Scheduler statistics interface */ export interface SchedulerStatistics { readonly totalAgents: number; readonly activeAgents: number; readonly currentStep: number; readonly totalSteps: number; readonly lastStepTime: number; readonly averageStepTime: number; readonly schedulerType: string; } //# sourceMappingURL=Scheduler.d.ts.map