package nars.config;
import java.util.concurrent.atomic.AtomicInteger;
import nars.language.Interval.AtomicDuration;
import com.google.common.util.concurrent.AtomicDouble;
import java.io.Serializable;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import nars.control.DerivationContext.DerivationFilter;
/**
* NAR Parameters which can be changed during runtime.
*/
public class RuntimeParameters implements Serializable {
public RuntimeParameters() { }
/** Silent threshold for task reporting, in [0, 100].
* Noise level = 100 - silence level; noise 0 = always silent, noise 100 = never silent
*/
public final AtomicInteger noiseLevel = new AtomicInteger(100);
/**
Cycles per duration.
Past/future tense usage convention;
How far away "past" and "future" is from "now", in cycles.
The range of "now" is [-DURATION/2, +DURATION/2]; */
public final AtomicDuration duration = new AtomicDuration(Parameters.DURATION);
/** Concept decay rate in ConceptBag, in [1, 99]. originally: CONCEPT_FORGETTING_CYCLE
* How many cycles it takes an item to decay completely to a threshold value (ex: 0.1).
* Lower means faster rate of decay.
*/
public final AtomicDouble conceptForgetDurations = new AtomicDouble(2.0);
/** TermLink decay rate in TermLinkBag, in [1, 99]. originally: TERM_LINK_FORGETTING_CYCLE */
public final AtomicDouble termLinkForgetDurations = new AtomicDouble(10.0);
/** TaskLink decay rate in TaskLinkBag, in [1, 99]. originally: TASK_LINK_FORGETTING_CYCLE */
public final AtomicDouble taskLinkForgetDurations = new AtomicDouble(4.0);
/** Sequence bag forget durations **/
public final AtomicDouble sequenceForgetDurations = new AtomicDouble(4.0);
/** novel task bag forget duration **/
public final AtomicDouble novelTaskForgetDurations = new AtomicDouble(2.0);
/** Minimum expectation for a desire value.
* the range of "now" is [-DURATION, DURATION]; */
public final AtomicDouble decisionThreshold = new AtomicDouble(0.51);
// //let NARS use NARS+ ideas (counting etc.)
// public final AtomicBoolean experimentalNarsPlus = new AtomicBoolean();
//
// //let NARS use NAL9 operators to perceive its own mental actions
// public final AtomicBoolean internalExperience = new AtomicBoolean();
//these two are AND-coupled:
//when a concept is important and exceeds a syntactic complexity, let NARS name it:
//public final AtomicInteger abbreviationMinComplexity = new AtomicInteger();
//public final AtomicDouble abbreviationMinQuality = new AtomicDouble();
public List<DerivationFilter> defaultDerivationFilters = new ArrayList();
public final List<DerivationFilter> getDerivationFilters() {
return defaultDerivationFilters;
}
}