use of nars.task.Tasked in project narchy by automenta.
the class RTreeBeliefTable method add.
@Override
public boolean add(Task x, TaskConcept c, NAR n) {
if (capacity() == 0)
return false;
float incoming = x.priElseZero();
List<Tasked> added = new FasterList<>(2);
write(treeRW -> {
if (treeRW.add(x)) {
if (!x.isDeleted()) {
added.add(x);
ensureCapacity(treeRW, x, added::add, n);
}
}
});
for (int i = 0, addedSize = added.size(); i < addedSize; i++) {
Task y = added.get(i).task();
if (y != null) {
// completely activate a temporal task being stored in this table
float pri = y.pri();
if (pri == pri) {
Tasklinks.linkTask(y, pri, c, n);
}
} else {
// eternal task input already done by calling the .task() method. it willl have returned null
}
}
if (x.isDeleted()) {
Task xisting = x.meta("merge");
if (xisting != null) {
// use incoming priority but the existing task instance
Tasklinks.linkTask(xisting, incoming, c, n);
}
return false;
} else {
return true;
}
}
use of nars.task.Tasked in project narchy by automenta.
the class TestNAR method mustEmit.
@NotNull
TestNAR mustEmit(@NotNull Topic<Tasked>[] c, long cycleStart, long cycleEnd, @NotNull String sentenceTerm, byte punc, float freqMin, float freqMax, float confMin, float confMax, LongPredicate start, LongPredicate end, boolean must) throws Narsese.NarseseException {
if (freqMin == -1)
freqMin = freqMax;
int tt = temporalTolerance;
cycleStart -= tt;
cycleEnd += tt;
float hf = freqTolerance / 2.0f;
float hc = confTolerance / 2.0f;
TaskCondition tc = new TaskCondition(nar, cycleStart, cycleEnd, sentenceTerm, punc, freqMin - hf, freqMax + hf, confMin - hc, confMax + hc, start, end);
for (Topic<Tasked> cc : c) {
cc.on(tc);
}
finished = false;
if (must) {
succeedsIfAll.add(tc);
} else {
// require entire execution, not just finish early
exitOnAllSuccess = false;
failsIfAny.add(tc);
}
return this;
//
// ExplainableTask et = new ExplainableTask(tc);
// if (showExplanations) {
// explanations.add(et);
// }
// return et;
}
Aggregations