package bsearch.representations ; import java.util.LinkedHashMap ; import org.nlogo.util.MersenneTwisterFast ; import bsearch.space.SearchSpace; //TODO: make a CrossNet chromosome sometime? ~Forrest 3/28/09 /** * NOTE: * Implementing classes should also override equals(Object) and hashCode(), * to correspond with genotypic equality for the Chromosome. * * Also all Chromosome implementations should be immutable (from an outside perspective). * */ public strictfp interface Chromosome extends Cloneable { /** * @return a mapping of variable names (of model parameters) to values. */ public abstract LinkedHashMap<String , Object> getParamSettings() ; public abstract Chromosome clone() ; /** Note, this should return a new mutated Chromosome. It SHOULD NOT modify the calling Chromosome. */ public abstract Chromosome mutate( double mutRate , MersenneTwisterFast rng ) ; public abstract Chromosome[] crossoverWith(Chromosome other, MersenneTwisterFast rng ) ; public abstract SearchSpace getSearchSpace(); }