ec.multiobjective.spea2
Class SPEA2Evaluator

java.lang.Object
  extended by ec.Evaluator
      extended by ec.simple.SimpleEvaluator
          extended by ec.multiobjective.spea2.SPEA2Evaluator
All Implemented Interfaces:
Setup, Singleton, java.io.Serializable

public class SPEA2Evaluator
extends SimpleEvaluator

The SPEA2Evaluator is a simple, non-coevolved generational evaluator which evaluates every single member of every subpopulation individually in its own problem space. One Problem instance is cloned from p_problem for each evaluating thread. The evaluator is also responsible for calculating the SPEA2Fitness function. This function depends on the entire population and so cannot be calculated in the Problem class.

This is actually a modified version of Robert Hubley's SPEA2Evaluator, but this time following Zitzler2001 to the letter. Differences:

  • kth = sqrt(popsize) -1 instead of kth = sqrt(popsize-1); "-1" because indices start from 0.
  • density = 1/(kth distance+2) instead of some hypersphere volume formula.
  • In order to find the k'th element, this uses the order statistics algorithm (Cormen p187, O(n) expected time) instead of Hubley's O(n^2) algrithm.

    Note that the field SPEA2kthNNDistance in SPEA2MultiObjectiveFitness is supposed to be "D(i)," the DENSITY = 1/(kth distance+2). So the fields'name is confusing. In here I go with density.

    See Also:
    Serialized Form

    Field Summary
     
    Fields inherited from class ec.Evaluator
    P_IAMSLAVE, P_MASTERPROBLEM, p_problem, P_PROBLEM
     
    Constructor Summary
    SPEA2Evaluator()
               
     
    Method Summary
     void computeAuxiliaryData(EvolutionState state)
               
     void computeAuxiliaryData(EvolutionState state, Individual[] inds)
               
     void evaluatePopulation(EvolutionState state)
              A simple evaluator that doesn't do any coevolutionary evaluation.
     
    Methods inherited from class ec.simple.SimpleEvaluator
    evalPopChunk, runComplete, setup
     
    Methods inherited from class ec.Evaluator
    closeContacts, initializeContacts, reinitializeContacts
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Constructor Detail

    SPEA2Evaluator

    public SPEA2Evaluator()
    Method Detail

    evaluatePopulation

    public void evaluatePopulation(EvolutionState state)
    A simple evaluator that doesn't do any coevolutionary evaluation. Basically it applies evaluation pipelines, one per thread, to various subchunks of a new population.

    Overrides:
    evaluatePopulation in class SimpleEvaluator

    computeAuxiliaryData

    public void computeAuxiliaryData(EvolutionState state)

    computeAuxiliaryData

    public void computeAuxiliaryData(EvolutionState state,
                                     Individual[] inds)