/*
  Copyright 2006 by Sean Luke
  Licensed under the Academic Free License version 3.0
  See the file "LICENSE" for more information
*/


package ec.util;
import java.util.zip.*;
import ec.*;
import java.io.*;

/* 
 * Checkpoint.java
 * 
 * Created: Tue Aug 10 22:39:19 1999
 * By: Sean Luke
 */

/**
 * Checkpoints ec.EvolutionState objects out to checkpoint files, or 
 * restores the same from checkpoint files.  Checkpoint take the following
 * form:
 *
 * 

checkpointPrefix.generation.gz * *

...where checkpointPrefix is the checkpoing prefix given * in ec.EvolutionState, and generation is the current generation number * also given in ec.EvolutionState. * The ".gz" is added because the file is GZIPped to save space. * *

When writing a checkpoint file, if you have specified a checkpoint directory * in ec.EvolutionState.checkpointDirectory, then this directory will be used to * write the checkpoint files. Otherwise they will be written in your working * directory (where you ran the Java process). * * @author Sean Luke * @version 1.1 */ public class Checkpoint { /** Writes the evolution state out to a file. */ public static void setCheckpoint(EvolutionState state) { try { File file = new File("" + state.checkpointPrefix + "." + state.generation + ".gz"); if (state.checkpointDirectory != null) { file = new File(state.checkpointDirectory, "" + state.checkpointPrefix + "." + state.generation + ".gz"); } ObjectOutputStream s = new ObjectOutputStream( new GZIPOutputStream ( new BufferedOutputStream( new FileOutputStream(file)))); s.writeObject(state); s.close(); state.output.message("Wrote out checkpoint file " + state.checkpointPrefix + "." + state.generation + ".gz"); } catch (IOException e) { state.output.warning("Unable to create the checkpoint file " + state.checkpointPrefix + "." + state.generation + ".gz" + "because of an IOException:\n--EXCEPTION--\n" + e + "\n--EXCEPTION-END--\n"); } } /** Returns an EvolutionState object read from a checkpoint file whose filename is checkpoint * @exception java.lang.ClassNotFoundException thrown when the checkpoint file contains a class reference which doesn't exist in your class hierarchy. **/ public static EvolutionState restoreFromCheckpoint(String checkpoint) throws IOException, ClassNotFoundException, OptionalDataException /* must throw something if error -- NEVER return null */ { // load from the file ObjectInputStream s = new ObjectInputStream( new GZIPInputStream ( new BufferedInputStream ( new FileInputStream (checkpoint)))); EvolutionState e = (EvolutionState) s.readObject(); s.close(); // restart from the checkpoint e.resetFromCheckpoint(); return e; } }

Ads help maintain this website.