ABLE 2.0.0 07/02/2003 10:25:01

com.ibm.able.autotune
Class BasicNeuralAutotuneController

java.lang.Object
  |
  +--com.ibm.able.AbleObject
        |
        +--com.ibm.able.AbleDefaultAgent
              |
              +--com.ibm.able.autotune.BaseAutotuneController
                    |
                    +--com.ibm.able.autotune.BasicNeuralAutotuneController
All Implemented Interfaces:
AbleAgent, AbleBean, AbleBeanContainer, AbleDataBufferManager, AbleEventListener, AbleEventListenerManager, AbleEventQueueManager, AbleEventQueueProcessor, AblePropertyChangeManager, AbleSerializable, AbleUserDefinedFunctionManager, AutotuneController, java.util.EventListener, java.beans.PropertyChangeListener, java.io.Serializable

public class BasicNeuralAutotuneController
extends BaseAutotuneController
implements AutotuneController

This class implements a basic neural controller It features a neural system model that is trained with off-line data and a neural controller that is adapted on-line The model can predict one or more service level metrics given a set of configuration, workload, service level metrics and tuning controls The controller can specify one or more tuning control values given a set of configuration, workload, service levels, and current tuning control metrics How to use this controller .... 1. define the metadata for the model and controller using a text editor NOTE: the field names should match the metric names exactly 2. instantiate a neural controller agent 3. drop in a model neural prediction agent 4. drop in a controller neural prediction agent 5. Select the metrics ... must be superset of those fields names in the 2 dfn files 6. Select the target tuning control 7. Go to the model and train it off-line

See Also:
Serialized Form

Field Summary
protected  double actualPerf
           
protected  AutotuneAdaptor adaptor
           
protected  AbleNeuralPredictionAgent controller
           
protected  java.lang.String controllerDataSetFileName
           
protected  double[] controls
           
protected  double desiredPerf
           
protected  double error
           
protected  AbleNeuralPredictionAgent model
           
protected  java.lang.String modelDataSetFileName
           
 
Fields inherited from class com.ibm.able.autotune.BaseAutotuneController
selectedMetrics
 
Fields inherited from class com.ibm.able.AbleDefaultAgent
activeDataSource, defaultName, eventConnections, myBeans, numEpochs, processList, processListOK, userDefinedFunctions
 
Fields inherited from class com.ibm.able.AbleObject
changed, chgSupport, comment, dataFlowEnabled, destBufferConnections, eventQueue, fileName, inputBuffer, listeners, logger, name, outputBuffer, parent, propertyConnectionMgr, sourceBufferConnections, state, stateChgSupport, trace
 
Constructor Summary
BasicNeuralAutotuneController()
           
 
Method Summary
protected  void backPropThroughModel()
          given the errors in the output units back propagate them through the system model and extract the corresponding input deltas
 void computeControlActions()
          compute the control actions for the target system or application by doing a forward pass through the controller neural network
 void computeErrors()
          compute the differences between actual and desired service levels for one or more service level metrics
static java.lang.String Copyright()
          Determine the copyright of this class.
 AutotuneAdaptor getAdaptor()
           
 java.lang.String getControllerDataSetFileName()
           
 java.lang.String getModelDataSetFileName()
           
 void init()
          Initialize and configure the bean.
 void process()
          do a single control cycle
 void setAdaptor(AutotuneAdaptor adaptor)
          Set the active Adaptor.
 void setControllerDataSetFileName(java.lang.String name)
           
 void setModelDataSetFileName(java.lang.String name)
           
protected  void trainController()
          use the errors computed by back propagating through the system model to adjust the controller neural network
 
Methods inherited from class com.ibm.able.autotune.BaseAutotuneController
getLogData, getLogDataFileName, getSelectedMetrics, isLogData, setControlActions, setLogData, setLogDataFileName, setSelectedMetrics
 
Methods inherited from class com.ibm.able.AbleDefaultAgent
addBean, addBeans, addEventConnection, addUserDefinedFunction, buildProcessList, clsNm, containsBean, containsBean, containsUserDefinedFunction, debugTrace, generateUniqueName, getBean, getBeans, getDataSource, getNumEpochs, getProcessList, getUserDefinedFunction, getUserDefinedFunctions, handleAbleEvent, invokeUserDefinedFunction, isActiveDataSource, propertyChange, quitAll, quitEnabledEventProcessing, removeAllBeans, removeAllConnections, removeAllEventConnections, removeBean, removeBean, removeBeans, removeEventConnection, removeUserDefinedFunction, reset, resumeAll, setActiveDataSource, setDataFlowEnabled, setProcessList, setUserDefinedFunctions, suspendAll
 
Methods inherited from class com.ibm.able.AbleObject
addAbleEventListener, addDestBufferConnection, addPropertyChangeListener, addPropertyConnection, addSourceBufferConnection, addStateChangeListener, dataChanged, firePropertyChange, flushAbleEventQueue, getAbleEventListeners, getAbleEventProcessingEnabled, getAbleEventQueueSize, getComment, getDestBufferConnections, getFileName, getInputBuffer, getInputBuffer, getInputBufferAsStringArray, getInputBufferContents, getLogger, getName, getOutputBuffer, getOutputBuffer, getOutputBufferAsStringArray, getOutputBufferContents, getParent, getPropertyConnectionManager, getSleepTime, getSourceBufferConnections, getState, getTraceLogger, hasInputBuffer, hasOutputBuffer, init, isAbleEventPostingEnabled, isAbleEventProcessingEnabled, isChanged, isConnectable, isDataFlowEnabled, isTimerEventProcessingEnabled, notifyAbleEventListeners, process, processAbleEvent, processBufferConnections, processNoEventProcessingEnabledSituation, processTimerEvent, removeAbleEventListener, removeAllAbleEventListeners, removeAllBufferConnections, removeAllPropertyConnections, removeDestBufferConnection, removePropertyChangeListener, removePropertyConnection, removeSourceBufferConnection, removeStateChangeListener, restartEnabledEventProcessing, restoreFromFile, restoreFromFile, restoreFromSerializedFile, restoreFromStream, resumeEnabledEventProcessing, saveToFile, saveToFile, setAbleEventProcessingEnabled, setChanged, setComment, setFileName, setInputBuffer, setInputBuffer, setLogger, setName, setOutputBuffer, setOutputBuffer, setParent, setSleepTime, setState, setTimerEventProcessingEnabled, setTraceLogger, sourceConnectionsOK, startEnabledEventProcessing, suspendEnabledEventProcessing
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.ibm.able.autotune.AutotuneController
setControlActions
 
Methods inherited from interface com.ibm.able.AbleBean
getComment, getLogger, getName, getParent, getState, getTraceLogger, init, isChanged, process, setChanged, setComment, setLogger, setName, setParent, setState, setTraceLogger
 
Methods inherited from interface com.ibm.able.AbleDataBufferManager
addDestBufferConnection, addSourceBufferConnection, getDestBufferConnections, getInputBuffer, getInputBuffer, getInputBufferAsStringArray, getInputBufferContents, getOutputBuffer, getOutputBuffer, getOutputBufferAsStringArray, getOutputBufferContents, getSourceBufferConnections, hasInputBuffer, hasOutputBuffer, isConnectable, isDataFlowEnabled, processBufferConnections, removeAllBufferConnections, removeDestBufferConnection, removeSourceBufferConnection, setInputBuffer, setInputBuffer, setOutputBuffer, setOutputBuffer
 
Methods inherited from interface com.ibm.able.AbleEventListenerManager
addAbleEventListener, dataChanged, getAbleEventListeners, notifyAbleEventListeners, removeAbleEventListener
 
Methods inherited from interface com.ibm.able.AbleEventQueueManager
flushAbleEventQueue, getAbleEventProcessingEnabled, getAbleEventQueueSize, getSleepTime, isAbleEventPostingEnabled, isAbleEventProcessingEnabled, isTimerEventProcessingEnabled, restartEnabledEventProcessing, resumeEnabledEventProcessing, setAbleEventProcessingEnabled, setSleepTime, setTimerEventProcessingEnabled, startEnabledEventProcessing, suspendEnabledEventProcessing
 
Methods inherited from interface com.ibm.able.AbleEventQueueProcessor
processAbleEvent, processNoEventProcessingEnabledSituation, processTimerEvent
 
Methods inherited from interface com.ibm.able.AblePropertyChangeManager
addPropertyChangeListener, addPropertyConnection, getPropertyConnectionManager, removeAllPropertyConnections, removePropertyChangeListener, removePropertyConnection
 
Methods inherited from interface com.ibm.able.AbleSerializable
getFileName, restoreFromFile, restoreFromFile, saveToFile, saveToFile, setFileName
 
Methods inherited from interface com.ibm.able.AbleBeanContainer
getName
 

Field Detail

adaptor

protected AutotuneAdaptor adaptor

controller

protected AbleNeuralPredictionAgent controller

model

protected AbleNeuralPredictionAgent model

modelDataSetFileName

protected java.lang.String modelDataSetFileName

controllerDataSetFileName

protected java.lang.String controllerDataSetFileName

controls

protected double[] controls

desiredPerf

protected double desiredPerf

error

protected double error

actualPerf

protected double actualPerf
Constructor Detail

BasicNeuralAutotuneController

public BasicNeuralAutotuneController()
                              throws AbleException
Method Detail

setModelDataSetFileName

public void setModelDataSetFileName(java.lang.String name)

getModelDataSetFileName

public java.lang.String getModelDataSetFileName()

setControllerDataSetFileName

public void setControllerDataSetFileName(java.lang.String name)

getControllerDataSetFileName

public java.lang.String getControllerDataSetFileName()

init

public void init()
          throws AbleException
Description copied from interface: AbleBean
Initialize and configure the bean. The bean's state changes to AbleState.Initiated or AbleState.Waiting.

If the implementation provides property change notification, decide whether to send only one property change event or an event for each property.

A bean implementing AbleBeanContainer may choose to call this method on each bean it contains and accumulate errors from each contained bean.

Overrides:
init in class AbleObject
Following copied from interface: com.ibm.able.AbleBean
Throws:
AbleException - If an error occurs.

process

public void process()
             throws AbleException
do a single control cycle
Overrides:
process in class AbleDefaultAgent
Following copied from class: com.ibm.able.AbleDefaultAgent
Throws:
AbleException - If an error occurs. Errors from each contained bean are accumulated.

setAdaptor

public void setAdaptor(AutotuneAdaptor adaptor)
Description copied from interface: AutotuneController
Set the active Adaptor.
Specified by:
setAdaptor in interface AutotuneController
Overrides:
setAdaptor in class BaseAutotuneController

getAdaptor

public AutotuneAdaptor getAdaptor()

backPropThroughModel

protected void backPropThroughModel()
                             throws AbleException
given the errors in the output units back propagate them through the system model and extract the corresponding input deltas

trainController

protected void trainController()
                        throws AbleException
use the errors computed by back propagating through the system model to adjust the controller neural network

computeErrors

public void computeErrors()
                   throws AbleException
compute the differences between actual and desired service levels for one or more service level metrics
Specified by:
computeErrors in interface AutotuneController
Overrides:
computeErrors in class BaseAutotuneController

computeControlActions

public void computeControlActions()
                           throws AbleException
compute the control actions for the target system or application by doing a forward pass through the controller neural network
Specified by:
computeControlActions in interface AutotuneController
Overrides:
computeControlActions in class BaseAutotuneController

Copyright

public static java.lang.String Copyright()
Determine the copyright of this class.
Returns:
A String containing this class's copyright statement.


ABLE 2.0.0 07/02/2003 10:25:01

(C) Copyright IBM Corporation 1999, 2003