edu.iastate.jrelm.rl.bushmosteller
Class GBMParameters

java.lang.Object
  extended by edu.iastate.jrelm.rl.bushmosteller.GBMParameters
All Implemented Interfaces:
RLParameters
Direct Known Subclasses:
LinearGBMParameters

public abstract class GBMParameters
extends java.lang.Object
implements RLParameters

This is an abstract class to guide the implementation of Generalized Bush-Mosteller learning parameters. Specifically, GeneralizedBMParameters child classes should specifiy a reinforcement strength modifier function that will be used in updating Policies. This is done by implementing the abstract feedbackModifier(double) function. In effect, we are distributing the implementation of Generalized Bush-Mosteller learning algorithms accross the parameters and learner objects. See the documentation of feedbackModifier() for guidance and constraints on implemention.

Author:
Charles Gieseler
See Also:
#feedbackModifier(double)} Note, classes in JReLM implementing Bush-Mosteller learning models are based on Th. Brenner's descriptions in "Agent Learning Representations," Chapter 18 of The Handbook of Computational Economics, vol 2. See: Leigh Tesfatsion , Kenneth L. Judd, Handbook of Computational Economics, Volume 2: Agent-Based Computational Economics (Handbook of Computational Economics), North-Holland Publishing Co., Amsterdam, The Netherlands, 2006

Constructor Summary
GBMParameters()
           
 
Method Summary
abstract  double feedbackModifier(double reinforcementStrength)
          Bush-Mosteller learning uses a function v(r) in updating action choice selection probabilities.
abstract  java.lang.String getName()
          Get the name of the algorithm these parameters are for.
 java.lang.String[] getParameterNames()
          Get a the names of the parameters
 int getRandomSeed()
          Get the seed for the psuedo-random number generator used by the ReinforcementLearner.
 void setRandomSeed(int newSeed)
           
abstract  boolean validateParameters()
          This method should be implememted in child classes to validate current parameter settings.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GBMParameters

public GBMParameters()
Method Detail

feedbackModifier

public abstract double feedbackModifier(double reinforcementStrength)
Bush-Mosteller learning uses a function v(r) in updating action choice selection probabilities. Here r is a reinforcement strength value resulting from the last action chosen. Essentially v(r) yields a modified feedback value, associated with the last selected action choice, that is then used in updating a Policy according to generalize Bush-Mosteller learning. Note, v(r) must be monotonically increasing in r, for r > 0, where v(0) = 0 and 0 <= v(r) <= 1.

Parameters:
reinforcementStrength -
Returns:
modified reinforcement strength

validateParameters

public abstract boolean validateParameters()
This method should be implememted in child classes to validate current parameter settings.

Specified by:
validateParameters in interface RLParameters
Returns:
true if all parameter values are valid, false otherwise.

getName

public abstract java.lang.String getName()
Description copied from interface: RLParameters
Get the name of the algorithm these parameters are for.

Specified by:
getName in interface RLParameters
Returns:
String name of the algorithm.

getParameterNames

public java.lang.String[] getParameterNames()
Description copied from interface: RLParameters
Get a the names of the parameters

Specified by:
getParameterNames in interface RLParameters
Returns:
Array of parameter names as String

setRandomSeed

public void setRandomSeed(int newSeed)

getRandomSeed

public int getRandomSeed()
Description copied from interface: RLParameters
Get the seed for the psuedo-random number generator used by the ReinforcementLearner. This parameter will be common to most (if not all) learners. Random seeds need to be included as learner parameters to facilitate the assignment of separate seeds to individual learners. This is necessary for certain situations where variations in behavior accross learners needs to be forced. For example, learners embedded in separate agents will likely need different seeds to avoid identical starting behavior, unless they are intialized with policies.

Specified by:
getRandomSeed in interface RLParameters
Returns: