ec.gp.database
Class DatabaseProblem

java.lang.Object
  extended by ec.Problem
      extended by ec.gp.GPProblem
          extended by ec.gp.database.DatabaseProblem
All Implemented Interfaces:
Prototype, Setup, SimpleProblemForm, Serializable, Cloneable

public abstract class DatabaseProblem
extends GPProblem
implements SimpleProblemForm

Esta classe representa os problemas de otimização que são resolvidos a partir da utilização de uma base de dados. Em geral, tais bases possuem uma variável target e uma ou mais variáveis explicativas, e o objetivo do problema é chegar no valor da variável target a partir de funções aplicadas ao conjunto das variáveis explicativas. Esta classe também possui os métodos necessários para a leitura da base de treinamento e base de testes. Por esse motivo, contém os seguintes campos:

Author:
Rafael Inhasz
See Also:
Serialized Form

Field Summary
 DatabaseEnumeration enumElements
          Atributo que será utilizado para armazenar o objeto para manipulação da base histórica
 double fatorRegularizacao
          Valor do fator de regularização, que será utilizado no cálculo do fator de penalização
 HistoryDatabase historyDatabase
          Atributo que será utilizado para armazenar o objeto para carga da base histórica
 int i
          Este atributo deverá ser utilizado no método evaluate, onde cada indivíduo será avaliado de acordo com a base de treinamento.
 DatabaseProblemData input
          Objeto que será utilizado para transitar as informação da base de dados por entre os nós das árvores
static String P_HISTORY_DATA_CLASS
          Constante com o nome do parâmetro através do qual é obtido o objeto de carga da base de dados histórica
static String P_REGULARIZATION
          Constante com o nome do parâmetro através do qual é obtido o fator de regularização
static String P_TEST
          Constante com o nome do parâmetro através do qual é obtido o tamanho da base de testes
static String P_TRAINING
          Constante com o nome do parâmetro através do qual é obtido o tamanho da base de treinamento
 int testSetSize
          Tamanho (total de linhas) da base de testes
 int trainingSetSize
          Tamanho (total de linhas) da base de treinamento
 
Fields inherited from class ec.gp.GPProblem
data, P_DATA, P_GPPROBLEM, P_STACK, stack
 
Fields inherited from class ec.Problem
P_PROBLEM
 
Constructor Summary
DatabaseProblem()
           
 
Method Summary
 double ARV(EvolutionState state, Individual ind, int subpopulation, int threadnum)
          Método para o cálculo do ARV (Average-Relative Variance), que consiste em uma razão entre o erro quadrático médio da solução (calculado entre esta e a variável target) e o erro quadrático médio da própria média, calculado como se esta fosse a melhor solução para o problema.
 Object clone()
          Retorna o conjunto de dados total (inclui base de testes e base de treinamento)
 double[][] compareIndividual(EvolutionState state, Individual ind)
          Este método tem por objetivo comparar uma determinada solução (representada pelo indivíduo enviado no parâmetro ind) com o valor da variável target.
 void evaluate(EvolutionState state, Individual ind, int subpopulation, int threadnum)
          Método a avaliação do indivíduo.
 int getLagMax(GPNode node)
           
abstract  double getMDLIndividualFunction(DatabaseProblemData yAjustado)
          Método para o cálculo da função MDL (minimum-description length).
abstract  double getRegularizationFactor(GPNode node)
          Método para o cálculo do fator de penalização, que também deverá ser implementado na subclasse
abstract  double getTargetVariable()
          Método para o retorno da variável-objeto do processo.
 double[] getVariables(int lag)
          Retorna o conjunto de variáveis do banco de dados, para a linha atualmente percorrida ou para as linhas anteriores
 void prepareToEvaluate(EvolutionState state, int threadnum)
          Prepara o objeto para a leitura da base de treinamento
 void prepareToTest(EvolutionState state, int threadnum)
          Prepara o objeto para a leitura da base de testes
 void setup(EvolutionState state, Parameter base)
          Método para a configuração do objeto
 DatabaseEnumeration testElements()
          Retorna o conjunto de dados total (inclui base de testes e base de treinamento)
 DatabaseEnumeration trainingElements()
          Retorna o conjunto de dados de treinamento
 
Methods inherited from class ec.gp.GPProblem
defaultBase, describe
 
Methods inherited from class ec.Problem
canEvaluate, closeContacts, finishEvaluating, initializeContacts, reinitializeContacts
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface ec.simple.SimpleProblemForm
describe
 

Field Detail

P_TRAINING

public static final String P_TRAINING
Constante com o nome do parâmetro através do qual é obtido o tamanho da base de treinamento

See Also:
Constant Field Values

P_TEST

public static final String P_TEST
Constante com o nome do parâmetro através do qual é obtido o tamanho da base de testes

See Also:
Constant Field Values

P_HISTORY_DATA_CLASS

public static final String P_HISTORY_DATA_CLASS
Constante com o nome do parâmetro através do qual é obtido o objeto de carga da base de dados histórica

See Also:
Constant Field Values

P_REGULARIZATION

public static final String P_REGULARIZATION
Constante com o nome do parâmetro através do qual é obtido o fator de regularização

See Also:
Constant Field Values

trainingSetSize

public int trainingSetSize
Tamanho (total de linhas) da base de treinamento


testSetSize

public int testSetSize
Tamanho (total de linhas) da base de testes


fatorRegularizacao

public double fatorRegularizacao
Valor do fator de regularização, que será utilizado no cálculo do fator de penalização


input

public DatabaseProblemData input
Objeto que será utilizado para transitar as informação da base de dados por entre os nós das árvores


historyDatabase

public HistoryDatabase historyDatabase
Atributo que será utilizado para armazenar o objeto para carga da base histórica


enumElements

public DatabaseEnumeration enumElements
Atributo que será utilizado para armazenar o objeto para manipulação da base histórica


i

public int i
Este atributo deverá ser utilizado no método evaluate, onde cada indivíduo será avaliado de acordo com a base de treinamento. O ato da avaliação de um indivíduo consiste em calcular o fitness, que nada mais é que uma estatística sobre todos os valores oriundos da aplicação deste nó funcional a cada linha da base de treinamento. O atributo i representa em que linha da base de treinamento estamos, durante este processo

Constructor Detail

DatabaseProblem

public DatabaseProblem()
Method Detail

trainingElements

public DatabaseEnumeration trainingElements()
Retorna o conjunto de dados de treinamento

Returns:
o objeto DatabaseEnumeration através do qual será possível percorrer a base de treinamento

testElements

public DatabaseEnumeration testElements()
Retorna o conjunto de dados total (inclui base de testes e base de treinamento)

Returns:
o objeto DatabaseEnumeration através do qual será possível percorrer toda a base de treinamento

clone

public Object clone()
Retorna o conjunto de dados total (inclui base de testes e base de treinamento)

Specified by:
clone in interface Prototype
Overrides:
clone in class GPProblem
Returns:
o objeto DatabaseEnumeration através do qual será possível percorrer toda a base de treinamento

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 GPProblem
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".

getLagMax

public int getLagMax(GPNode node)

getMDLIndividualFunction

public abstract double getMDLIndividualFunction(DatabaseProblemData yAjustado)
Método para o cálculo da função MDL (minimum-description length).

Parameters:
yAjustado - valor da variável target
Returns:
Retorna o valor da função MDL. Como este método é abstrato, o cálculo da função será implementado nas subclasses. Essa função combinará uma função de precisão (como o erro quadrático médio, por exemplo) com um fator de penalização, que será dado pela função getRegularizationFactor
See Also:
getRegularizationFactor

getRegularizationFactor

public abstract double getRegularizationFactor(GPNode node)
Método para o cálculo do fator de penalização, que também deverá ser implementado na subclasse

Parameters:
node - este parâmetro deverá conter o nó raiz do indivíduo em avaliação
Returns:
Retorna o valor do fator de regularização

getTargetVariable

public abstract double getTargetVariable()
Método para o retorno da variável-objeto do processo. O tipo de problema que esta classe objetiva resolver consiste em reproduzir o valor da variável-objeto através das variáveis explicativas da base de treinamento

Returns:
Retorna o valor do fator de regularização

ARV

public double ARV(EvolutionState state,
                  Individual ind,
                  int subpopulation,
                  int threadnum)
Método para o cálculo do ARV (Average-Relative Variance), que consiste em uma razão entre o erro quadrático médio da solução (calculado entre esta e a variável target) e o erro quadrático médio da própria média, calculado como se esta fosse a melhor solução para o problema. Um ARV maior que 1 indica que a solução em análise contém uma previsão pior que a média da base de treinamento, enquanto que um ARV menor que 1 aponta para uma previsão melhor por parte da solução avaliada.

Returns:
Retorna o valor do fator de regularização

evaluate

public void evaluate(EvolutionState state,
                     Individual ind,
                     int subpopulation,
                     int threadnum)
Método a avaliação do indivíduo. Não contém implementação neste método, devendo ser codificado nas subclasses

Specified by:
evaluate in interface SimpleProblemForm
Parameters:
state - objeto Evolution state que resume o estado do processo
ind - Indivíduo a avaliar
subpopulation - subpopulação a qual pertence o indivíduo a ser avaliado
threadnum - número da thread de processamento. Em caso de monoprocessamento, será enviado o valor zero e o parâmetro não terá utilidade

getVariables

public double[] getVariables(int lag)
Retorna o conjunto de variáveis do banco de dados, para a linha atualmente percorrida ou para as linhas anteriores

Parameters:
lag - Número de defasagens. Para lag=0, será retornado o conjunto de variáveis para a linha atulmente percorrida. Se lag=1, será retornado o conjunto de variáveis para a linha anterior return Retorna um array de variáveis double, onde cada posição contém o valor de um dos campos da base. A primeira posição conterá o valor da variável target, a posição seguinte contém o primeiro campo, a posterior o segundo, e assim por diante.

prepareToEvaluate

public void prepareToEvaluate(EvolutionState state,
                              int threadnum)
Prepara o objeto para a leitura da base de treinamento

Overrides:
prepareToEvaluate in class Problem
Parameters:
state - objeto Evolution state que resume o estado do processo
threadnum - número da thread de processamento. Em caso de monoprocessamento, será enviado o valor zero e o parâmetro não terá utilidade

prepareToTest

public void prepareToTest(EvolutionState state,
                          int threadnum)
Prepara o objeto para a leitura da base de testes

Parameters:
state - objeto Evolution state que resume o estado do processo
threadnum - número da thread de processamento. Em caso de monoprocessamento, será enviado o valor zero e o parâmetro não terá utilidade

compareIndividual

public double[][] compareIndividual(EvolutionState state,
                                    Individual ind)
Este método tem por objetivo comparar uma determinada solução (representada pelo indivíduo enviado no parâmetro ind) com o valor da variável target. A comparação será feita levando em conta toda a base de dados (treinamento + testes)

Parameters:
state - objeto Evolution state que resume o estado do processo
ind - indivíduo que representa a solução que será comparada com a variável target
Returns:
retorna um array de duas dimensões: na primeira dimensão teremos as linhas da base de dados, e na segunda dimensão as informações, sendo que a primeira coluna (posição 0) contém o valor da variável target, e a segunda coluna contém o valor retornado pela solução comparada.