49 lines
1.5 KiB
Matlab
49 lines
1.5 KiB
Matlab
function obj = initialize(obj, domain, objective, agents, timestep, partitoningFreq, maxIter, obstacles)
|
|
arguments (Input)
|
|
obj (1, 1) {mustBeA(obj, 'miSim')};
|
|
domain (1, 1) {mustBeGeometry};
|
|
objective (1, 1) {mustBeA(objective, 'sensingObjective')};
|
|
agents (:, 1) cell;
|
|
timestep (:, 1) double = 0.05;
|
|
partitoningFreq (:, 1) double = 0.25
|
|
maxIter (:, 1) double = 1000;
|
|
obstacles (:, 1) cell {mustBeGeometry} = cell(0, 1);
|
|
end
|
|
arguments (Output)
|
|
obj (1, 1) {mustBeA(obj, 'miSim')};
|
|
end
|
|
|
|
% Define simulation time parameters
|
|
obj.timestep = timestep;
|
|
obj.maxIter = maxIter - 1;
|
|
|
|
% Define domain
|
|
obj.domain = domain;
|
|
obj.partitioningFreq = partitoningFreq;
|
|
|
|
% Add geometries representing obstacles within the domain
|
|
obj.obstacles = obstacles;
|
|
|
|
% Define objective
|
|
obj.objective = objective;
|
|
|
|
% Define agents
|
|
obj.agents = agents;
|
|
|
|
% Compute adjacency matrix
|
|
obj = obj.updateAdjacency();
|
|
|
|
% Set up times to iterate over
|
|
obj.times = linspace(0, obj.timestep * obj.maxIter, obj.maxIter+1)';
|
|
obj.partitioningTimes = obj.times(obj.partitioningFreq:obj.partitioningFreq:size(obj.times, 1));
|
|
|
|
% Prepare performance data store (at t = 0, all have 0 performance)
|
|
obj.fPerf = figure;
|
|
obj.perf = [zeros(size(obj.agents, 1) + 1, 1), NaN(size(obj.agents, 1) + 1, size(obj.partitioningTimes, 1) - 1)];
|
|
|
|
% Create initial partitioning
|
|
obj = obj.partition();
|
|
|
|
% Set up plots showing initialized state
|
|
obj = obj.plot();
|
|
end |