ABLE 2.3.0 07/13/2005 14:21:00

com.ibm.able.autotune
Class BasicNeuralAutotuneController

java.lang.Object
  extended bycom.ibm.able.AbleObject
      extended bycom.ibm.able.AbleDefaultAgent
          extended bycom.ibm.able.autotune.BaseAutotuneController
              extended bycom.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, properties, 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
 AutotuneAdaptor getAdaptor()
           
 java.lang.String getControllerDataSetFileName()
           
 java.lang.String getModelDataSetFileName()
           
 void init()
          Initialize the agent.
 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, getEventConnections, getNumEpochs, getProcessList, getUserDefinedFunction, getUserDefinedFunctions, handleAbleEvent, initAllBeans, invokeUserDefinedFunction, isActiveDataSource, propertyChange, quitAll, quitEnabledEventProcessing, removeAllBeans, removeAllConnections, removeAllEventConnections, removeBean, removeBean, removeBeans, removeEventConnection, removeUserDefinedFunction, reset, resetAllBeans, 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, getInputBufferAsString, getInputBufferAsStringArray, getInputBufferContents, getLogger, getName, getOutputBuffer, getOutputBuffer, getOutputBufferAsString, getOutputBufferAsStringArray, getOutputBufferContents, getParent, getProperties, getProperty, getPropertyChangeListeners, 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, removeProperty, removePropertyChangeListener, removePropertyConnection, removeSourceBufferConnection, removeStateChangeListener, restartEnabledEventProcessing, restoreFromFile, restoreFromFile, restoreFromSerializedFile, restoreFromStream, resumeEnabledEventProcessing, saveToFile, saveToFile, setAbleEventProcessingEnabled, setChanged, setComment, setFileName, setInputBuffer, setInputBuffer, setLogger, setName, setOutputBuffer, setOutputBuffer, setParent, setProperties, setProperty, 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, getProperties, getProperty, getState, getTraceLogger, init, isChanged, process, removeProperty, setChanged, setComment, setLogger, setName, setParent, setProperties, setProperty, setState, setTraceLogger
 
Methods inherited from interface com.ibm.able.AbleDataBufferManager
addDestBufferConnection, addSourceBufferConnection, getDestBufferConnections, getInputBuffer, getInputBuffer, getInputBufferAsString, getInputBufferAsStringArray, getInputBufferContents, getOutputBuffer, getOutputBuffer, getOutputBufferAsString, 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, getPropertyChangeListeners, 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 class: AbleDefaultAgent
Initialize the agent. This implementation simply calls super.init() to set the agent state.

Contained beans are not initialized explicitly because some agents manage their contained beans directly. To initialize all contained beans, use AbleDefaultAgent.initAllBeans().

Specified by:
init in interface AbleBean
Overrides:
init in class AbleDefaultAgent
Throws:
AbleException
See Also:
AbleObject.init()

process

public void process()
             throws AbleException
do a single control cycle

Specified by:
process in interface AbleBean
Overrides:
process in class 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

Throws:
AbleException

trainController

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

Throws:
AbleException

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
Throws:
AbleException

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
Throws:
AbleException

ABLE 2.3.0 07/13/2005 14:21:00

(C) Copyright IBM Corporation 1999, 2005