package bsearch.evaluation; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import bsearch.nlogolink.ModelRunResult; import bsearch.representations.Chromosome; public class ResultsArchive { // for storing the model run data in private HashMap<Chromosome, List<ModelRunResult>> cacheMap; public ResultsArchive(int initialCapacity) { cacheMap = new HashMap<Chromosome, List<ModelRunResult>>(initialCapacity); } public void clear() { cacheMap.clear(); } public void add(Chromosome point, ModelRunResult result, int defaultNewListCapacity) { List<ModelRunResult> storedResults = cacheMap.get( point ); if (storedResults == null) { storedResults = new ArrayList<ModelRunResult>(defaultNewListCapacity); storedResults.add(result); cacheMap.put( point , storedResults ); } else { storedResults.add( result ); } } /** * @param point * @return the list containing cached results for the given location in the search space, * and an empty list if no results are known. */ public List<ModelRunResult> getResults( Chromosome point ) { List<ModelRunResult> rlist = cacheMap.get(point); if (rlist != null) { return rlist; } return new ArrayList<ModelRunResult>(0); } public int getResultsCount( Chromosome point ) { List<ModelRunResult> rlist = cacheMap.get(point); if (rlist != null) { return rlist.size(); } return 0; } }