agentjs-core
Version:
A comprehensive agent-based modeling framework with built-in p5.js visualization
149 lines • 4.03 kB
TypeScript
import type { Agent } from '../core/agents/Agent';
import type { AgentManager } from '../core/AgentManager';
import type { NetworkManager } from '../core/network/NetworkManager';
import type { Environment } from '../core/environment/Environment';
import type { PropertyValue } from '../types/core';
/**
* Configuration for trajectory export
*/
export interface TrajectoryExportConfig {
/** Fields to include in export */
fields?: string[];
/** Filter function for agents */
filter?: (agent: Agent) => boolean;
/** Include timestamps */
includeTimestamps?: boolean;
/** Sample rate (export every N steps) */
sampleRate?: number;
/** Maximum records to export */
maxRecords?: number;
/** Include position data */
includePosition?: boolean;
/** Include velocity data */
includeVelocity?: boolean;
}
/**
* Data point for trajectory export
*/
export interface TrajectoryDataPoint {
step: number;
timestamp: number;
agentId: string;
position?: {
x: number;
y: number;
};
velocity?: {
x: number;
y: number;
};
[key: string]: PropertyValue;
}
/**
* Network export data structure
*/
export interface NetworkExportData {
nodes: Array<{
id: string;
type: string;
position?: {
x: number;
y: number;
};
properties: Record<string, PropertyValue>;
}>;
edges: Array<{
source: string;
target: string;
type: string;
strength: number;
}>;
metrics: {
nodeCount: number;
edgeCount: number;
density: number;
averageDegree: number;
};
}
/**
* Environmental metrics export data
*/
export interface EnvironmentalMetricsData {
type: string;
dimensions: {
width: number;
height: number;
};
agentCount: number;
densityMap?: number[][];
spatialMetrics: {
centerOfMass: {
x: number;
y: number;
};
dispersion: number;
clustering: number;
};
resourceDistribution?: Record<string, any>;
}
/**
* Enhanced trajectory and network exporter for AgentJS
*/
export declare class TrajectoryExporter {
private trajectoryData;
private config;
constructor(config?: TrajectoryExportConfig);
/**
* Record current simulation state for trajectory export
*/
recordTrajectoryStep(agentManager: AgentManager, step: number): void;
/**
* Export trajectories as CSV with proper formatting
*/
exportTrajectoriesCSV(): string;
/**
* Export network data with comprehensive metrics
*/
exportNetwork(networkManager: NetworkManager, agentManager: AgentManager): NetworkExportData;
/**
* Export network as GraphML format for visualization tools
*/
exportNetworkGraphML(networkManager: NetworkManager, agentManager: AgentManager): string;
/**
* Export environmental metrics with spatial analysis
*/
exportEnvironmentalMetrics(environment: Environment, agentManager: AgentManager): EnvironmentalMetricsData;
/**
* Stream export for memory-efficient large dataset handling
*/
streamTrajectoryData(batchSize?: number): Generator<TrajectoryDataPoint[]>;
/**
* Get summary statistics for the recorded data
*/
getExportSummary(): {
totalRecords: number;
uniqueAgents: number;
timeRange: {
start: number;
end: number;
};
stepRange: {
start: number;
end: number;
};
averageRecordsPerStep: number;
};
/**
* Clear recorded trajectory data
*/
clear(): void;
/**
* Format value for CSV export
*/
private formatCSVValue;
}
/**
* Factory function for creating trajectory exporters
*/
export declare function createTrajectoryExporter(config?: TrajectoryExportConfig): TrajectoryExporter;
//# sourceMappingURL=TrajectoryExporter.d.ts.map