Individual assignment
Nils Eriksson
What I set out to do
-
Fire Prediction
-
Task Allocation
What do we want to achieve ?
- Prioritize targets
- Precool buildings before they catch fire
- Don't try to put out fires that can't be put out
Use the firemen in the best way
How do we achieve it ?
Fire Clustering

- Create cluster
- Assign cluster
- Assign building
- Extinguish
https://www.ida.liu.se/~TDDD10/papers/rsl-agents/rsl2013_submission_23.pdf
Convex hull algorithm
What have i done ?

1
3
2
1
2
3
What is left to do?
- Priorities fires close to the center
- implement convex hull
- Relationship between energy and temperature
- Energy = temperature * building’s volume
- Radiation = temperature * walls overlap * Boltzmann constant / distance
- What type of fire can a single fireman extinguish
BUGS from previous labs
- Send back info about which buildings are on fire
- Send back info about there temprature
{
"Package": {
"Name" : "FirePrediction",
"Classes": {
"FireCluster":{
"Info": "A cluster of buildings on fire"
},
"FireClusters":{
"Info": "A bunch of FireCluster"
},
"FireClusterHelper":{
"Info": "Helper methods for FireCluster"
}
}
}
}
FirePrediction Package
FireClusters

FireClusters
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());
}
}
FireCluster

1
2
3
1
2
3
1
2
3
FireCluster
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
}
}
FireClusters

1
3
2
1
2
3
1
2
3
1
2
3
Questions ?
deck
By Nils Eriksson
deck
- 771