ec.mestrado.problem.func
Class BaseFunction

java.lang.Object
  extended by ec.gp.GPNode
      extended by ec.gp.sasc.SASCNode
          extended by ec.mestrado.problem.func.BaseFunction
All Implemented Interfaces:
GPNodeParent, Prototype, Setup, Serializable, Cloneable
Direct Known Subclasses:
Max, Media, Min

public abstract class BaseFunction
extends SASCNode

Esta classe representa um nó funcional que será tratado no problema apresentado na tese de mestrado. Todos os demais nós funcionais deverão ser subclasses desta, que possui alguns tratamentos para recalibração de coeficientes e atualização de estatísticas como a média e variância do valor nó sobre a base de treinamento

Author:
Rafael Inhasz
See Also:
Serialized Form

Field Summary
 double asrError
           
static double CHILDREN_COMPAT_WEIGHT
           
static double FUNC_COMPAT_WEIGHT
           
 double media
           
 boolean needToRecalibrate
           
 double[] normalizedAjusted
           
 boolean useLatex
           
 double variance
           
 
Fields inherited from class ec.gp.sasc.SASCNode
beta, crossCount, lastSemanticFactor, meanShock, P_BETA, P_DIMENSIONS, P_MEAN_SHOCK, P_SIZE, P_SSSC_BASE, SIGMA_MIN, switched
 
Fields inherited from class ec.gp.GPNode
argposition, children, constraints, GPNODEPRINTTAB, MAXPRINTBYTES, NODESEARCH_ALL, NODESEARCH_CUSTOM, NODESEARCH_NONTERMINALS, NODESEARCH_TERMINALS, P_NODE, P_NODECONSTRAINTS, parent, REPLACEMENT_CHAR, SITUATION_MUTATION, SITUATION_NEWIND
 
Constructor Summary
BaseFunction()
           
 
Method Summary
 void calculateCoefficients(EvolutionState state, int thread, GPData input, ADFStack stack, GPIndividual individual, Problem problem)
          Função responsável pelo cálculo dos coeficientes do polinômio
 void checkConstraints(EvolutionState state, int tree, GPIndividual typicalIndividual, Parameter individualBase)
          Função de consistência: procura garantir que todos os nós subclasses de BaseFunction possuem dois nós.
 String coeffString()
          Monta uma string que será montada com os valores dos coeficientes
 double getSemanticCompatibilityFunction(int n, SASCNode nodeCompared)
           
 GPNode metaCloneReplacing(GPNode newSubtree, GPNode oldSubtree, double alpha, EvolutionState state, int thread)
          Uma vez selecionados os dois sub-ramos que serão trocados através do crossover, este método realiza a troca e atualiza os parâmetros dasárvore do indivíduo O método funciona da seguinte forma: ele é inicialmente chamado a partir de uma classe externa (geralmente a classe que operacionaliza o crossover), que o aplica ao nó raiz de um dos indivíduos que participarão do crossover, passando como parâmetros o sub-ramo a substituir (oldSubtree) e o sub-ramo substituto (newSubtree).
 GPNode metaCloneReplacingNoSubclone(GPNode newSubtree, GPNode oldSubtree)
          É o método geralmente utilizado nas operações de mutação O método funciona da seguinte forma: ele é inicialmente chamado a partir de uma classe externa (geralmente a classe que operacionaliza a mutação), que o aplica ao nó raiz do indivíduo que sofre a mutação, passando como parâmetros o sub-ramo a substituir (oldSubtree) e o sub-ramo substituto (newSubtree).
 void resetCoefficients()
          Inicializa os coeficientes
 void setup(EvolutionState state, Parameter base)
          Método para a configuração do objeto
 double sumCoefficients()
          Calcula a soma dos coeficientes do polinômio
 void updateStatistics(double[][] H, double[][] y)
          Função responsável pela atualização das principais estatísticas, como a média e variância calculadas a partir dos valores da base de treinamento
 
Methods inherited from class ec.gp.sasc.SASCNode
defaultBase, getCrossCount, getNodeName, getSigma, getSSACParameter, getSSSCDeltaParameter, getSSSCLambdaParameter, getSymbolicEquation, getTotalBuildingBlocks, hasBigSigma, hasChild, hasNode, hasSameNodeWithGreaterDepth, makeLatexTree, makeLatexTreePostCrossover, makeLatexTreePostCrossoverS, makeLatexTreePreCrossover, pickNodeSSAC, pickNodeSSAC, pickNodeSSSCFirst, pickNodeSSSCFirst, pickNodeSSSCSecond, pickNodeSSSCSecond, resetNode, resetSwitches, setSwitched, sumNodes, sumSSACParameters, sumSSSCDeltaParameters, sumSSSCLambdaParameter, toString, updateSigma
 
Methods inherited from class ec.gp.GPNode
atDepth, clone, cloneReplacing, cloneReplacing, cloneReplacing, cloneReplacingAtomic, cloneReplacingAtomic, cloneReplacingNoSubclone, constraints, contains, depth, errorInfo, eval, lightClone, makeCTree, nodeEquals, nodeEquivalentTo, nodeHashCode, nodeInPosition, numNodes, numNodes, parentType, printNode, printNode, printNodeForHumans, printRootedTree, printRootedTree, printRootedTreeForHumans, readNode, readNode, readRootedTree, readRootedTree, replaceWith, rootedTreeEquals, rootedTreeHashCode, rootParent, swapCompatibleWith, toStringForError, toStringForHumans, verify, writeNode, writeRootedTree
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

needToRecalibrate

public boolean needToRecalibrate

useLatex

public boolean useLatex

asrError

public double asrError

media

public double media

variance

public double variance

normalizedAjusted

public double[] normalizedAjusted

CHILDREN_COMPAT_WEIGHT

public static final double CHILDREN_COMPAT_WEIGHT
See Also:
Constant Field Values

FUNC_COMPAT_WEIGHT

public static final double FUNC_COMPAT_WEIGHT
See Also:
Constant Field Values
Constructor Detail

BaseFunction

public BaseFunction()
Method Detail

getSemanticCompatibilityFunction

public double getSemanticCompatibilityFunction(int n,
                                               SASCNode nodeCompared)
Specified by:
getSemanticCompatibilityFunction in class SASCNode

resetCoefficients

public void resetCoefficients()
Inicializa os coeficientes


checkConstraints

public void checkConstraints(EvolutionState state,
                             int tree,
                             GPIndividual typicalIndividual,
                             Parameter individualBase)
Função de consistência: procura garantir que todos os nós subclasses de BaseFunction possuem dois nós.

Overrides:
checkConstraints in class GPNode

calculateCoefficients

public void calculateCoefficients(EvolutionState state,
                                  int thread,
                                  GPData input,
                                  ADFStack stack,
                                  GPIndividual individual,
                                  Problem problem)
Função responsável pelo cálculo dos coeficientes do polinômio


updateStatistics

public void updateStatistics(double[][] H,
                             double[][] y)
Função responsável pela atualização das principais estatísticas, como a média e variância calculadas a partir dos valores da base de treinamento


metaCloneReplacing

public GPNode metaCloneReplacing(GPNode newSubtree,
                                 GPNode oldSubtree,
                                 double alpha,
                                 EvolutionState state,
                                 int thread)
Uma vez selecionados os dois sub-ramos que serão trocados através do crossover, este método realiza a troca e atualiza os parâmetros dasárvore do indivíduo O método funciona da seguinte forma: ele é inicialmente chamado a partir de uma classe externa (geralmente a classe que operacionaliza o crossover), que o aplica ao nó raiz de um dos indivíduos que participarão do crossover, passando como parâmetros o sub-ramo a substituir (oldSubtree) e o sub-ramo substituto (newSubtree). O método então começa uma procura pelo nó a substituir, começando pelo nó raiz. Não sendo este o nó a substituir, o nó é clonado (sem seus filhos) e o método é recursivamente aplicado aos primeiros filhos do nó raiz, onde o procedimento é repetido. Sempre que a pesquisa em um nó termina com uma resposta negativa à procura do nó a substituir, o nó é clonado sem seus filhos e reposicionado na árvore. No momento em que o nó é encontrado, é executado o método cloneReplacing(), que faz um clone do nó substituto (agora com todos os seus filhos) para que ele seja no passo seguinte posicionado na árvore no lugar do nó anterior. Além disso, é nesse momento que o parâmetro sigma da árvore sofre a atualização, de acordo com o método de crossover utilizado.

Overrides:
metaCloneReplacing in class SASCNode
Parameters:
newSubtree - sub-ramo que não pertence à árvore do indivíduo, e que passará a integrá-la através do crossover
oldSubtree - sub-ramo que pertence à árvore do indivíduo, e será substituído através do crossover
alpha - parâmetro alpha que será utilizado para atualizar a parameter tree do indivíduo
state - objeto que resumo o estágio atual do processo evolutivo
thread - thread de processamento, utilizado principalmente para o caso de multi-processamento, não contemplado aqui
Returns:
Retorna o nó sobre o qual foi aplicado, com a substituição (caso este nó contenha o sub-ramo a ser substituído) ou sem a substituição, exatamente como encontrava-se antes da aplicação do método

metaCloneReplacingNoSubclone

public GPNode metaCloneReplacingNoSubclone(GPNode newSubtree,
                                           GPNode oldSubtree)
É o método geralmente utilizado nas operações de mutação O método funciona da seguinte forma: ele é inicialmente chamado a partir de uma classe externa (geralmente a classe que operacionaliza a mutação), que o aplica ao nó raiz do indivíduo que sofre a mutação, passando como parâmetros o sub-ramo a substituir (oldSubtree) e o sub-ramo substituto (newSubtree). O método então começa uma procura pelo nó a substituir, começando pelo nó raiz. Não sendo este o nó a substituir, o nó é clonado (sem seus filhos) e o método é recursivamente aplicado aos primeiros filhos do nó raiz, onde o procedimento é repetido. Sempre que a pesquisa em um nó termina com uma resposta negativa à procura do nó a substituir, o nó é clonado sem seus filhos e reposicionado na árvore. No momento em que o nó é encontrado, este é posicionado na árvore no lugar do nó anterior. Além disso, é nesse momento que o parâmetro sigma da árvore sofre a atualização, de acordo com o método de crossover utilizado.

Overrides:
metaCloneReplacingNoSubclone in class SASCNode
Parameters:
newSubtree - sub-ramo que não pertence à árvore do indivíduo, e que passará a integrá-la através do crossover
oldSubtree - sub-ramo que pertence à árvore do indivíduo, e será substituído através do crossover
Returns:
Retorna o nó sobre o qual foi aplicado, com a substituição (caso este nó contenha o sub-ramo a ser substituído) ou sem a substituição, exatamente como encontrava-se antes da aplicação do método

sumCoefficients

public double sumCoefficients()
Calcula a soma dos coeficientes do polinômio


coeffString

public String coeffString()
Monta uma string que será montada com os valores dos coeficientes


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 SASCNode
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 "database.". Por exemplo, para obter o tamanho da base de treinamento, a keyword seria "database.training".