Nils Eriksson
https://www.ida.liu.se/~TDDD10/papers/rsl-agents/rsl2013_submission_23.pdf
1
3
2
1
2
3
BUGS from previous labs
{
"Package": {
"Name" : "FirePrediction",
"Classes": {
"FireCluster":{
"Info": "A cluster of buildings on fire"
},
"FireClusters":{
"Info": "A bunch of FireCluster"
},
"FireClusterHelper":{
"Info": "Helper methods for FireCluster"
}
}
}
}
public class FireClusters {
private StandardWorldModel model;
private ArrayList<FireCluster> fireClusters = new ArrayList<FireCluster>();
private Collection<EntityID> burningBuildings;
public FireClusters(StandardWorldModel model, Collection<EntityID> burningBuildings){
this.model = model;
this.burningBuildings = burningBuildings;
}
public ArrayList<FireCluster> getFireClusters(){
return this.fireClusters;
}
public void updateFireClusters(){
Iterator<EntityID> iter = burningBuildings.iterator();
while(iter.hasNext()){
Building currentBuilding = (Building) model.getEntity(iter.next());
fireClusters.add(new FireCluster(currentBuilding,model));
}
Collections.sort(fireClusters);
System.out.println("Number of fireclusters " + fireClusters.size());
}
}
1
2
3
1
2
3
1
2
3
public class FireCluster implements Comparable<FireCluster> {
int size; // Size of the cluster
StandardWorldModel model;
List<EntityID> mostImportantBuildings; // Buildings in the cluster prioritized
private Building baseBuilding; // Cluster center building
public FireCluster(Building baseBuilding, StandardWorldModel model){
this.model = model;
this.baseBuilding = baseBuilding;
List<EntityID> buildings = FireClusterHelpers.findCloseBuildings(baseBuilding,model);
this.mostImportantBuildings = FireClusterHelpers.prioritizeBuildings(buildings,model);
this.size = mostImportantBuildings.size();
}
public int getSize(){
return this.size;
}
@Override
public int compareTo(FireCluster compareFireCluster) {
int compareSize = compareFireCluster.getSize();
return compareSize - this.size; // Descending order
}
}
1
3
2
1
2
3
1
2
3
1
2
3