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

 
  1. Create cluster
  2. Assign cluster
  3. Assign building
  4. 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