package org.jactr.core.module.declarative.search.filter; import org.jactr.core.chunk.IChunk; import org.jactr.core.chunk.ISubsymbolicChunk; /* * default logging */ /** * policies that define how components should treat activation. noise, if * enabled, is always included * * @author harrison */ public enum ActivationPolicy { /** * summing of base, spread */ SUMMATION { @Override protected double getActivationForPolicy(ISubsymbolicChunk chunk) { return chunk.getActivation(); } }, /** * just consider the spreading portion */ SPREAD { @Override protected double getActivationForPolicy(ISubsymbolicChunk chunk) { return chunk.getRandomActivation() + chunk.getSpreadingActivation(); } }, /** * just consider baselevel */ BASELEVEL { @Override protected double getActivationForPolicy(ISubsymbolicChunk chunk) { return chunk.getRandomActivation() + chunk.getBaseLevelActivation(); } }, /** * max(spread, base) */ MAX { @Override protected double getActivationForPolicy(ISubsymbolicChunk chunk) { return chunk.getRandomActivation() + Math.max(chunk.getBaseLevelActivation(), chunk.getSpreadingActivation()); } }, /** * min(spread, base) */ MIN { @Override protected double getActivationForPolicy(ISubsymbolicChunk chunk) { return chunk.getRandomActivation() + Math.min(chunk.getBaseLevelActivation(), chunk.getSpreadingActivation()); } }; public double getActivation(IChunk chunk) { ISubsymbolicChunk ssc = chunk.getSubsymbolicChunk(); return getActivationForPolicy(ssc); } abstract protected double getActivationForPolicy(ISubsymbolicChunk chunk); }