weka.attributeSelection
Class GeneticSearch

java.lang.Object
  extended byweka.attributeSelection.ASSearch
      extended byweka.attributeSelection.GeneticSearch
All Implemented Interfaces:
OptionHandler, java.io.Serializable, StartSetHandler

public class GeneticSearch
extends ASSearch
implements StartSetHandler, OptionHandler

Class for performing a genetic based search.

For more information see:

David E. Goldberg (1989). Genetic algorithms in search, optimization and machine learning. Addison-Wesley.

Valid options are:

-Z
Sets the size of the population. (default = 20).

-G
Sets the number of generations to perform. (default = 5).

-C
Sets the probability that crossover will occur. (default = .6).

-M
Sets the probability that a feature will be toggled on/off.

-R
Sets how frequently reports will be generated. Eg, setting the value to 5 will generate a report every 5th generation.

(default = number of generations).

-S
Sets the seed for random number generation.

Version:
$Revision: 1.14 $
Author:
Mark Hall (mhall@cs.waikato.ac.nz)
See Also:
Serialized Form

Constructor Summary
GeneticSearch()
          Constructor.
 
Method Summary
 java.lang.String crossoverProbTipText()
          Returns the tip text for this property
 double getCrossoverProb()
          get the probability of crossover
 int getMaxGenerations()
          get the number of generations
 double getMutationProb()
          get the probability of mutation
 java.lang.String[] getOptions()
          Gets the current settings of ReliefFAttributeEval.
 int getPopulationSize()
          get the size of the population
 int getReportFrequency()
          get how often repports are generated
 int getSeed()
          get the value of the random number generator's seed
 java.lang.String getStartSet()
          Returns a list of attributes (and or attribute ranges) as a String
 java.lang.String globalInfo()
          Returns a string describing this search method
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
 java.lang.String maxGenerationsTipText()
          Returns the tip text for this property
 java.lang.String mutationProbTipText()
          Returns the tip text for this property
 java.lang.String populationSizeTipText()
          Returns the tip text for this property
 java.lang.String reportFrequencyTipText()
          Returns the tip text for this property
 int[] search(ASEvaluation ASEval, Instances data)
          Searches the attribute subset space using a genetic algorithm.
 java.lang.String seedTipText()
          Returns the tip text for this property
 void setCrossoverProb(double c)
          set the probability of crossover
 void setMaxGenerations(int m)
          set the number of generations to evaluate
 void setMutationProb(double m)
          set the probability of mutation
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setPopulationSize(int p)
          set the population size
 void setReportFrequency(int f)
          set how often reports are generated
 void setSeed(int s)
          set the seed for random number generation
 void setStartSet(java.lang.String startSet)
          Sets a starting set of attributes for the search.
 java.lang.String startSetTipText()
          Returns the tip text for this property
 java.lang.String toString()
          returns a description of the search
 
Methods inherited from class weka.attributeSelection.ASSearch
forName
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

GeneticSearch

public GeneticSearch()
Constructor. Make a new GeneticSearch object

Method Detail

listOptions

public java.util.Enumeration listOptions()
Returns an enumeration describing the available options.

Specified by:
listOptions in interface OptionHandler
Returns:
an enumeration of all the available options.

setOptions

public void setOptions(java.lang.String[] options)
                throws java.lang.Exception
Parses a given list of options. Valid options are:

-Z
Sets the size of the population. (default = 20).

-G
Sets the number of generations to perform. (default = 5).

-C
Sets the probability that crossover will occur. (default = .6).

-M
Sets the probability that a feature will be toggled on/off.

-R
Sets how frequently reports will be generated. Eg, setting the value to 5 will generate a report every 5th generation.

(default = number of generations).

-S
Sets the seed for random number generation.

Specified by:
setOptions in interface OptionHandler
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an option is not supported

getOptions

public java.lang.String[] getOptions()
Gets the current settings of ReliefFAttributeEval.

Specified by:
getOptions in interface OptionHandler
Returns:
an array of strings suitable for passing to setOptions()

startSetTipText

public java.lang.String startSetTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setStartSet

public void setStartSet(java.lang.String startSet)
                 throws java.lang.Exception
Sets a starting set of attributes for the search. It is the search method's responsibility to report this start set (if any) in its toString() method.

Specified by:
setStartSet in interface StartSetHandler
Parameters:
startSet - a string containing a list of attributes (and or ranges), eg. 1,2,6,10-15.
Throws:
java.lang.Exception - if start set can't be set.

getStartSet

public java.lang.String getStartSet()
Returns a list of attributes (and or attribute ranges) as a String

Specified by:
getStartSet in interface StartSetHandler
Returns:
a list of attributes (and or attribute ranges)

seedTipText

public java.lang.String seedTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setSeed

public void setSeed(int s)
set the seed for random number generation

Parameters:
s - seed value

getSeed

public int getSeed()
get the value of the random number generator's seed

Returns:
the seed for random number generation

reportFrequencyTipText

public java.lang.String reportFrequencyTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setReportFrequency

public void setReportFrequency(int f)
set how often reports are generated

Parameters:
f - generate reports every f generations

getReportFrequency

public int getReportFrequency()
get how often repports are generated

Returns:
how often reports are generated

mutationProbTipText

public java.lang.String mutationProbTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setMutationProb

public void setMutationProb(double m)
set the probability of mutation

Parameters:
m - the probability for mutation occuring

getMutationProb

public double getMutationProb()
get the probability of mutation

Returns:
the probability of mutation occuring

crossoverProbTipText

public java.lang.String crossoverProbTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setCrossoverProb

public void setCrossoverProb(double c)
set the probability of crossover

Parameters:
c - the probability that two population members will exchange genetic material

getCrossoverProb

public double getCrossoverProb()
get the probability of crossover

Returns:
the probability of crossover

maxGenerationsTipText

public java.lang.String maxGenerationsTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setMaxGenerations

public void setMaxGenerations(int m)
set the number of generations to evaluate

Parameters:
m - the number of generations

getMaxGenerations

public int getMaxGenerations()
get the number of generations

Returns:
the maximum number of generations

populationSizeTipText

public java.lang.String populationSizeTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setPopulationSize

public void setPopulationSize(int p)
set the population size

Parameters:
p - the size of the population

getPopulationSize

public int getPopulationSize()
get the size of the population

Returns:
the population size

globalInfo

public java.lang.String globalInfo()
Returns a string describing this search method

Returns:
a description of the search suitable for displaying in the explorer/experimenter gui

toString

public java.lang.String toString()
returns a description of the search

Returns:
a description of the search as a String

search

public int[] search(ASEvaluation ASEval,
                    Instances data)
             throws java.lang.Exception
Searches the attribute subset space using a genetic algorithm.

Specified by:
search in class ASSearch
Parameters:
data - the training instances.
ASEval - the attribute evaluator to guide the search
Returns:
an array (not necessarily ordered) of selected attribute indexes
Throws:
java.lang.Exception - if the search can't be completed