package iamrescue.agent.police.newstrategy;
import iamrescue.agent.ISimulationTimer;
import iamrescue.belief.IAMWorldModel;
import iamrescue.routing.util.ISpeedInfo;
import iamrescue.util.comparators.IDComparator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import rescuecore2.config.Config;
import rescuecore2.standard.entities.StandardEntity;
import rescuecore2.standard.entities.StandardEntityURN;
import rescuecore2.worldmodel.EntityID;
public class TaskAssignment {
// Police forces to indices in list
private Map<EntityID, Integer> policeToIndices;
// Targets to sets of indices
private Map<EntityID, Set<Integer>> targetToIndices;
// List of police forces
private List<EntityID> policeForces;
// List of target of each police force
private List<List<EntityID>> targets;
// Predicted target completion times
private Map<EntityID, Integer> completionTimes;
private IAMWorldModel worldModel;
private FutureClearingRoutingModule routing;
public TaskAssignment(IAMWorldModel worldModel, Config config,
ISimulationTimer timer, ISpeedInfo speedInfo) {
this.worldModel = worldModel;
// Get all police agents
Collection<StandardEntity> policeCollection = worldModel
.getEntitiesOfType(StandardEntityURN.POLICE_FORCE);
policeForces = new ArrayList<EntityID>();
for (StandardEntity police : policeCollection) {
policeForces.add(police.getID());
}
// Sort by ID
Collections.sort(policeForces, new IDComparator());
routing = new FutureClearingRoutingModule(config, timer, worldModel,
speedInfo);
}
public void calculateAssignment() {
}
}