Class WekaGeneticAlgorithm

  • All Implemented Interfaces:
    adams.core.AdditionalInformationHandler, adams.core.ArrayProvider, adams.core.CleanUpHandler, adams.core.Destroyable, adams.core.GlobalInfoSupporter, adams.core.logging.LoggingLevelHandler, adams.core.logging.LoggingSupporter, adams.core.option.OptionHandler, adams.core.Pausable, adams.core.QuickInfoSupporter, adams.core.ShallowCopySupporter<adams.flow.core.Actor>, adams.core.SizeOfHandler, adams.core.Stoppable, adams.core.StoppableWithFeedback, adams.core.VariablesInspectionHandler, adams.event.FlowPauseStateListener, adams.event.GeneticFitnessChangeListener, adams.event.VariableChangeListener, adams.flow.core.Actor, adams.flow.core.ArrayProvider, adams.flow.core.CallableActorUser, adams.flow.core.ErrorHandler, adams.flow.core.InputConsumer, adams.flow.core.OptionalCallableActor, adams.flow.core.OutputProducer, Serializable, Comparable

    public class WekaGeneticAlgorithm
    extends adams.flow.transformer.AbstractArrayProvider
    implements adams.event.GeneticFitnessChangeListener, adams.flow.core.CallableActorUser, adams.flow.core.OptionalCallableActor, adams.event.FlowPauseStateListener, adams.core.Pausable
    Applies the genetic algorithm to the incoming dataset.
    Forwards the best setup(s) after the algorithm finishes.
    A callable sink can be specified for receiving intermediate performance results.

    Input/output:
    - accepts:
       weka.core.Instances
       adams.flow.container.WekaGeneticAlgorithmInitializationContainer
    - generates:
       adams.flow.container.WekaGeneticAlgorithmContainer


    Container information:
    - adams.flow.container.WekaGeneticAlgorithmInitializationContainer: Algorithm, Data
    - adams.flow.container.WekaGeneticAlgorithmContainer: Setup, Measure, Fitness, WeightsStr, Weights

    -logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel)
        The logging level for outputting errors and debugging output.
        default: WARNING
     
    -name <java.lang.String> (property: name)
        The name of the actor.
        default: WekaGeneticAlgorithm
     
    -annotation <adams.core.base.BaseAnnotation> (property: annotations)
        The annotations to attach to this actor.
        default:
     
    -skip <boolean> (property: skip)
        If set to true, transformation is skipped and the input token is just forwarded
        as it is.
        default: false
     
    -stop-flow-on-error <boolean> (property: stopFlowOnError)
        If set to true, the flow execution at this level gets stopped in case this
        actor encounters an error; the error gets propagated; useful for critical
        actors.
        default: false
     
    -silent <boolean> (property: silent)
        If enabled, then no errors are output in the console; Note: the enclosing
        actor handler must have this enabled as well.
        default: false
     
    -output-array <boolean> (property: outputArray)
        If enabled, outputs the containers as array rather than one-by-one.
        default: false
     
    -algorithm <adams.opt.genetic.AbstractClassifierBasedGeneticAlgorithm> (property: algorithm)
        The genetic algorithm to apply to the dataset.
        default: adams.opt.genetic.DarkLord -stopping-criterion adams.opt.genetic.stopping.MaxIterations -initial-setups-provider adams.opt.genetic.initialsetups.EmptyInitialSetupsProvider -generator weka.classifiers.DefaultCrossValidationFoldGenerator -classifier weka.classifiers.rules.ZeroR -setup-upload adams.opt.genetic.setupupload.Null
     
    -callable <adams.flow.core.CallableActorReference> (property: callableName)
        The name of the callable sink to forward to the adams.flow.container.WekaGeneticAlgorithmContainer
        containers.
        default: unknown
     
    -optional <boolean> (property: optional)
        If enabled, then the callable sink is optional, ie no error is raised if
        not found, merely ignored.
        default: false
     
    -test-data <adams.flow.control.StorageName> (property: testData)
        The storage item with the test data; cross-validation is performed if not
        present or the algorithm doesn't support test data handling.
        default: storage
     
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static String BACKUP_CALLABLEACTOR
      the key for backing up the callable actor.
      static String BACKUP_CONFIGURED
      the key for backing up the configured state.
      protected AbstractClassifierBasedGeneticAlgorithm m_ActualAlgorithm
      the actual algorithm in use.
      protected AbstractClassifierBasedGeneticAlgorithm m_Algorithm
      whether to check the header.
      protected adams.flow.core.Actor m_CallableActor
      the callable actor.
      protected adams.flow.core.CallableActorReference m_CallableName
      the callable name.
      protected boolean m_Configured
      whether the callable actor has been configured.
      protected adams.flow.core.CallableActorHelper m_Helper
      the helper class.
      protected adams.flow.standalone.JobRunnerSetup m_JobRunnerSetup
      the jobrunner setup.
      protected boolean m_Optional
      whether the callable actor is optional.
      protected adams.flow.core.PauseStateManager m_PauseStateManager
      the pause state manager.
      protected adams.flow.control.StorageName m_TestData
      the storage name of the test data.
      • Fields inherited from class adams.flow.transformer.AbstractArrayProvider

        BACKUP_INDEX, BACKUP_QUEUE, m_Index, m_OutputArray, m_Queue
      • Fields inherited from class adams.flow.transformer.AbstractTransformer

        BACKUP_INPUT, BACKUP_OUTPUT, m_InputToken, m_OutputToken
      • Fields inherited from class adams.flow.core.AbstractActor

        m_Annotations, m_BackupState, m_DetectedObjectVariables, m_DetectedVariables, m_ErrorHandler, m_Executed, m_Executing, m_ExecutionListeningSupporter, m_FullName, m_LoggingPrefix, m_Name, m_Parent, m_ScopeHandler, m_Self, m_Silent, m_Skip, m_StopFlowOnError, m_StopMessage, m_Stopped, m_StorageHandler, m_VariablesUpdated
      • Fields inherited from class adams.core.option.AbstractOptionHandler

        m_OptionManager
      • Fields inherited from class adams.core.logging.LoggingObject

        m_Logger, m_LoggingIsEnabled, m_LoggingLevel
      • Fields inherited from interface adams.flow.core.Actor

        FILE_EXTENSION, FILE_EXTENSION_GZ
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Class[] accepts()
      Returns the class that the consumer accepts.
      String algorithmTipText()
      Returns the tip text for this property.
      protected Hashtable<String,​Object> backupState()
      Backs up the current state of the actor before update the variables.
      String callableNameTipText()
      Returns the tip text for this property.
      void defineOptions()
      Adds options to the internal list of options.
      protected String doExecute()
      Executes the flow item.
      protected adams.flow.core.Actor findCallableActor()
      Tries to find the callable actor referenced by its callable name.
      void fitnessChanged​(adams.event.GeneticFitnessChangeEvent e)
      Gets called when the fitness of the genetic algorithm changed.
      void flowPauseStateChanged​(adams.event.FlowPauseStateEvent e)
      Gets called when the pause state of the flow changes.
      AbstractClassifierBasedGeneticAlgorithm getAlgorithm()
      Returns the genetic algorithm to apply to the dataset.
      adams.flow.core.Actor getCallableActor()
      Returns the currently set callable actor.
      adams.flow.core.CallableActorReference getCallableName()
      Returns the name of the callable sink in use.
      protected Class getItemClass()
      Returns the base class of the items.
      boolean getOptional()
      Returns whether the callable sink is optional.
      String getQuickInfo()
      Returns a quick info about the actor, which will be displayed in the GUI.
      adams.flow.control.StorageName getTestData()
      Returns the (optional) storage item that contains the test data; cross-validation is performed if not present.
      String globalInfo()
      Returns a string describing the object.
      boolean hasCallableActor()
      Checks whether a reference to the callable actor is currently available.
      protected void initialize()
      Initializes the members.
      boolean isPaused()
      Returns whether the object is currently paused.
      String optionalTipText()
      Returns the tip text for this property.
      String outputArrayTipText()
      Returns the tip text for this property.
      void pauseExecution()
      Pauses the execution.
      protected void pruneBackup()
      Removes entries from the backup.
      protected void reset()
      Resets the scheme.
      protected void restoreState​(Hashtable<String,​Object> state)
      Restores the state of the actor before the variables got updated.
      void resumeExecution()
      Resumes the execution.
      void setAlgorithm​(AbstractClassifierBasedGeneticAlgorithm value)
      Sets the genetic algorithm to apply to the dataset.
      void setCallableName​(adams.flow.core.CallableActorReference value)
      Sets the name of the callable sink to use.
      void setOptional​(boolean value)
      Sets whether the callable sink is optional.
      void setTestData​(adams.flow.control.StorageName value)
      Sets the (optional) storage item that contains the test data; cross-validation is performed if not present.
      String setUp()
      Initializes the item for flow execution.
      protected String setUpCallableActor()
      Configures the callable actor.
      void stopExecution()
      Stops the execution.
      String testDataTipText()
      Returns the tip text for this property.
      • Methods inherited from class adams.flow.transformer.AbstractArrayProvider

        generates, getOutputArray, hasPendingOutput, output, preExecute, setOutputArray, wrapUp
      • Methods inherited from class adams.flow.transformer.AbstractTransformer

        currentInput, execute, hasInput, input, postExecute
      • Methods inherited from class adams.flow.core.AbstractActor

        annotationsTipText, canInspectOptions, canPerformSetUpCheck, cleanUp, compareTo, configureLogger, destroy, equals, finalUpdateVariables, findVariables, findVariables, forceVariables, forCommandLine, forName, forName, getAdditionalInformation, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowActors, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, handleException, hasErrorHandler, hasStopMessage, index, isBackedUp, isExecuted, isExecuting, isFinished, isHeadless, isStopped, nameTipText, performSetUpChecks, performVariableChecks, pruneBackup, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setVariables, shallowCopy, shallowCopy, silentTipText, sizeOf, skipTipText, stopExecution, stopFlowOnErrorTipText, updateDetectedVariables, updatePrefix, updateVariables, variableChanged
      • Methods inherited from class adams.core.option.AbstractOptionHandler

        cleanUpOptions, finishInit, getDefaultLoggingLevel, getOptionManager, loggingLevelTipText, newOptionManager, setLoggingLevel, toCommandLine, toString
      • Methods inherited from class adams.core.logging.LoggingObject

        getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled
      • Methods inherited from interface adams.flow.core.Actor

        cleanUp, compareTo, destroy, equals, execute, findVariables, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, hasErrorHandler, hasStopMessage, index, isExecuted, isFinished, isHeadless, isStopped, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setVariables, shallowCopy, shallowCopy, sizeOf, stopExecution, toCommandLine, variableChanged
      • Methods inherited from interface adams.core.AdditionalInformationHandler

        getAdditionalInformation
      • Methods inherited from interface adams.core.logging.LoggingLevelHandler

        getLoggingLevel, setLoggingLevel
      • Methods inherited from interface adams.core.logging.LoggingSupporter

        getLogger, isLoggingEnabled
      • Methods inherited from interface adams.core.option.OptionHandler

        cleanUpOptions, getOptionManager
      • Methods inherited from interface adams.core.VariablesInspectionHandler

        canInspectOptions
    • Field Detail

      • BACKUP_CALLABLEACTOR

        public static final String BACKUP_CALLABLEACTOR
        the key for backing up the callable actor.
        See Also:
        Constant Field Values
      • BACKUP_CONFIGURED

        public static final String BACKUP_CONFIGURED
        the key for backing up the configured state.
        See Also:
        Constant Field Values
      • m_CallableName

        protected adams.flow.core.CallableActorReference m_CallableName
        the callable name.
      • m_CallableActor

        protected adams.flow.core.Actor m_CallableActor
        the callable actor.
      • m_Configured

        protected boolean m_Configured
        whether the callable actor has been configured.
      • m_Helper

        protected adams.flow.core.CallableActorHelper m_Helper
        the helper class.
      • m_Optional

        protected boolean m_Optional
        whether the callable actor is optional.
      • m_TestData

        protected adams.flow.control.StorageName m_TestData
        the storage name of the test data.
      • m_PauseStateManager

        protected adams.flow.core.PauseStateManager m_PauseStateManager
        the pause state manager.
      • m_JobRunnerSetup

        protected transient adams.flow.standalone.JobRunnerSetup m_JobRunnerSetup
        the jobrunner setup.
    • Constructor Detail

      • WekaGeneticAlgorithm

        public WekaGeneticAlgorithm()
    • Method Detail

      • globalInfo

        public String globalInfo()
        Returns a string describing the object.
        Specified by:
        globalInfo in interface adams.core.GlobalInfoSupporter
        Specified by:
        globalInfo in class adams.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 interface adams.core.option.OptionHandler
        Overrides:
        defineOptions in class adams.flow.transformer.AbstractArrayProvider
      • reset

        protected void reset()
        Resets the scheme.
        Overrides:
        reset in class adams.flow.transformer.AbstractArrayProvider
      • initialize

        protected void initialize()
        Initializes the members.
        Overrides:
        initialize in class adams.flow.core.AbstractActor
      • getQuickInfo

        public String getQuickInfo()
        Returns a quick info about the actor, which will be displayed in the GUI.
        Specified by:
        getQuickInfo in interface adams.flow.core.Actor
        Specified by:
        getQuickInfo in interface adams.core.QuickInfoSupporter
        Overrides:
        getQuickInfo in class adams.flow.core.AbstractActor
        Returns:
        null if no info available, otherwise short string
      • outputArrayTipText

        public String outputArrayTipText()
        Returns the tip text for this property.
        Specified by:
        outputArrayTipText in interface adams.core.ArrayProvider
        Specified by:
        outputArrayTipText in interface adams.flow.core.ArrayProvider
        Specified by:
        outputArrayTipText in class adams.flow.transformer.AbstractArrayProvider
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • algorithmTipText

        public String algorithmTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setCallableName

        public void setCallableName​(adams.flow.core.CallableActorReference value)
        Sets the name of the callable sink to use.
        Parameters:
        value - the callable name
      • getCallableName

        public adams.flow.core.CallableActorReference getCallableName()
        Returns the name of the callable sink in use.
        Returns:
        the callable name
      • callableNameTipText

        public String callableNameTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setOptional

        public void setOptional​(boolean value)
        Sets whether the callable sink is optional.
        Specified by:
        setOptional in interface adams.flow.core.OptionalCallableActor
        Parameters:
        value - true if optional
      • getOptional

        public boolean getOptional()
        Returns whether the callable sink is optional.
        Specified by:
        getOptional in interface adams.flow.core.OptionalCallableActor
        Returns:
        true if optional
      • optionalTipText

        public String optionalTipText()
        Returns the tip text for this property.
        Specified by:
        optionalTipText in interface adams.flow.core.OptionalCallableActor
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setTestData

        public void setTestData​(adams.flow.control.StorageName value)
        Sets the (optional) storage item that contains the test data; cross-validation is performed if not present.
        Parameters:
        value - the storage name
      • getTestData

        public adams.flow.control.StorageName getTestData()
        Returns the (optional) storage item that contains the test data; cross-validation is performed if not present.
        Returns:
        the storage name
      • testDataTipText

        public String testDataTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • accepts

        public Class[] accepts()
        Returns the class that the consumer accepts.
        Specified by:
        accepts in interface adams.flow.core.InputConsumer
        Returns:
        weka.core.Instances.class, adams.flow.container.WekaGeneticAlgorithmInitializationContainer.class
      • getItemClass

        protected Class getItemClass()
        Returns the base class of the items.
        Specified by:
        getItemClass in class adams.flow.transformer.AbstractArrayProvider
        Returns:
        the class
      • findCallableActor

        protected adams.flow.core.Actor findCallableActor()
        Tries to find the callable actor referenced by its callable name.
        Returns:
        the callable actor or null if not found
      • hasCallableActor

        public boolean hasCallableActor()
        Checks whether a reference to the callable actor is currently available.
        Returns:
        true if a reference is available
        See Also:
        getCallableActor()
      • getCallableActor

        public adams.flow.core.Actor getCallableActor()
        Returns the currently set callable actor.
        Specified by:
        getCallableActor in interface adams.flow.core.CallableActorUser
        Returns:
        the actor, can be null
      • pruneBackup

        protected void pruneBackup()
        Removes entries from the backup.
        Overrides:
        pruneBackup in class adams.flow.transformer.AbstractArrayProvider
      • backupState

        protected Hashtable<String,​Object> backupState()
        Backs up the current state of the actor before update the variables.
        Overrides:
        backupState in class adams.flow.transformer.AbstractArrayProvider
        Returns:
        the backup
      • restoreState

        protected void restoreState​(Hashtable<String,​Object> state)
        Restores the state of the actor before the variables got updated.
        Overrides:
        restoreState in class adams.flow.transformer.AbstractArrayProvider
        Parameters:
        state - the backup of the state to restore from
      • setUpCallableActor

        protected String setUpCallableActor()
        Configures the callable actor.
        Returns:
        null if successful, otherwise error message
      • setUp

        public String setUp()
        Initializes the item for flow execution.
        Specified by:
        setUp in interface adams.flow.core.Actor
        Overrides:
        setUp in class adams.flow.core.AbstractActor
        Returns:
        null if everything is fine, otherwise error message
      • doExecute

        protected String doExecute()
        Executes the flow item.
        Specified by:
        doExecute in class adams.flow.core.AbstractActor
        Returns:
        null if everything is fine, otherwise error message
      • stopExecution

        public void stopExecution()
        Stops the execution. No message set.
        Specified by:
        stopExecution in interface adams.flow.core.Actor
        Specified by:
        stopExecution in interface adams.core.Stoppable
        Overrides:
        stopExecution in class adams.flow.core.AbstractActor
      • fitnessChanged

        public void fitnessChanged​(adams.event.GeneticFitnessChangeEvent e)
        Gets called when the fitness of the genetic algorithm changed.
        Specified by:
        fitnessChanged in interface adams.event.GeneticFitnessChangeListener
        Parameters:
        e - the event
      • pauseExecution

        public void pauseExecution()
        Pauses the execution.
        Specified by:
        pauseExecution in interface adams.core.Pausable
      • isPaused

        public boolean isPaused()
        Returns whether the object is currently paused.
        Specified by:
        isPaused in interface adams.core.Pausable
        Returns:
        true if object is paused
      • resumeExecution

        public void resumeExecution()
        Resumes the execution.
        Specified by:
        resumeExecution in interface adams.core.Pausable
      • flowPauseStateChanged

        public void flowPauseStateChanged​(adams.event.FlowPauseStateEvent e)
        Gets called when the pause state of the flow changes.
        Specified by:
        flowPauseStateChanged in interface adams.event.FlowPauseStateListener
        Parameters:
        e - the event