org.jactr.core.module.procedural.six
Class DefaultProceduralModule6

java.lang.Object
  extended by org.jactr.core.module.AbstractModule
      extended by org.jactr.core.module.procedural.six.DefaultProceduralModule6
All Implemented Interfaces:
IModule, IProceduralModule, IProceduralModule6, IInitializable, IInstallable, IParameterized

public class DefaultProceduralModule6
extends AbstractModule
implements IProceduralModule6, IParameterized

strict harvesting is implemented by addProductionInternal(IProduction). The IProduction's IConditions are checked. If they are IBufferCondition, it checks to see if IActivationBuffer.isStrictHarvestingEnabled() and if so, ensures that there is an IBufferAction for that buffer as well, if not, an RemoveAction is added (and therefore the production explicitly removes the chunk).

Author:
harrison

Field Summary
static org.apache.commons.logging.Log LOGGER
          logger definition
 
Fields inherited from interface org.jactr.core.module.procedural.six.IProceduralModule6
EXPECTED_UTILITY_NOISE
 
Fields inherited from interface org.jactr.core.module.procedural.IProceduralModule
DEFAULT_PRODUCTION_FIRING_TIME, NUMBER_OF_PRODUCTIONS_FIRED
 
Constructor Summary
DefaultProceduralModule6()
           
 
Method Summary
 void addListener(IProceduralModuleListener listener, java.util.concurrent.Executor executor)
           
 java.util.concurrent.Future<IProduction> addProduction(IProduction production)
          add this production to procedural memory and check for duplicates
 java.util.concurrent.Future<IProduction> createProduction(java.lang.String name)
          create a production, likely backed by the factory
 void dispose()
          release any resources.
 java.util.concurrent.Future<java.lang.Double> fireProduction(IInstantiation instantiation, double firingTime)
          actually executed the production returning the amount of time it took to fire this production and fire notification events.
 java.util.concurrent.Future<java.util.Collection<IInstantiation>> getConflictSet(java.util.Collection<IActivationBuffer> buffers)
          find the set of production instantiations that can fire based on the state of the buffers and fire the notification events
 double getDefaultProductionFiringTime()
          the default production firing time, aka default action time
 double getExpectedUtilityNoise()
           
 long getNumberOfProductionsFired()
           
 java.lang.String getParameter(java.lang.String key)
          return parameter value - null if not defined.
 java.util.Collection<java.lang.String> getPossibleParameters()
          Return all parameters that can be read
 java.util.concurrent.Future<IProduction> getProduction(java.lang.String name)
          return the named production
 java.util.concurrent.Future<java.util.Collection<IProduction>> getProductions()
          return all the productions
 java.util.Collection<java.lang.String> getSetableParameters()
          Return list of all parameters that can be set.
 void initialize()
          this will be called after all the modules have been installed permitting the module to attach listeners to other modules.
 void removeListener(IProceduralModuleListener listener)
           
 java.util.concurrent.Future<IProduction> removeProduction(IProduction production)
           
 void reset()
          reset the module.
 java.util.concurrent.Future<IInstantiation> selectInstantiation(java.util.Collection<IInstantiation> instantiations)
           
 void setDefaultProductionFiringTime(double firingTime)
           
 void setExpectedUtilityNoise(double noise)
           
 void setNumberOfProductionsFired(long fired)
           
 void setParameter(java.lang.String key, java.lang.String value)
          Set the named parameter
 void setProductionInstantiator(IProductionInstantiator instantiator)
           
 void setProductionSelector(IProductionSelector selector)
           
 
Methods inherited from class org.jactr.core.module.AbstractModule
delayedFuture, getExecutor, getModel, getName, immediateFuture, immediateReturn, install, uninstall
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jactr.core.module.IModule
getModel, getName, install
 
Methods inherited from interface org.jactr.core.utils.IInstallable
uninstall
 

Field Detail

LOGGER

public static final org.apache.commons.logging.Log LOGGER
logger definition

Constructor Detail

DefaultProceduralModule6

public DefaultProceduralModule6()
Method Detail

setProductionSelector

public void setProductionSelector(IProductionSelector selector)
Specified by:
setProductionSelector in interface IProceduralModule

setProductionInstantiator

public void setProductionInstantiator(IProductionInstantiator instantiator)
Specified by:
setProductionInstantiator in interface IProceduralModule

addListener

public void addListener(IProceduralModuleListener listener,
                        java.util.concurrent.Executor executor)
Specified by:
addListener in interface IProceduralModule

removeListener

public void removeListener(IProceduralModuleListener listener)
Specified by:
removeListener in interface IProceduralModule

dispose

public void dispose()
Description copied from interface: IModule
release any resources. this should only be called by the model during its own dispose method (assuming that this module is still installed) and should not result in the propogation of ANY events. The module should dispose of all its resources, including buffers

Specified by:
dispose in interface IModule
Overrides:
dispose in class AbstractModule

addProduction

public java.util.concurrent.Future<IProduction> addProduction(IProduction production)
Description copied from interface: IProceduralModule
add this production to procedural memory and check for duplicates

Specified by:
addProduction in interface IProceduralModule
Returns:

removeProduction

public java.util.concurrent.Future<IProduction> removeProduction(IProduction production)

createProduction

public java.util.concurrent.Future<IProduction> createProduction(java.lang.String name)
Description copied from interface: IProceduralModule
create a production, likely backed by the factory

Specified by:
createProduction in interface IProceduralModule
Returns:

getConflictSet

public java.util.concurrent.Future<java.util.Collection<IInstantiation>> getConflictSet(java.util.Collection<IActivationBuffer> buffers)
Description copied from interface: IProceduralModule
find the set of production instantiations that can fire based on the state of the buffers and fire the notification events

Specified by:
getConflictSet in interface IProceduralModule
Returns:

getProduction

public java.util.concurrent.Future<IProduction> getProduction(java.lang.String name)
Description copied from interface: IProceduralModule
return the named production

Specified by:
getProduction in interface IProceduralModule
Returns:

selectInstantiation

public java.util.concurrent.Future<IInstantiation> selectInstantiation(java.util.Collection<IInstantiation> instantiations)
Specified by:
selectInstantiation in interface IProceduralModule

fireProduction

public java.util.concurrent.Future<java.lang.Double> fireProduction(IInstantiation instantiation,
                                                                    double firingTime)
Description copied from interface: IProceduralModule
actually executed the production returning the amount of time it took to fire this production and fire notification events. This should catch and ModelTerminatedException and return Double.NaN if it catches it

Specified by:
fireProduction in interface IProceduralModule
firingTime - TODO
Returns:

getDefaultProductionFiringTime

public double getDefaultProductionFiringTime()
Description copied from interface: IProceduralModule
the default production firing time, aka default action time

Specified by:
getDefaultProductionFiringTime in interface IProceduralModule
Returns:

setDefaultProductionFiringTime

public void setDefaultProductionFiringTime(double firingTime)
Specified by:
setDefaultProductionFiringTime in interface IProceduralModule

initialize

public void initialize()
Description copied from interface: IModule
this will be called after all the modules have been installed permitting the module to attach listeners to other modules. if you want to get access to chunks,types, or productions before the model runs, attach a model listener and do that during the modelStarted call

Specified by:
initialize in interface IModule
Specified by:
initialize in interface IInitializable
Specified by:
initialize in class AbstractModule

getExpectedUtilityNoise

public double getExpectedUtilityNoise()
Specified by:
getExpectedUtilityNoise in interface IProceduralModule6

getNumberOfProductionsFired

public long getNumberOfProductionsFired()
Specified by:
getNumberOfProductionsFired in interface IProceduralModule
Returns:

setExpectedUtilityNoise

public void setExpectedUtilityNoise(double noise)
Specified by:
setExpectedUtilityNoise in interface IProceduralModule6

setNumberOfProductionsFired

public void setNumberOfProductionsFired(long fired)
Specified by:
setNumberOfProductionsFired in interface IProceduralModule

getProductions

public java.util.concurrent.Future<java.util.Collection<IProduction>> getProductions()
Description copied from interface: IProceduralModule
return all the productions

Specified by:
getProductions in interface IProceduralModule
Returns:

getParameter

public java.lang.String getParameter(java.lang.String key)
Description copied from interface: IParameterized
return parameter value - null if not defined.

Specified by:
getParameter in interface IParameterized
Parameters:
key - Description of the Parameter
Returns:
The parameter value
See Also:
IParameterized.getParameter(java.lang.String)

getPossibleParameters

public java.util.Collection<java.lang.String> getPossibleParameters()
Description copied from interface: IParameterized
Return all parameters that can be read

Specified by:
getPossibleParameters in interface IParameterized
Returns:
The possibleParameters value
See Also:
IParameterized.getPossibleParameters()

getSetableParameters

public java.util.Collection<java.lang.String> getSetableParameters()
Description copied from interface: IParameterized
Return list of all parameters that can be set.

Specified by:
getSetableParameters in interface IParameterized
Returns:
The setableParameters value
See Also:
IParameterized.getSetableParameters()

setParameter

public void setParameter(java.lang.String key,
                         java.lang.String value)
Description copied from interface: IParameterized
Set the named parameter

Specified by:
setParameter in interface IParameterized
See Also:
IParameterized.setParameter(java.lang.String, java.lang.String)

reset

public void reset()
Description copied from interface: IModule
reset the module. This will typically clear the owned buffers and abort any module specific operations

Specified by:
reset in interface IModule