Documentation of 'ec.coevolve.MultiPopCoevolutionaryEvaluator' Java class
MultiPopCoevolutionaryEvaluator
ec.coevolve

Class MultiPopCoevolutionaryEvaluator

  • All Implemented Interfaces:
    Setup, Singleton, java.io.Serializable
    Direct Known Subclasses:
    SpatialMultiPopCoevolutionaryEvaluator


    public class MultiPopCoevolutionaryEvaluator
    extends Evaluator
    MultiPopCoevolutionaryEvaluator.java

    MultiPopCoevolutionaryEvaluator is an Evaluator which performs competitive or cooperative multi-population coevolution. Competitive coevolution is where individuals' fitness is determined by testing them against individuals from other subpopulation. Cooperative coevolution is where individuals form teams together with members of other subpopulations, and the individuals' fitness is computed based on the performance of such teams. This evaluator assumes that the problem can only evaluate groups of individuals containing one individual from each subpopulation. Individuals are evaluated regardless of whether or not they've been evaluated in the past.

    Your Problem is responsible for updating up the fitness appropriately with values usually obtained from teaming up the individual with different partners from the other subpopulations. MultiPopCoevolutionaryEvaluator expects to use Problems which adhere to the GroupedProblemForm interface, which defines a new evaluate(...) function, plus a preprocess(...) and postprocess(...) function.

    This coevolutionary evaluator is single-threaded -- maybe we'll hack in multithreading later. It allows any number of subpopulations (implicitly, any number of individuals being evaluated together). The order of individuals in the subpopulation may be changed during the evaluation process.

    Ordinarily MultiPopCoevolutionaryEvaluator does "parallel" coevolution: all subpopulations are evaluated simultaneously, then bred simultaneously. But if you set the "sequential" parameter in the class ec.simple.SimpleBreeder, then MultiPopCoevolutionary behaves in a sequential fashion common in the "classic" version of cooperative coevolution: only one subpopulation is evaluated and bred per generation. The subpopulation index to breed is determined by taking the generation number, modulo the total number of subpopulations.

    Parameters

    breed.sequential
    boolean (default = false)
    (should we evaluate and breed a single subpopulation each generation? Note that this is a SimpleBreeder parameter. )
    base.subpop.num-current
    int >= 0
    (the number of random individuals from any given subpopulation fropm the current population to be selected as collaborators)
    base.subpop.num-elites
    int >= 0
    (the number of elite individuals from any given subpopulation from the previous population to be selected as collaborators. For generation 0, random individuals from the current population will be used. )
    base.subpop.num-prev
    int >= 0
    (the number of random individuals from any given subpopulation from the previous population to be selected as collaborators. For generation 0, random individuals from the current population will be used)
    base.subpop.X.select-prev
    instance of ec.SelectionMethod
    (the SelectionMethod used to select partners from the individuals in subpopulation X at the previous generation)
    base.subpop.X.select-current
    instance of ec.SelectionMethod
    (the SelectionMethod used to select partners from the individuals in subpopulation X at the current generation. WARNING. This SelectionMethod must not select based on fitness, since fitness hasn't been set yet. RandomSelection is a good choice. )
    base.shuffling
    boolean (default = false)
    (instead of selecting individuals from )
    See Also:
    Serialized Form
    • Constructor Detail

      • MultiPopCoevolutionaryEvaluator

        public MultiPopCoevolutionaryEvaluator()
    • Method Detail

      • setup

        public void setup(EvolutionState state,
                          Parameter base)
        Description copied from interface: Setup
        Sets up the object by reading it from the parameters stored in state, built off of the parameter base base. If an ancestor implements this method, be sure to call super.setup(state,base); before you do anything else.
        Specified by:
        setup in interface Setup
        Overrides:
        setup in class Evaluator
      • runComplete

        public boolean runComplete(EvolutionState state)
        Description copied from class: Evaluator
        Returns true if an ideal individual has been found or some other run result has shortcircuited the run so that it should end prematurely right now.
        Specified by:
        runComplete in class Evaluator
      • shouldEvaluateSubpop

        public boolean shouldEvaluateSubpop(EvolutionState state,
                                            int subpop,
                                            int threadnum)
        Returns true if the subpopulation should be evaluated. This will happen if the Breeder believes that the subpopulation should be breed afterwards.
      • evaluatePopulation

        public void evaluatePopulation(EvolutionState state)
        Description copied from class: Evaluator
        Evaluates the fitness of an entire population. You will have to determine how to handle multiple threads on your own, as this is a very domain-specific thing.
        Specified by:
        evaluatePopulation in class Evaluator

DMelt 3.0 © DataMelt by jWork.ORG

You see the box below because you did not login.