Package weka.attributeSelection

# Class GeneticSearch

java.lang.Object
weka.attributeSelection.ASSearch
weka.attributeSelection.GeneticSearch

All Implemented Interfaces:
  `Serializable`, `StartSetHandler`, `OptionHandler`, `RevisionHandler`, `TechnicalInformationHandler`

public class GeneticSearch extends ASSearch implements StartSetHandler, OptionHandler, TechnicalInformationHandler
GeneticSearch:
Performs a search using the simple genetic algorithm described in Goldberg (1989).
For more information see:
David E. Goldberg (1989). Genetic algorithms in search, optimization and machine learning. Addison-Wesley.

BibTeX:

     @book{Goldberg1989,
        author = {David E. Goldberg},
        publisher = {Addison-Wesley},
        title = {Genetic algorithms in search, optimization and machine learning},
        year = {1989},
        ISBN = {0201157675}
     }

Valid options are:

     -P <start set>
      Specify a starting set of attributes.
      Eg. 1,3,5-7.If supplied, the starting set becomes
      one member of the initial random
      population.

     -Z <population size>
      Set the size of the population (even number).
      (default = 20).

     -G <number of generations>
      Set the number of generations.
      (default = 20)

     -C <probability of crossover>
      Set the probability of crossover.
      (default = 0.6)

     -M <probability of mutation>
      Set the probability of mutation.
      (default = 0.033)

     -R <report frequency>
      Set frequency of generation reports.
      e.g, setting the value to 5 will
      report every 5th generation
      (default = number of generations)

     -S <seed>
      Set the random number seed.
      (default = 1)

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

## Constructor Summary

Constructors
Constructor
Description
`GeneticSearch()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`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
`String[]`
`getOptions()`
Gets the current settings of ReliefFAttributeEval.
`int`
`getPopulationSize()`
get the size of the population
`int`
`getReportFrequency()`
get how often repports are generated
`String`
`getRevision()`
Returns the revision string.
`int`
`getSeed()`
get the value of the random number generator's seed
`String`
`getStartSet()`
Returns a list of attributes (and or attribute ranges) as a String
`TechnicalInformation`
`getTechnicalInformation()`
Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
`String`
`globalInfo()`
Returns a string describing this search method
`Enumeration`
`listOptions()`
Returns an enumeration describing the available options.
`String`
`maxGenerationsTipText()`
Returns the tip text for this property
`String`
`mutationProbTipText()`
Returns the tip text for this property
`String`
`populationSizeTipText()`
Returns the tip text for this property
`String`
`reportFrequencyTipText()`
Returns the tip text for this property
`int[]`
`search(ASEvaluation ASEval, Instances data)`
Searches the attribute subset space using a genetic algorithm.
`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(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(String startSet)`
Sets a starting set of attributes for the search.
`String`
`startSetTipText()`
Returns the tip text for this property
`String`
`toString()`
returns a description of the search

### Methods inherited from class weka.attributeSelection.ASSearch

`forName, makeCopies`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### GeneticSearch

public GeneticSearch()
Constructor. Make a new GeneticSearch object

## Method Details

### listOptions

public 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(String[] options) throws Exception
Parses a given list of options.

Valid options are:

     -P <start set>
      Specify a starting set of attributes.
      Eg. 1,3,5-7.If supplied, the starting set becomes
      one member of the initial random
      population.

     -Z <population size>
      Set the size of the population (even number).
      (default = 20).

     -G <number of generations>
      Set the number of generations.
      (default = 20)

     -C <probability of crossover>
      Set the probability of crossover.
      (default = 0.6)

     -M <probability of mutation>
      Set the probability of mutation.
      (default = 0.033)

     -R <report frequency>
      Set frequency of generation reports.
      e.g, setting the value to 5 will
      report every 5th generation
      (default = number of generations)

     -S <seed>
      Set the random number seed.
      (default = 1)

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

### getOptions

public 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 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(String startSet) throws 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:
  `Exception` - if start set can't be set.

### getStartSet

public 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 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 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 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 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 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 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 String globalInfo()
Returns a string describing this search method

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

### getTechnicalInformation

public TechnicalInformation getTechnicalInformation()
Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.

Specified by:
  `getTechnicalInformation` in interface `TechnicalInformationHandler`
Returns:
  the technical information about this class

### toString

public String toString()
returns a description of the search

Overrides:
  `toString` in class `Object`
Returns:
  a description of the search as a String

### search

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

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

### getRevision

public String getRevision()
Returns the revision string.

Specified by:
  `getRevision` in interface `RevisionHandler`
Overrides:
  `getRevision` in class `ASSearch`
Returns:
  the revision