classdef miSim % multiagent interconnection simulation % Simulation parameters properties (SetAccess = private, GetAccess = public) timestep = NaN; % delta time interval for simulation iterations partitioningFreq = NaN; % number of simulation timesteps at which the partitioning routine is re-run maxIter = NaN; % maximum number of simulation iterations domain = rectangularPrism; objective = sensingObjective; obstacles = cell(0, 1); % geometries that define obstacles within the domain agents = cell(0, 1); % agents that move within the domain adjacency = NaN; % Adjacency matrix representing communications network graph sensorPerformanceMinimum = 1e-6; % minimum sensor performance to allow assignment of a point in the domain to a partition partitioning = NaN; performance = NaN; % current cumulative sensor performance oldMeanTotalPerf = 0; fPerf; % performance plot figure end properties (Access = private) % Sim t = NaN; % current sim time perf; % sensor performance timeseries array times; partitioningTimes; % Plot objects f = firstPlotSetup(); % main plotting tiled layout figure connectionsPlot; % objects for lines connecting agents in spatial plots graphPlot; % objects for abstract network graph plot partitionPlot; % objects for partition plot performancePlot; % objects for sensor performance plot % Indicies for various plot types in the main tiled layout figure spatialPlotIndices = [6, 4, 3, 2]; objectivePlotIndices = [6, 4]; networkGraphIndex = 5; partitionGraphIndex = 1; end methods (Access = public) [obj] = initialize(obj, domain, objective, agents, timestep, partitoningFreq, maxIter, obstacles); [obj] = run(obj); [obj] = partition(obj); [obj] = updateAdjacency(obj); [obj] = plot(obj); [obj] = plotConnections(obj); [obj] = plotPartitions(obj); [obj] = plotGraph(obj); [obj] = updatePlots(obj, updatePartitions); end methods (Access = private) [v] = setupVideoWriter(obj); end end