package sim.app.webtutorial2; import ec.util.*; import java.io.*; import sim.app.heatbugs.*; public /*strictfp*/ class ParameterizedHeatBugs extends HeatBugs { public static final String P_SEED = "seed"; public static final String V_TIME = "time"; public static final String P_WIDTH = "width"; public static final String P_HEIGHT = "height"; public static final String P_BUG_COUNT = "bugs"; public static final String P_MIN_IDEAL_HEAT = "min-ideal-heat"; public static final String P_MAX_IDEAL_HEAT = "max-ideal-heat"; public static final String P_MIN_OUT_HEAT = "min-output-heat"; public static final String P_MAX_OUT_HEAT = "max-output-heat"; public static final String P_EVAPORATION = "evaporation-rate"; public static final String P_DIFFUSION = "diffusion-rate"; public static final String P_RAND_PROB = "random-move-probability"; ParameterDatabase paramDB; void loadParams() { if(paramDB==null) return; Parameter param; long seed; String s = paramDB.getString(param = new Parameter(P_SEED), null); if(s.equalsIgnoreCase(V_TIME)) seed = System.currentTimeMillis(); else seed = paramDB.getLong(param); random.setSeed(seed); gridWidth = paramDB.getInt(param = new Parameter(P_WIDTH), null, 1); if(gridWidth<1) throw new RuntimeException("Invalid value for "+param); gridHeight = paramDB.getInt(param = new Parameter(P_HEIGHT), null, 1); if(gridHeight<1) throw new RuntimeException("Invalid value for "+param); bugCount = paramDB.getInt(param = new Parameter(P_BUG_COUNT), null, 0); if(bugCount<0) throw new RuntimeException("Invalid value for "+param); randomMovementProbability = paramDB.getDouble(param = new Parameter(P_RAND_PROB), null, 0, 1); if(randomMovementProbability<0) throw new RuntimeException("Invalid value for "+param); evaporationRate = paramDB.getDouble(param = new Parameter(P_EVAPORATION), null, 0, 1); if(evaporationRate<0) throw new RuntimeException("Invalid value for "+param); diffusionRate = paramDB.getDouble(param = new Parameter(P_DIFFUSION), null, 0, 1); if(diffusionRate<0) throw new RuntimeException("Invalid value for "+param); minIdealTemp = paramDB.getDouble(param = new Parameter(P_MIN_IDEAL_HEAT), null, 0); if(minIdealTemp<0) throw new RuntimeException("Invalid value for "+param); maxIdealTemp = paramDB.getDouble(param = new Parameter(P_MAX_IDEAL_HEAT), null, minIdealTemp); if(maxIdealTemp