use of nars.storage.LevelBag in project opennars by opennars.
the class BagIteratorTest method testBagIterator.
public void testBagIterator(Bag<NullItem, CharSequence> b) {
b.putIn(new NullItem(0.1f));
b.putIn(new NullItem(0.2f));
b.putIn(new NullItem(0.3f));
b.putIn(new NullItem(0.4f));
b.putIn(new NullItem(0.5f));
b.putIn(new NullItem(0.6f));
b.putIn(new NullItem(0.7f));
b.putIn(new NullItem(0.8f));
if (b instanceof LevelBag)
assert (((LevelBag) b).numEmptyLevels() < L);
testIterator(b);
b.clear();
testIterator(b);
b.putIn(new NullItem(0.6f));
testIterator(b);
}
use of nars.storage.LevelBag in project opennars by opennars.
the class BagOperationsTest method testBagSequence.
public static void testBagSequence(Bag b) {
// different id, different priority
b.putIn(makeConcept("a", 0.1f));
b.putIn(makeConcept("b", 0.15f));
assertEquals(2, b.size());
b.clear();
// same priority, different id
b.putIn(makeConcept("a", 0.1f));
b.putIn(makeConcept("b", 0.1f));
assertEquals(2, b.size());
b.putIn(makeConcept("c", 0.2f));
assertEquals(2, b.size());
assertEquals(0.1f, b.getMinPriority(), 0.001f);
assertEquals(0.2f, b.getMaxPriority(), 0.001f);
// if (b instanceof GearBag()) return;
b.putIn(makeConcept("b", 0.4f));
assertEquals(2, b.size());
assertEquals(0.2f, b.getMinPriority(), 0.001f);
assertEquals(0.4f, b.getMaxPriority(), 0.001f);
Item tb = b.take(new Term("b"));
assertTrue(tb != null);
assertEquals(1, b.size());
assertEquals(0.4f, tb.getPriority(), 0.001f);
Item tc = b.takeNext();
assertEquals(0, b.size());
assertEquals(0.2f, tc.getPriority(), 0.001f);
assertEquals(null, b.putIn(makeConcept("a", 0.2f)));
assertEquals(null, b.putIn(makeConcept("b", 0.3f)));
if (b instanceof LevelBag) {
// replaces item on level
assertEquals("a", b.putIn(makeConcept("c", 0.1f)).name().toString());
}
}
use of nars.storage.LevelBag in project opennars by opennars.
the class SpatialSamplingVisionChannel method AddToSpatialBag.
public void AddToSpatialBag(Task t) {
int x = t.getTerm().term_indices[2];
int y = t.getTerm().term_indices[3];
if (spatialbag[y][x] == null) {
spatialbag[y][x] = new LevelBag(100, 100);
}
t.incPriority((float) this.topDownPriority(t.getTerm()));
spatialbag[y][x].putIn(t);
Position pos = new Position();
pos.X = x;
pos.Y = y;
// another vote for this position
sampling.add(pos);
}
use of nars.storage.LevelBag in project opennars by opennars.
the class BagPerf method testBag.
public void testBag(final boolean arraylist, final int levels, final int capacity, final PortableDouble forgetRate) {
totalPriority = 0;
totalMass = 0;
totalMaxItemsPerLevel = totalMinItemsPerLevel = 0;
Performance p = new Performance((arraylist ? "DequeArray" : "LinkedList") + "," + levels + "," + capacity, repeats, warmups) {
@Override
public void init() {
}
@Override
public void run(boolean warmup) {
LevelBag<NullItem, CharSequence> b = new LevelBag(levels, capacity) {
};
randomBagIO(b, randomAccesses, insertRatio);
if (!warmup) {
totalPriority += b.getAveragePriority();
totalMass += b.getMass();
totalMinItemsPerLevel += b.getMinItemsPerLevel();
totalMaxItemsPerLevel += b.getMaxItemsPerLevel();
}
}
}.printCSV(true);
// items per level min
// items per lvel max
// avg prioirty
// avg norm mass
// System.out.print((totalMinItemsPerLevel/p.repeats) + ",");
System.out.print((totalMaxItemsPerLevel / p.repeats) + ",");
System.out.print(totalPriority / p.repeats + ",");
System.out.print(totalMass / repeats / levels + ",");
System.out.println();
}