com.ibm.able.autotune
Class Neural2WayLoadBalanceController
java.lang.Object
com.ibm.able.AbleObject
com.ibm.able.AbleDefaultAgent
com.ibm.able.autotune.BaseAutotuneController
com.ibm.able.autotune.Neural2WayLoadBalanceController
- 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 Neural2WayLoadBalanceController
- 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 MUST match the adaptor metric names exactly
2. instantiate a neural controller agent
3. specify the metadata file for the model neural prediction agent
4. specify the metadata file for the controller neural prediction agent
5. Select the metrics ... must be superset of those fields named in the 2 dfn files
6. Select the 2 service level metrics and the target tuning control metric
7. Initialize the controller to generate the 2 prediction agents
8. Go to the model and train it off-line
9. Run the autotune agent
- See Also:
- Serialized Form
| 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 |
| 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.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.AbleEventQueueManager |
flushAbleEventQueue, getAbleEventProcessingEnabled, getAbleEventQueueSize, getSleepTime, isAbleEventPostingEnabled, isAbleEventProcessingEnabled, isTimerEventProcessingEnabled, restartEnabledEventProcessing, resumeEnabledEventProcessing, setAbleEventProcessingEnabled, setSleepTime, setTimerEventProcessingEnabled, startEnabledEventProcessing, suspendEnabledEventProcessing |
MODEL_CONTROL_INDEX
public static final int MODEL_CONTROL_INDEX
- See Also:
- Constant Field Values
CONTROLLER_CONTROL_INDEX
public static final int CONTROLLER_CONTROL_INDEX
- See Also:
- Constant Field Values
modelControlIndex
protected int modelControlIndex
controllerControlIndex
protected int controllerControlIndex
adaptor
protected AutotuneAdaptor adaptor
controller
protected AbleNeuralPredictionAgent controller
model
protected AbleNeuralPredictionAgent model
DefaultModelDataSetFileName
public static final java.lang.String DefaultModelDataSetFileName
- See Also:
- Constant Field Values
modelDataSetFileName
protected java.lang.String modelDataSetFileName
DefaultControllerDataSetFileName
public static final java.lang.String DefaultControllerDataSetFileName
- See Also:
- Constant Field Values
controllerDataSetFileName
protected java.lang.String controllerDataSetFileName
controls
protected double[] controls
lastError
protected double lastError
error
protected double error
changeInError
protected double changeInError
force
protected double force
modelControlError
protected double modelControlError
serviceLevelMetricA
protected AutotuneServiceLevelMetric serviceLevelMetricA
serviceLevelMetricB
protected AutotuneServiceLevelMetric serviceLevelMetricB
loadBalanceTuningControlMetric
protected AutotuneTuningControlMetric loadBalanceTuningControlMetric
Neural2WayLoadBalanceController
public Neural2WayLoadBalanceController()
throws AbleException
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()
setServiceLevelMetricA
public void setServiceLevelMetricA(AutotuneServiceLevelMetric metric)
getServiceLevelMetricA
public AutotuneServiceLevelMetric getServiceLevelMetricA()
setServiceLevelMetricB
public void setServiceLevelMetricB(AutotuneServiceLevelMetric metric)
getServiceLevelMetricB
public AutotuneServiceLevelMetric getServiceLevelMetricB()
setLoadBalanceTuningControlMetric
public void setLoadBalanceTuningControlMetric(AutotuneTuningControlMetric metric)
getLoadBalanceTuningControlMetric
public AutotuneTuningControlMetric getLoadBalanceTuningControlMetric()
getLastError
public double getLastError()
getError
public double getError()
getChangeInError
public double getChangeInError()
getForce
public double getForce()
getModelControlError
public double getModelControlError()
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
setControlActions
public void setControlActions()
throws AbleException
- Description copied from interface:
AutotuneController
- Set the control actions of the target system or application.
- Specified by:
setControlActions in interface AutotuneController- Overrides:
setControlActions in class BaseAutotuneController
- Throws:
AbleException
(C) Copyright IBM Corporation 1999, 2005