public class DefaultProceduralModule6 extends AbstractModule implements IProceduralModule6, IParameterized
IProductionInstantiator
, IProductionSelector
, and
IConflictSetAssembler
strict harvesting is implemented by
addProductionInternal(IProduction)
. The IProduction
's
ICondition
s 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).http://jactr.org/node/132
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<java.lang.String,IProduction> |
_allProductionsByName |
protected boolean |
_breakExpectedUtilityTiesRandomly |
protected ProductionUtilityComparator |
_comparator |
protected double |
_expectedUtilityNoise |
protected double |
_productionFiringTime |
protected long |
_productionsFired |
protected IRandomModule |
_randomModule |
protected java.util.concurrent.locks.ReentrantReadWriteLock |
_readWriteLock |
static java.lang.String |
ENABLE_PARALLEL_INSTANTIATIONS_PARAM |
static org.apache.commons.logging.Log |
LOGGER
logger definition
|
EXPECTED_UTILITY_NOISE
DEFAULT_PRODUCTION_FIRING_TIME, NUMBER_OF_PRODUCTIONS_FIRED
Constructor and Description |
---|
DefaultProceduralModule6() |
Modifier and Type | Method and Description |
---|---|
void |
addListener(IProceduralModuleListener listener,
java.util.concurrent.Executor executor) |
java.util.concurrent.CompletableFuture<IProduction> |
addProduction(IProduction production)
add this production to procedural memory and check for duplicates
|
protected IProduction |
addProductionInternal(IProduction production) |
protected java.util.Collection<IInstantiation> |
createAndSortInstantiations(java.util.Collection<IProduction> productions)
iterates over productions, attempting to instantiate each.
|
java.util.concurrent.CompletableFuture<IProduction> |
createProduction(java.lang.String name)
create a production, likely backed by the factory
|
protected IProduction |
createProductionInternal(java.lang.String name) |
void |
dispose()
release any resources.
|
protected void |
fireConflictSetAssembled(java.util.Collection<IInstantiation> instances) |
java.util.concurrent.CompletableFuture<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.
|
protected void |
fireProductionAdded(IProduction production) |
protected void |
fireProductionCreated(IProduction production) |
protected void |
fireProductionFired(IInstantiation instantiation) |
protected java.lang.Double |
fireProductionInternal(IInstantiation instantiation,
double firingTime) |
protected void |
fireProductionsMerged(IProduction original,
IProduction duplicate) |
protected void |
fireProductionWillFire(IInstantiation instantiation) |
java.util.concurrent.CompletableFuture<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
|
IConflictSetAssembler |
getConflictSetAssembler() |
protected java.util.Collection<IInstantiation> |
getConflictSetInternal(java.util.Collection<IActivationBuffer> buffers) |
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.CompletableFuture<IProduction> |
getProduction(java.lang.String name)
return the named production
|
IProductionInstantiator |
getProductionInstantiator() |
protected IProduction |
getProductionInternal(java.lang.String name) |
java.util.concurrent.CompletableFuture<java.util.Collection<IProduction>> |
getProductions()
return all the productions
|
IProductionSelector |
getProductionSelector() |
protected java.util.Collection<IProduction> |
getProductionsInternal() |
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.
|
boolean |
isParallelInstantiationsEnabled() |
void |
removeListener(IProceduralModuleListener listener) |
java.util.concurrent.Future<IProduction> |
removeProduction(IProduction production) |
protected IProduction |
removeProductionInternal(IProduction production) |
void |
reset()
reset the module.
|
java.util.concurrent.CompletableFuture<IInstantiation> |
selectInstantiation(java.util.Collection<IInstantiation> instantiations) |
protected IInstantiation |
selectInstantiationInternal(java.util.Collection<IInstantiation> instantiations) |
void |
setConflictSetAssembler(IConflictSetAssembler assembler) |
void |
setDefaultProductionFiringTime(double firingTime) |
void |
setExpectedUtilityNoise(double noise) |
void |
setNumberOfProductionsFired(long fired) |
void |
setParallelInstantiationsEnabled(boolean enable) |
void |
setParameter(java.lang.String key,
java.lang.String value)
Set the named parameter
|
void |
setProductionInstantiator(IProductionInstantiator instantiator) |
void |
setProductionSelector(IProductionSelector selector) |
createBuffers, delayedFuture, delayedFuture, getExecutor, getModel, getName, getSafeName, immediateFuture, immediateReturn, install, setExecutor, uninstall
addAdapterFactory, getAdapter, removeAdapterFactory
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
uninstall
getAdapter
public static final org.apache.commons.logging.Log LOGGER
protected java.util.Map<java.lang.String,IProduction> _allProductionsByName
protected java.util.concurrent.locks.ReentrantReadWriteLock _readWriteLock
protected double _productionFiringTime
protected long _productionsFired
protected boolean _breakExpectedUtilityTiesRandomly
protected double _expectedUtilityNoise
protected ProductionUtilityComparator _comparator
protected IRandomModule _randomModule
public static final java.lang.String ENABLE_PARALLEL_INSTANTIATIONS_PARAM
public void setProductionSelector(IProductionSelector selector)
setProductionSelector
in interface IProceduralModule
public IProductionSelector getProductionSelector()
getProductionSelector
in interface IProceduralModule
public void setProductionInstantiator(IProductionInstantiator instantiator)
setProductionInstantiator
in interface IProceduralModule
public IProductionInstantiator getProductionInstantiator()
getProductionInstantiator
in interface IProceduralModule
public void setConflictSetAssembler(IConflictSetAssembler assembler)
setConflictSetAssembler
in interface IProceduralModule
public IConflictSetAssembler getConflictSetAssembler()
getConflictSetAssembler
in interface IProceduralModule
public void addListener(IProceduralModuleListener listener, java.util.concurrent.Executor executor)
addListener
in interface IProceduralModule
public void removeListener(IProceduralModuleListener listener)
removeListener
in interface IProceduralModule
public void dispose()
IModule
dispose
in interface IModule
dispose
in class AbstractModule
protected void fireProductionCreated(IProduction production)
protected void fireProductionAdded(IProduction production)
protected void fireProductionWillFire(IInstantiation instantiation)
protected void fireProductionFired(IInstantiation instantiation)
protected void fireProductionsMerged(IProduction original, IProduction duplicate)
protected void fireConflictSetAssembled(java.util.Collection<IInstantiation> instances)
public void setParallelInstantiationsEnabled(boolean enable)
public boolean isParallelInstantiationsEnabled()
protected IProduction addProductionInternal(IProduction production)
public java.util.concurrent.CompletableFuture<IProduction> addProduction(IProduction production)
IProceduralModule
addProduction
in interface IProceduralModule
protected IProduction removeProductionInternal(IProduction production)
public java.util.concurrent.Future<IProduction> removeProduction(IProduction production)
protected IProduction createProductionInternal(java.lang.String name)
public java.util.concurrent.CompletableFuture<IProduction> createProduction(java.lang.String name)
IProceduralModule
createProduction
in interface IProceduralModule
protected java.util.Collection<IInstantiation> getConflictSetInternal(java.util.Collection<IActivationBuffer> buffers)
protected java.util.Collection<IInstantiation> createAndSortInstantiations(java.util.Collection<IProduction> productions)
productions
- public java.util.concurrent.CompletableFuture<java.util.Collection<IInstantiation>> getConflictSet(java.util.Collection<IActivationBuffer> buffers)
IProceduralModule
getConflictSet
in interface IProceduralModule
protected IProduction getProductionInternal(java.lang.String name)
public java.util.concurrent.CompletableFuture<IProduction> getProduction(java.lang.String name)
IProceduralModule
getProduction
in interface IProceduralModule
protected IInstantiation selectInstantiationInternal(java.util.Collection<IInstantiation> instantiations)
public java.util.concurrent.CompletableFuture<IInstantiation> selectInstantiation(java.util.Collection<IInstantiation> instantiations)
selectInstantiation
in interface IProceduralModule
protected java.lang.Double fireProductionInternal(IInstantiation instantiation, double firingTime)
public java.util.concurrent.CompletableFuture<java.lang.Double> fireProduction(IInstantiation instantiation, double firingTime)
IProceduralModule
fireProduction
in interface IProceduralModule
firingTime
- TODOpublic double getDefaultProductionFiringTime()
IProceduralModule
getDefaultProductionFiringTime
in interface IProceduralModule
public void setDefaultProductionFiringTime(double firingTime)
setDefaultProductionFiringTime
in interface IProceduralModule
public void initialize()
IModule
initialize
in interface IModule
initialize
in interface IInitializable
initialize
in class AbstractModule
public double getExpectedUtilityNoise()
getExpectedUtilityNoise
in interface IProceduralModule6
public long getNumberOfProductionsFired()
getNumberOfProductionsFired
in interface IProceduralModule
public void setExpectedUtilityNoise(double noise)
setExpectedUtilityNoise
in interface IProceduralModule6
public void setNumberOfProductionsFired(long fired)
setNumberOfProductionsFired
in interface IProceduralModule
protected java.util.Collection<IProduction> getProductionsInternal()
public java.util.concurrent.CompletableFuture<java.util.Collection<IProduction>> getProductions()
IProceduralModule
getProductions
in interface IProceduralModule
public java.lang.String getParameter(java.lang.String key)
IParameterized
getParameter
in interface IParameterized
key
- Description of the ParameterIParameterized.getParameter(java.lang.String)
public java.util.Collection<java.lang.String> getPossibleParameters()
IParameterized
getPossibleParameters
in interface IParameterized
IParameterized.getPossibleParameters()
public java.util.Collection<java.lang.String> getSetableParameters()
IParameterized
getSetableParameters
in interface IParameterized
IParameterized.getSetableParameters()
public void setParameter(java.lang.String key, java.lang.String value)
IParameterized
setParameter
in interface IParameterized
IParameterized.setParameter(java.lang.String,
java.lang.String)