ec.multiobjective.spea2
Class SPEA2Evaluator
java.lang.Object
ec.Evaluator
ec.simple.SimpleEvaluator
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
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
SPEA2Evaluator
public SPEA2Evaluator()
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)