01: /*
02: * This file is part of JGAP.
03: *
04: * JGAP offers a dual license model containing the LGPL as well as the MPL.
05: *
06: * For licensing information please see the file license.txt included with JGAP
07: * or have a look at the top of class org.jgap.Chromosome which representatively
08: * includes the JGAP license policy applicable for any file delivered with JGAP.
09: */
10: package org.jgap;
11:
12: import java.io.*;
13: import org.jgap.util.*;
14:
15: /**
16: * Bulk fitness functions are used to determine how optimal a group of
17: * solutions are relative to each other. Bulk fitness functions can be
18: * useful (vs. normal fitness functions) when fitness of a particular
19: * solution cannot be easily computed in isolation, but instead is
20: * dependent upon the fitness of its fellow solutions that are also
21: * under consideration. This abstract class should be extended and the
22: * evaluateChromosomes() method implemented to evaluate each of the
23: * Chromosomes given in an array and set their fitness values prior
24: * to returning.
25: *
26: * @author Neil Rotstan
27: * @author Klaus Meffert
28: * @since 1.0
29: */
30: public abstract class BulkFitnessFunction implements Serializable,
31: ICloneable {
32: /** String containing the CVS revision. Read out via reflection!*/
33: private final static String CVS_REVISION = "$Revision: 1.9 $";
34:
35: /**
36: * Calculates and sets the fitness values on each of the given
37: * Chromosomes via their setFitnessValue() method.
38: *
39: * @param a_chromosomes list of Chromosomes for which the fitness values
40: * must be computed and set
41: *
42: * @author Neil Rotstan
43: * @author Klaus Meffert
44: * @since 2.2 (prior versions used other input type)
45: */
46: public abstract void evaluate(Population a_chromosomes);
47:
48: /**
49: * Override in your implementation if necessary.
50: *
51: * @return deep clone of the current instance
52: *
53: * @author Klaus Meffert
54: * @since 3.2
55: */
56: public Object clone() {
57: try {
58: return super .clone();
59: } catch (CloneNotSupportedException cex) {
60: throw new CloneException(cex);
61: }
62: }
63: }
|