org.joone.engine.extenders
Class SimulatedAnnealingExtender

java.lang.Object
  extended by org.joone.engine.extenders.LearnerExtender
      extended by org.joone.engine.extenders.DeltaRuleExtender
          extended by org.joone.engine.extenders.SimulatedAnnealingExtender

public class SimulatedAnnealingExtender
extends DeltaRuleExtender

Simulated annealing (SA) refers to the process in which random or thermal noise in a system is systematically decreased over time so as to enhance the system's response. Basically the change of weights and biases in SA is defined as: dW = dw + (n)(r)(2^-kt), where dw is the weight / bias change produced by standard back propagation, n is a constant controlling the initial intensity of the noise, k is the decay constant,t is the generation counter and r is a random number.

Author:
Boris Jansen

Constructor Summary
SimulatedAnnealingExtender()
          Creates a new instance of SimulatedAnnealingExtender
 
Method Summary
 double getDelta(double[] currentGradientOuts, int j, double aPreviousDelta)
          Computes the delta value for a bias.
 double getDelta(double[] currentInps, int j, double[] currentPattern, int k, double aPreviousDelta)
          Computes the delta value for a weight.
 double getK()
          Gets the noise decay constant.
 double getN()
          Gets the constant controlling the initial noise.
protected  double getRandom()
          Gets a random value between the random boundary.
 double getRandomBoundary()
          Gets the random number boundary.
 void postBiasUpdate(double[] currentGradientOuts)
          Gives extenders a change to do some post-computing after the biases are updated.
 void postWeightUpdate(double[] currentPattern, double[] currentInps)
          Gives extenders a change to do some post-computing after the weights are updated.
 void preBiasUpdate(double[] currentGradientOuts)
          Gives extenders a change to do some pre-computing before the biases are updated.
 void preWeightUpdate(double[] currentPattern, double[] currentInps)
          Gives extenders a change to do some pre-computing before the weights are updated.
 void setK(double aK)
          Sets the noise decay constant.
 void setN(double aN)
          Sets the constant controlling the initial noise.
 void setRandomBoundary(double aBoundary)
          Sets the noise decay constant.
 
Methods inherited from class org.joone.engine.extenders.LearnerExtender
getLearner, isEnabled, setEnabled, setLearner
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimulatedAnnealingExtender

public SimulatedAnnealingExtender()
Creates a new instance of SimulatedAnnealingExtender

Method Detail

getDelta

public double getDelta(double[] currentGradientOuts,
                       int j,
                       double aPreviousDelta)
Description copied from class: DeltaRuleExtender
Computes the delta value for a bias.

Specified by:
getDelta in class DeltaRuleExtender
Parameters:
currentGradientOuts - the back propagated gradients.
j - the index of the bias.
aPreviousDelta - a delta value calculated by a previous delta extender.

getDelta

public double getDelta(double[] currentInps,
                       int j,
                       double[] currentPattern,
                       int k,
                       double aPreviousDelta)
Description copied from class: DeltaRuleExtender
Computes the delta value for a weight.

Specified by:
getDelta in class DeltaRuleExtender
Parameters:
currentInps - the forwarded input.
j - the input index of the weight.
currentPattern - the back propagated gradients.
k - the output index of the weight.
aPreviousDelta - a delta value calculated by a previous delta extender.

postBiasUpdate

public void postBiasUpdate(double[] currentGradientOuts)
Description copied from class: LearnerExtender
Gives extenders a change to do some post-computing after the biases are updated.

Specified by:
postBiasUpdate in class LearnerExtender
Parameters:
currentGradientOuts - the back propagated gradients.

postWeightUpdate

public void postWeightUpdate(double[] currentPattern,
                             double[] currentInps)
Description copied from class: LearnerExtender
Gives extenders a change to do some post-computing after the weights are updated.

Specified by:
postWeightUpdate in class LearnerExtender
Parameters:
currentPattern - the back propagated gradients.
currentInps - the forwarded input.

preBiasUpdate

public void preBiasUpdate(double[] currentGradientOuts)
Description copied from class: LearnerExtender
Gives extenders a change to do some pre-computing before the biases are updated.

Specified by:
preBiasUpdate in class LearnerExtender
Parameters:
currentGradientOuts - the back propagated gradients.

preWeightUpdate

public void preWeightUpdate(double[] currentPattern,
                            double[] currentInps)
Description copied from class: LearnerExtender
Gives extenders a change to do some pre-computing before the weights are updated.

Specified by:
preWeightUpdate in class LearnerExtender
Parameters:
currentPattern - the back propagated gradients.
currentInps - the forwarded input.

getN

public double getN()
Gets the constant controlling the initial noise.

Returns:
the constant controlling the initial noise.

setN

public void setN(double aN)
Sets the constant controlling the initial noise.

Parameters:
aN - the constant controlling the initial noise.

getK

public double getK()
Gets the noise decay constant.

Returns:
the noise decay constant.

setK

public void setK(double aK)
Sets the noise decay constant.

Parameters:
aK - the noise decay constant.

getRandomBoundary

public double getRandomBoundary()
Gets the random number boundary.

Returns:
the random number boundary.

setRandomBoundary

public void setRandomBoundary(double aBoundary)
Sets the noise decay constant.

Parameters:
aK - the noise decay constant.

getRandom

protected double getRandom()
Gets a random value between the random boundary.

Returns:
a random value between the random boundary.


Submit Feedback to pmarrone@users.sourceforge.net