Package adams.opt.genetic
Class Hermione
- java.lang.Object
-
- adams.core.logging.LoggingObject
-
- adams.core.logging.CustomLoggingLevelObject
-
- adams.core.option.AbstractOptionHandler
-
- adams.opt.genetic.AbstractGeneticAlgorithm
-
- All Implemented Interfaces:
adams.core.Destroyable
,adams.core.GlobalInfoSupporter
,adams.core.logging.LoggingLevelHandler
,adams.core.logging.LoggingSupporter
,adams.core.option.OptionHandler
,adams.core.Pausable
,adams.core.Randomizable
,adams.core.ShallowCopySupporter<adams.opt.genetic.AbstractGeneticAlgorithm>
,adams.core.SizeOfHandler
,adams.core.Stoppable
,adams.core.StoppableWithFeedback
,adams.core.ThreadLimiter
,adams.event.GeneticFitnessChangeNotifier
,Serializable
public class Hermione extends AbstractClassifierBasedGeneticAlgorithmWithSecondEvaluation
Hermione.
-logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel) The logging level for outputting errors and debugging output. default: WARNING
-num-threads <int> (property: numThreads) The number of threads to use for executing the jobs; use -1 for all available cores. default: -1 minimum: -1
-num-chrom <int> (property: numChrom) The number of chromosomes, ie, the population size. default: 50
-stopping-criterion <adams.genetic.stopping.AbstractStoppingCriterion> (property: stoppingCriterion) The stopping criterion to use. default: adams.genetic.stopping.MaxIterations
-seed <long> (property: seed) The seed value for the random number generator. default: 1
-initial-setups-provider <adams.genetic.initialsetups.AbstractInitialSetupsProvider> (property: initialSetupsProvider) The initial setups provider to use. default: adams.genetic.initialsetups.EmptyInitialSetupsProvider
-initial-weights <java.lang.String> (property: initialWeights) The initial weights to use, rather than random ones (string of 0s and 1s ). default:
-favor-zeroes <boolean> (property: favorZeroes) Whether to favor 0s instead of 1s. default: false
-best <java.lang.String> (property: bestRange) The range of the best attributes. default: -none-
-notify <int> (property: notificationInterval) The time interval in seconds after which notification events about changes in the fitness can be sent (-1 = never send notifications; 0 = whenever a change occurs). default: -1
-bits-per-gene <int> (property: bitsPerGene) The number of bits per gene to use. default: 1 minimum: 1
-class <adams.data.weka.WekaAttributeIndex> (property: classIndex) The class index of the dataset, in case no class attribute is set. default: last example: An index is a number starting with 1; apart from attribute names (case-sensitive), the following placeholders can be used as well: first, second, third, last_2, last_1, last; numeric indices can be enforced by preceding them with '#' (eg '#12'); attribute names can be surrounded by double quotes.
-folds <int> (property: folds) The number of folds to use in cross-validation. default: 10 minimum: 2
-cv-seed <int> (property: crossValidationSeed) The seed value for cross-validation. default: 55
-classifier <weka.classifiers.Classifier> (property: classifier) The classifier to use. default: weka.classifiers.rules.ZeroR
-measure <CC|RMSE|RRSE|MAE|RAE|ACC> (property: measure) The measure used for evaluating the fitness. default: RMSE
-output-dir <adams.core.io.PlaceholderDirectory> (property: outputDirectory) The directory for storing the generated ARFF files. default: ${CWD}
-output-type <NONE|SETUP|DATA|ALL> (property: outputType) The type of output to generate. default: SETUP
-output-prefix-type <NONE|RELATION|SUPPLIED> (property: outputPrefixType) The type of prefix to use for the output. default: NONE
-supplied-prefix <java.lang.String> (property: suppliedPrefix) The prefix to use in case of SUPPLIED. default:
-use-second-evaluation <boolean> (property: useSecondEvaluation) If enabled, a second evaluation is performed using the separate folds and seed. default: false
-second-folds <int> (property: secondFolds) The number of folds to use in cross-validation (second evaluation). default: 10 minimum: 2
-second-cv-seed <int> (property: secondCrossValidationSeed) The seed value for cross-validation (second evaluation). default: 42
-handler <adams.core.discovery.AbstractGeneticDiscoveryHandler> [-handler ...] (property: handlers) The discovery handlers to use. default:
- Author:
- Dale (dale at cs dot waikato dot ac dot nz), FracPete (fracpete at waikato dot ac dot nz)
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Hermione.HermioneJob
A job class specific to Hermione.-
Nested classes/interfaces inherited from class adams.opt.genetic.AbstractClassifierBasedGeneticAlgorithmWithSecondEvaluation
AbstractClassifierBasedGeneticAlgorithmWithSecondEvaluation.ClassifierBasedGeneticAlgorithmWithSecondEvaluationJob<T extends AbstractClassifierBasedGeneticAlgorithmWithSecondEvaluation>
-
Nested classes/interfaces inherited from class adams.opt.genetic.AbstractClassifierBasedGeneticAlgorithm
AbstractClassifierBasedGeneticAlgorithm.ClassifierBasedGeneticAlgorithmJob<T extends AbstractClassifierBasedGeneticAlgorithm>
-
-
Field Summary
Fields Modifier and Type Field Description protected adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[]
m_Handlers
the handlers to use for discovery.protected List<Integer>
m_numbits
protected List<Integer>
m_start
-
Fields inherited from class adams.opt.genetic.AbstractClassifierBasedGeneticAlgorithmWithSecondEvaluation
m_SecondBestFitness, m_SecondBestSetup, m_SecondBestWeights, m_SecondCrossValidationSeed, m_SecondFolds, m_SecondStoredResults, m_UseSecondEvaluation
-
Fields inherited from class adams.opt.genetic.AbstractClassifierBasedGeneticAlgorithm
m_BitsPerGene, m_Classifier, m_ClassIndex, m_ClassLabelIndex, m_CrossValidationSeed, m_EvaluationPostProcessor, m_FlowContext, m_Folds, m_Generator, m_Instances, m_JobRunner, m_JobRunnerSetup, m_Measure, m_OutputDirectory, m_OutputPrefixType, m_OutputType, m_SetupUpload, m_StoredResults, m_SuppliedPrefix, m_TestInstances, PROPS_FILTER, PROPS_MASK, PROPS_RELATION
-
Fields inherited from class adams.opt.genetic.AbstractGeneticAlgorithm
m_ActualNumChrom, m_BestFitness, m_BestRange, m_BestSetup, m_BestWeights, m_CurrentIteration, m_FavorZeroes, m_Fitness, m_FitnessChangeListeners, m_FitnessHistory, m_Genes, m_InitialSetupsProvider, m_InitialWeights, m_LastNotificationTime, m_MaxFitnessHistorySize, m_NotificationInterval, m_NumChrom, m_NumGenes, m_NumThreads, m_Paused, m_Random, m_Running, m_Seed, m_Stopped, m_StoppingCriterion
-
-
Constructor Summary
Constructors Constructor Description Hermione()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
defineOptions()
Adds options to the internal list of options.weka.classifiers.Classifier
generateClassifier(int chromosome, int[] weights)
Generate the classifier from current bit arrayint[]
getBitsForPosition(int[] weights, List<Integer> starts, List<Integer> numbits, int pos)
get bit array for parameter at pos.protected OutputType
getDefaultOutputType()
Returns the default output type to use.adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[]
getHandlers()
Returns the currently set discovery handlers.int
getNumBits(adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[] handlers)
Get total number of bits for paramsList<Integer>
getNumBitsForAll(adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[] handlers)
Get List containing number of bits used for paramsList<Integer>
getStartPoints(adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[] handlers)
Get List of start positions in bit stringString
globalInfo()
Returns a string describing the object.String
handlersTipText()
Returns the tip text for this property.String
intArrayToString(int[] ia)
Int array of bits to string.protected Hermione.HermioneJob
newJob(int chromosome, int[] w, weka.core.Instances data, weka.core.Instances testData)
Creates a new Job instance.protected void
preRun()
Some more initializations.void
setBitsForPosition(int chromosome, int[] weights, List<Integer> starts, List<Integer> numbits, int pos, int[] newWeights)
Updates the bits.void
setHandlers(adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[] value)
Sets the discovery handlers to use.int[]
stringToIntArray(String s)
Converts the bit string into an int array.-
Methods inherited from class adams.opt.genetic.AbstractClassifierBasedGeneticAlgorithmWithSecondEvaluation
addSecondResult, clearResults, getSecondCrossValidationSeed, getSecondFolds, getSecondResult, getUseSecondEvaluation, initialize, isSecondBetterFitness, secondCrossValidationSeedTipText, secondFoldsTipText, setSecondCrossValidationSeed, setSecondFolds, setSecondNewFitness, setUseSecondEvaluation, useSecondEvaluationTipText
-
Methods inherited from class adams.opt.genetic.AbstractClassifierBasedGeneticAlgorithm
addResult, bitsPerGeneTipText, calcFitness, classifierTipText, classIndexTipText, classLabelIndexTipText, crossValidationSeedTipText, evaluationPostProcessorTipText, foldsTipText, generatorTipText, getBitsPerGene, getClassifier, getClassIndex, getClassLabelIndex, getCrossValidationSeed, getCurrentFitness, getDefaultClassifier, getEvaluationPostProcessor, getFlowContext, getFolds, getGenerator, getInstances, getJobRunnerSetup, getMeasure, getOutputDirectory, getOutputPrefixType, getOutputType, getResult, getSetupUpload, getSuppliedPrefix, getTestInstances, measureTipText, outputDirectoryTipText, outputPrefixTypeTipText, outputTypeTipText, postRun, setBitsPerGene, setClassifier, setClassIndex, setClassLabelIndex, setCrossValidationSeed, setEvaluationPostProcessor, setFlowContext, setFolds, setGenerator, setInstances, setJobRunnerSetup, setMeasure, setOutputDirectory, setOutputPrefixType, setOutputType, setSetupUpload, setSuppliedPrefix, setTestInstances, setupUploadTipText, stopExecution, storeSetup, suppliedPrefixTipText, toString, updateHeader
-
Methods inherited from class adams.opt.genetic.AbstractGeneticAlgorithm
addFitnessChangeListener, addToFitnessHistory, bestRangeTipText, copyGene, doCrossovers, doMutations, doMutations2, favorZeroesTipText, forCommandLine, forName, getBestRange, getCurrentIteration, getCurrentSetup, getCurrentWeights, getDefaultInitialSetupsProvider, getFavorZeroes, getFitness, getFitnessHistory, getGene, getGeneticAlgorithms, getInitialSetups, getInitialSetupsProvider, getInitialWeights, getMaxFitnessHistorySize, getNotificationInterval, getNumChrom, getNumGenes, getNumThreads, getSeed, getStoppingCriterion, hasMoreZeroes, init, initialSetupsProviderTipText, initialWeightsTipText, isBetterFitness, isPaused, isRunning, isStopped, logChromosomes, maxFitnessHistorySizeTipText, notificationIntervalTipText, notifyFitnessChangeListeners, notifyFitnessChangeListeners, numChromTipText, numThreadsTipText, pauseExecution, removeFitnessChangeListener, reset, resumeExecution, run, runGeneticAlgorithm, seedTipText, setBestRange, setBestRange, setFavorZeroes, setGene, setGene, setInitialSetupsProvider, setInitialWeights, setMaxFitnessHistorySize, setNewFitness, setNotificationInterval, setNumChrom, setNumThreads, setSeed, setStoppingCriterion, shallowCopy, shallowCopy, sort, stoppingCriterionTipText
-
Methods inherited from class adams.core.option.AbstractOptionHandler
cleanUpOptions, destroy, finishInit, getDefaultLoggingLevel, getOptionManager, loggingLevelTipText, newOptionManager, setLoggingLevel, toCommandLine
-
Methods inherited from class adams.core.logging.LoggingObject
configureLogger, getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled, sizeOf
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
-
-
-
Method Detail
-
globalInfo
public String globalInfo()
Returns a string describing the object.- Specified by:
globalInfo
in interfaceadams.core.GlobalInfoSupporter
- Specified by:
globalInfo
in classadams.core.option.AbstractOptionHandler
- Returns:
- a description suitable for displaying in the gui
-
defineOptions
public void defineOptions()
Adds options to the internal list of options.- Specified by:
defineOptions
in interfaceadams.core.option.OptionHandler
- Overrides:
defineOptions
in classAbstractClassifierBasedGeneticAlgorithmWithSecondEvaluation
-
setHandlers
public void setHandlers(adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[] value)
Sets the discovery handlers to use.- Parameters:
value
- the classifier
-
getHandlers
public adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[] getHandlers()
Returns the currently set discovery handlers.- Returns:
- the handlers
-
handlersTipText
public String handlersTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
getDefaultOutputType
protected OutputType getDefaultOutputType()
Returns the default output type to use.- Specified by:
getDefaultOutputType
in classAbstractClassifierBasedGeneticAlgorithm
- Returns:
- the type
-
newJob
protected Hermione.HermioneJob newJob(int chromosome, int[] w, weka.core.Instances data, weka.core.Instances testData)
Creates a new Job instance.- Specified by:
newJob
in classAbstractClassifierBasedGeneticAlgorithm
- Parameters:
chromosome
- the number of chromosomesw
- the initial weightsdata
- the data to usetestData
- the test data to use, null for cross-validation- Returns:
- the instance
-
preRun
protected void preRun()
Some more initializations.- Overrides:
preRun
in classAbstractClassifierBasedGeneticAlgorithmWithSecondEvaluation
-
stringToIntArray
public int[] stringToIntArray(String s)
Converts the bit string into an int array.- Parameters:
s
- the string to convert- Returns:
- the bit array
-
intArrayToString
public String intArrayToString(int[] ia)
Int array of bits to string.- Parameters:
ia
- the int array- Returns:
- the generated bit string
-
setBitsForPosition
public void setBitsForPosition(int chromosome, int[] weights, List<Integer> starts, List<Integer> numbits, int pos, int[] newWeights)
Updates the bits.- Parameters:
chromosome
- the chromosome this is forweights
- the overall weightsstarts
- the starting pointsnumbits
- the number of bitspos
- the positionnewWeights
- the new weights to set
-
getBitsForPosition
public int[] getBitsForPosition(int[] weights, List<Integer> starts, List<Integer> numbits, int pos)
get bit array for parameter at pos.- Parameters:
weights
- the overall weightsstarts
- the starting pointsnumbits
- the number of bitspos
- the position- Returns:
- the weights subset
-
getNumBitsForAll
public List<Integer> getNumBitsForAll(adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[] handlers)
Get List containing number of bits used for params- Returns:
- the list of number of bits
-
getStartPoints
public List<Integer> getStartPoints(adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[] handlers)
Get List of start positions in bit string- Returns:
- the starting positions
-
getNumBits
public int getNumBits(adams.core.discovery.genetic.AbstractGeneticDiscoveryHandler[] handlers)
Get total number of bits for params- Returns:
- the total number of bits
-
generateClassifier
public weka.classifiers.Classifier generateClassifier(int chromosome, int[] weights)
Generate the classifier from current bit array- Parameters:
chromosome
- the chromosome indexweights
- the bit array- Returns:
- the classifier
-
-