public class TabuSearch
extends weka.attributeSelection.ASSearch
implements weka.core.OptionHandler, weka.core.TechnicalInformationHandler
Tabu Search :
Performs a search through the space of attribute subsets. Evading local maximums by accepting bad and diverse solutions and make further search in the best soluions. Stops when there's not more improvement in n iterations
;For more information see:
Abdel-Rahman Hedar, Jue Wangy,, Masao Fukushima (2006). Tabu Search for Attribute Reduction in Rough Set Theory. .
-Z <numInitialSolution> Specify the number of attributes in the initial Solution..
-P <diversificationProb> Specify the diversification probabilities, if this value is near to 0 then the best attributes will have more probabilities of keeping in the new diverse solution
-S <seed> Set the random number seed. (default = 1)
-N <number of neighbors> Set the number of neighbors to generate.BibTeX:
@book{Abdel-RahmanHedar2006, author = {Abdel-Rahman Hedar, Jue Wangy, and Masao Fukushima}, month = {July}, title = {Tabu Search for Attribute Reduction in Rough Set Theory}, year = {2006}, language = {English} }from the Book: Tabu Search for Attribute Reduction in Rough Set Theory, Abdel-Rahman Hedar, Jue Wangy, and Masao Fukushima.
Modifier and Type | Class and Description |
---|---|
class |
TabuSearch.Subset |
Constructor and Description |
---|
TabuSearch() |
Modifier and Type | Method and Description |
---|---|
int[] |
attributeList(java.util.BitSet group)
converts a BitSet into a list of attribute indexes
|
java.util.List<TabuSearch.Subset> |
bubbleSubsetSort(java.util.List<TabuSearch.Subset> subsetList)
Sort a List of subsets according to their merits
|
java.lang.String |
diversificationProbTipText()
Returns the tip text for this property
|
java.util.BitSet |
diversify(java.util.List<TabuSearch.Subset> neighborhood)
Generate a diverse Bitset given a List of Subset
|
TabuSearch.Subset |
eliteReducts(java.util.List<TabuSearch.Subset> RedSet,
int numSubset)
Find a better solution by intersecting and SFS of the best elite Reducts found till that moment
|
TabuSearch.Subset |
GenerateInitialSolution(TabuSearch.Subset initial,
int size)
Generate an initial solution based in a Sequential Forward Selection (SFS)
|
double |
getDiversificationProb()
get the probability of diversification
|
int |
getInitialSize()
get the number of of attributes that are going to be in the initial Solution
|
int |
getNumNeighborhood()
get the number of neighborhood
|
java.lang.String[] |
getOptions()
Gets the current settings of TabuSearch.
|
java.lang.String |
getRevision()
Returns the revision string.
|
int |
getSeed()
get the value of the random number generator's seed
|
weka.core.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.
|
java.lang.String |
globalInfo()
Returns a string describing this search method
|
java.lang.String |
initialSizeTipText()
Returns the tip text for this property
|
TabuSearch.Subset |
joinSubsets(TabuSearch.Subset subset1,
TabuSearch.Subset subset2)
Join two subsets
|
java.util.Enumeration |
listOptions() |
java.lang.String |
numNeighborhoodTipText()
Returns the tip text for this property
|
java.lang.String |
printSubset(TabuSearch.Subset subset) |
int[] |
search(weka.attributeSelection.ASEvaluation ASEval,
weka.core.Instances data)
Searches the attribute subset space using Tabu Search.
|
java.lang.String |
seedTipText()
Returns the tip text for this property
|
void |
setDiversificationProb(double p)
set the probability of diverification
|
void |
setInitialSize(int n)
set the number of attributes that are going to be in the initial Solution
|
void |
setNumNeighborhood(int n)
set the number of neighborhood
|
void |
setOptions(java.lang.String[] options)
Valid options are:
|
void |
setSeed(int s)
set the seed for random number generation
|
java.lang.String |
toString()
returns a description of the search.
|
public int[] search(weka.attributeSelection.ASEvaluation ASEval, weka.core.Instances data) throws java.lang.Exception
search
in class weka.attributeSelection.ASSearch
ASEvaluator
- the attribute evaluator to guide the searchdata
- the training instances.java.lang.Exception
- if the search can't be completedpublic java.util.BitSet diversify(java.util.List<TabuSearch.Subset> neighborhood)
neighborhood
- the list from which are going to be generate the diverse solutionpublic TabuSearch.Subset eliteReducts(java.util.List<TabuSearch.Subset> RedSet, int numSubset) throws java.lang.Exception
RedSet
- the Subset List of the Elite Reducted found till that momentnumSubset
- number of elites to intersectjava.lang.Exception
- if any evaluation can't be completedpublic TabuSearch.Subset GenerateInitialSolution(TabuSearch.Subset initial, int size) throws java.lang.Exception
size
- number of posible attributes in the initial Solutionjava.lang.Exception
- if the evaluation can not be completedpublic java.util.List<TabuSearch.Subset> bubbleSubsetSort(java.util.List<TabuSearch.Subset> subsetList)
subsetList
- the subsetList to be orderedpublic TabuSearch.Subset joinSubsets(TabuSearch.Subset subset1, TabuSearch.Subset subset2) throws java.lang.Exception
subset1
- one of the subsetssubset2
- the other subsetjava.lang.Exception
- if the evaluation of the subsets can not be completedpublic int[] attributeList(java.util.BitSet group)
group
- the BitSet to convertpublic java.lang.String printSubset(TabuSearch.Subset subset)
public java.lang.String globalInfo()
public weka.core.TechnicalInformation getTechnicalInformation()
getTechnicalInformation
in interface weka.core.TechnicalInformationHandler
public java.lang.String getRevision()
getRevision
in interface weka.core.RevisionHandler
getRevision
in class weka.attributeSelection.ASSearch
public java.lang.String seedTipText()
public void setSeed(int s)
s
- seed valuepublic int getSeed()
public java.lang.String diversificationProbTipText()
public void setDiversificationProb(double p)
p
- the probability of change of search subspace in an abrupt waypublic double getDiversificationProb()
public java.lang.String numNeighborhoodTipText()
public void setNumNeighborhood(int n)
n
- the number of neighborhoodpublic int getNumNeighborhood()
public java.lang.String initialSizeTipText()
public void setInitialSize(int n)
n
- the number of attributespublic int getInitialSize()
public java.util.Enumeration listOptions()
listOptions
in interface weka.core.OptionHandler
listOptions
in class weka.attributeSelection.ASSearch
public void setOptions(java.lang.String[] options) throws java.lang.Exception
-Z <numInitialSolution> Specify the number of attributes in the initial Solution..
-P <diversificationProb> Specify the diversification probabilities, if this value is near to 0 then the best attributes will have more probabilities of keeping in the new diverse solution
-S <seed> Set the random number seed. (default = 1)
-N <number of neighbors> Set the number of neighbors to generate.
setOptions
in interface weka.core.OptionHandler
setOptions
in class weka.attributeSelection.ASSearch
options
- the list of options as an array of stringsjava.lang.Exception
- if an option is not supportedpublic java.lang.String[] getOptions()
getOptions
in interface weka.core.OptionHandler
getOptions
in class weka.attributeSelection.ASSearch
public java.lang.String toString()
toString
in class java.lang.Object