package org.jactr.core.module.declarative.four; /* * default logging */ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jactr.core.chunk.IChunk; import org.jactr.core.chunk.basic.AbstractSubsymbolicChunk; import org.jactr.core.logging.Logger; import org.jactr.core.logging.Logger.Stream; import org.jactr.core.model.IModel; /** * Noop base level act equation that passes back the chunk's base level if it is * defined, if not, it passes back base level constant. Assumes * AbstractSubsymbolicChunk * * @author harrison */ public class DefaultBaseLevelActivationEquation implements IBaseLevelActivationEquation { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(DefaultBaseLevelActivationEquation.class); private IDeclarativeModule4 _declarativeModule; public DefaultBaseLevelActivationEquation(IDeclarativeModule4 decM) { _declarativeModule = decM; } public double computeBaseLevelActivation(IModel model, IChunk c) { double base = c.getSubsymbolicChunk().getBaseLevelActivation(); if (Double.isNaN(base)) base = _declarativeModule.getBaseLevelConstant(); if (Logger.hasLoggers(model)) Logger.log(model, Stream.ACTIVATION, String.format("%s.base = %.2f", c, base)); return base; } @Override public String getName() { return "base-static"; } @Override public double computeAndSetActivation(IChunk chunk, IModel model) { double base = computeBaseLevelActivation(model, chunk); ((AbstractSubsymbolicChunk) chunk.getSubsymbolicChunk()) .setBaseLevelActivation(base); return base; } }