ec.gp.sasc
Class SASCCrossover

java.lang.Object
  extended by ec.BreedingSource
      extended by ec.BreedingPipeline
          extended by ec.gp.GPBreedingPipeline
              extended by ec.gp.sasc.SASCCrossover
All Implemented Interfaces:
Prototype, Setup, SteadyStateBSourceForm, RandomChoiceChooser, Serializable, Cloneable

public class SASCCrossover
extends GPBreedingPipeline

Essa classe é responsável por operacionalizar o crossover segundo o método SSSC

Author:
Rafael Inhasz
See Also:
Serialized Form

Field Summary
 double alpha
          Parâmetro alpha, que pode ser utilizado tanto para o método SSSC quanto para o método SSAC
 double beta
          Parâmetro beta, utilizado no método SSSC
 boolean crossRoot
          Indica se é permitida a seleção do nó raiz para o crossover
static int INDS_PRODUCED
           
 int maxChildren
          Número máximo de filhos que podem ser gerados por determinado indivíduo
 int maxDepth
          Altura máxima que as árvores podem atingir após o crossover
 GPNodeSelector nodeselect1
          Determina como o nó do primeiro reprodutor será selecionado
 GPNodeSelector nodeselect2
          Determina como o nó do segundo reprodutor será selecionado
static int NUM_SOURCES
           
 int numTries
          Número máximo de tentativas de seleção do nó, antes da desistência
static String P_ALPHA
           
static String P_BETA
           
static String P_CROSS_ROOT
           
static String P_CROSSOVER
           
static String P_GEN_START_META_CONTROLE
           
static String P_GEN_START_MULTIPOP
           
static String P_MAX_CHILDREN
           
static String P_MAXDEPTH
           
static String P_NUM_TRIES
           
static String P_TOSS
           
 GPIndividual[] parents
          Variável para armazenamento temporário dos indivíduos selecionados para combinação
 int startGenerationMetaControle
          Geração para início do procedimento de meta-controle
 int startGenerationMultiPop
          Geração para início do procedimento do crossover multi-populacional, ou período "global"
 boolean tossSecondParent
          Indica se o segundo filho gerado pelo crossover deve ser descartado
 int tree1
          Indica se a primeira árvore é fixa.
 int tree2
          Indica se a segunda árvore é fixa.
 
Fields inherited from class ec.gp.GPBreedingPipeline
P_NODESELECTOR, P_TREE, TREE_UNFIXED
 
Fields inherited from class ec.BreedingPipeline
DYNAMIC_SOURCES, mybase, P_NUMSOURCES, P_SOURCE, sources, V_SAME
 
Fields inherited from class ec.BreedingSource
CHECKBOUNDARY, DEFAULT_PRODUCED, NO_PROBABILITY, P_PROB, probability, UNUSED
 
Constructor Summary
SASCCrossover()
          Construtor da classe
 
Method Summary
 Object clone()
          Método para clonagem do objeto
 Parameter defaultBase()
          Retorna a base que pode ser utilizada diretamente para parametrização do node selector
 Parameter defaultSSSCBase()
           
 int numSources()
          Número de fontes para o crossover.
 int produce(int min, int max, int start, int subpopulation, Individual[] inds, EvolutionState state, int thread)
          É este o método que de fato opera o crossover, gerando um ou dois novos indivíduos
 void setup(EvolutionState state, Parameter base)
          Método para a configuração do objeto
 int typicalIndsProduced()
          Returna 2 se tossSecondParent=false, e 1 caso contrário
 boolean verifyPoints(GPInitializer initializer, GPNode inner1, GPNode inner2)
          Este método faz uma verificação prévia dos dois nós selecionados para o crossover, a fim de assegurar que não há restrições a esse cruzamento
 
Methods inherited from class ec.gp.GPBreedingPipeline
produces
 
Methods inherited from class ec.BreedingPipeline
finishProducing, individualReplaced, maxChildProduction, minChildProduction, preparePipeline, prepareToProduce, sourcesAreProperForm
 
Methods inherited from class ec.BreedingSource
getProbability, pickRandom, setProbability, setupProbabilities
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

P_NUM_TRIES

public static final String P_NUM_TRIES
See Also:
Constant Field Values

P_MAXDEPTH

public static final String P_MAXDEPTH
See Also:
Constant Field Values

P_CROSSOVER

public static final String P_CROSSOVER
See Also:
Constant Field Values

P_ALPHA

public static final String P_ALPHA
See Also:
Constant Field Values

P_BETA

public static final String P_BETA
See Also:
Constant Field Values

P_TOSS

public static final String P_TOSS
See Also:
Constant Field Values

P_CROSS_ROOT

public static final String P_CROSS_ROOT
See Also:
Constant Field Values

P_MAX_CHILDREN

public static final String P_MAX_CHILDREN
See Also:
Constant Field Values

INDS_PRODUCED

public static final int INDS_PRODUCED
See Also:
Constant Field Values

NUM_SOURCES

public static final int NUM_SOURCES
See Also:
Constant Field Values

P_GEN_START_META_CONTROLE

public static final String P_GEN_START_META_CONTROLE
See Also:
Constant Field Values

P_GEN_START_MULTIPOP

public static final String P_GEN_START_MULTIPOP
See Also:
Constant Field Values

startGenerationMetaControle

public int startGenerationMetaControle
Geração para início do procedimento de meta-controle


startGenerationMultiPop

public int startGenerationMultiPop
Geração para início do procedimento do crossover multi-populacional, ou período "global"


nodeselect1

public GPNodeSelector nodeselect1
Determina como o nó do primeiro reprodutor será selecionado


nodeselect2

public GPNodeSelector nodeselect2
Determina como o nó do segundo reprodutor será selecionado


tree1

public int tree1
Indica se a primeira árvore é fixa.


tree2

public int tree2
Indica se a segunda árvore é fixa.


numTries

public int numTries
Número máximo de tentativas de seleção do nó, antes da desistência


maxDepth

public int maxDepth
Altura máxima que as árvores podem atingir após o crossover


tossSecondParent

public boolean tossSecondParent
Indica se o segundo filho gerado pelo crossover deve ser descartado


crossRoot

public boolean crossRoot
Indica se é permitida a seleção do nó raiz para o crossover


alpha

public double alpha
Parâmetro alpha, que pode ser utilizado tanto para o método SSSC quanto para o método SSAC


beta

public double beta
Parâmetro beta, utilizado no método SSSC


maxChildren

public int maxChildren
Número máximo de filhos que podem ser gerados por determinado indivíduo


parents

public GPIndividual[] parents
Variável para armazenamento temporário dos indivíduos selecionados para combinação

Constructor Detail

SASCCrossover

public SASCCrossover()
Construtor da classe

Method Detail

defaultBase

public Parameter defaultBase()
Retorna a base que pode ser utilizada diretamente para parametrização do node selector


numSources

public int numSources()
Número de fontes para o crossover. No caso, as fontes são os objetos para seleção de indivíduos

Specified by:
numSources in class BreedingPipeline

clone

public Object clone()
Método para clonagem do objeto

Specified by:
clone in interface Prototype
Overrides:
clone in class BreedingPipeline

defaultSSSCBase

public Parameter defaultSSSCBase()

setup

public void setup(EvolutionState state,
                  Parameter base)
Método para a configuração do objeto

Specified by:
setup in interface Prototype
Specified by:
setup in interface Setup
Overrides:
setup in class BreedingPipeline
Parameters:
state - Objeto EvolutionState que guarda as informações sobre a evolução do processo
base - Base de parametrização auxiliar. Se esse parâmetro for enviado com valor "database" por exemplo, qualquer parâmetro desta classe poderá ser obtida no arquivo de parâmetros através da keyword "gp.database.". Por exemplo, para obter o tamanho da base de treinamento, a keyword seria "database.training".

typicalIndsProduced

public int typicalIndsProduced()
Returna 2 se tossSecondParent=false, e 1 caso contrário

Overrides:
typicalIndsProduced in class BreedingPipeline

verifyPoints

public final boolean verifyPoints(GPInitializer initializer,
                                  GPNode inner1,
                                  GPNode inner2)
Este método faz uma verificação prévia dos dois nós selecionados para o crossover, a fim de assegurar que não há restrições a esse cruzamento

Parameters:
initializer -
inner1 - nó selecionado no primeiro reprodutor
inner2 - nó selecionado no segundo reprodutor
Returns:

produce

public int produce(int min,
                   int max,
                   int start,
                   int subpopulation,
                   Individual[] inds,
                   EvolutionState state,
                   int thread)
É este o método que de fato opera o crossover, gerando um ou dois novos indivíduos

Specified by:
produce in class BreedingSource
Parameters:
min - número mínimo de indivíduos a gerar
max - número máximo de indivíduos a gerar
start -
subpopulation - subpopulação à qual pertencerá o primeiro indivíduo, e onde serão alocados os filhos
inds - array com os indivíduos da subpopulação que está sofrendo o crossover
state - objeto EvolutionState, que resume o estágio do processo evolutivo
parâmetro - para processamento multi-thread, não utilizado neste caso