Search in sources :

Example 16 with NAR

use of nars.main.NAR in project opennars by opennars.

the class TermTest method testUnconceptualizedTermInstancing.

@Test
public void testUnconceptualizedTermInstancing() throws Narsese.InvalidInputException {
    NAR n = new NAR();
    String term1String = "<a --> b>";
    Term term1 = np.parseTerm(term1String);
    Term term2 = np.parseTerm(term1String);
    assertTrue(term1.equals(term2));
    assertTrue(term1.hashCode() == term2.hashCode());
    CompoundTerm cterm1 = ((CompoundTerm) term1);
    CompoundTerm cterm2 = ((CompoundTerm) term2);
    // test subterms
    // 'a'
    assertTrue(cterm1.term[0].equals(cterm2.term[0]));
}
Also used : CompoundTerm(nars.language.CompoundTerm) CompoundTerm(nars.language.CompoundTerm) Term(nars.language.Term) NAR(nars.main.NAR) Test(org.junit.Test)

Example 17 with NAR

use of nars.main.NAR in project opennars by opennars.

the class TermTest method testConceptInstancing.

@Test
public void testConceptInstancing() throws Narsese.InvalidInputException {
    NAR n = new NAR();
    String statement1 = "<a --> b>.";
    Term a = np.parseTerm("a");
    assertTrue(a != null);
    Term a1 = np.parseTerm("a");
    assertTrue(a.equals(a1));
    n.addInput(statement1);
    n.cycles(4);
    n.addInput(" <a  --> b>.  ");
    n.cycles(1);
    n.addInput(" <a--> b>.  ");
    n.cycles(1);
    String statement2 = "<a --> c>.";
    n.addInput(statement2);
    n.cycles(4);
    Term a2 = np.parseTerm("a");
    assertTrue(a2 != null);
    Concept ca = n.memory.concept(a2);
    assertTrue(ca != null);
    assertEquals(true, n.memory.concepts.iterator().hasNext());
}
Also used : Concept(nars.entity.Concept) CompoundTerm(nars.language.CompoundTerm) Term(nars.language.Term) NAR(nars.main.NAR) Test(org.junit.Test)

Example 18 with NAR

use of nars.main.NAR in project opennars by opennars.

the class TermTest method testCommutativeCompoundTerm.

@Test
public void testCommutativeCompoundTerm() throws Exception {
    NAR n = new NAR();
    assertEquivalent("(&&,a,b)", "(&&,b,a)");
    assertEquivalent("(&&,(||,b,c),a)", "(&&,a,(||,b,c))");
    assertEquivalent("(&&,(||,c,b),a)", "(&&,a,(||,b,c))");
}
Also used : NAR(nars.main.NAR) Test(org.junit.Test)

Example 19 with NAR

use of nars.main.NAR in project opennars by opennars.

the class TestMultistepEdited method testMultistepEndState.

@Test
public void testMultistepEndState() {
    NAR n = new NAR();
    n.addInputFile("nal/Examples/Example-MultiStep-edited.txt");
    new TextOutputHandler(n, System.out);
    /*InferenceLogger logger = new InferenceLogger(System.out);
        n.memory.setRecorder(logger);*/
    n.cycles(1000);
// System.out.println(n.memory.concepts);
}
Also used : TextOutputHandler(nars.io.events.TextOutputHandler) NAR(nars.main.NAR) Test(org.junit.Test)

Example 20 with NAR

use of nars.main.NAR in project opennars by opennars.

the class Predict_NARS_Core method main.

public static void main(String[] args) throws Narsese.InvalidInputException, InterruptedException {
    Parameters.DEBUG = false;
    int duration = 4;
    float freq = 1.0f / duration * 0.03f;
    double discretization = 10;
    n = new NAR();
    n.param.noiseLevel.set(0);
    Random rnd = new Random();
    n.on(TaskImmediateProcess.class, new TaskImmediateProcess() {

        @Override
        public void onProcessed(Task t, DerivationContext n) {
            // return;
            if (t.sentence.getOccurenceTime() >= n.memory.time() && t.sentence.truth.getExpectation() > 0.5) {
                Term term = t.getTerm();
                int time = (int) t.sentence.getOccurenceTime() / thinkInterval;
                /*if(positionTruthExp.containsKey(time)) {
                        if(positionTruthExp.get(time) > t.sentence.truth.getExpectation()) {
                            return;
                        }
                    }*/
                int value = -1;
                String ts = term.toString();
            // Prediction(t.sentence, ts, time);
            }
        }
    });
    TreeMLData observed = new TreeMLData("value", Color.WHITE).setRange(0, 1f);
    // predictions = new TreeMLData[(int)discretization];
    predicted = new TreeMLData("seen", Color.WHITE).setRange(0, 1f);
    // for (int i = 0; i < predictions.length; i++) {
    // predictions[i] = new TreeMLData("Pred" + i,
    // Color.getHSBColor(0.25f + i / 4f, 0.85f, 0.85f));
    // }
    pred = (LineChart) new LineChart(predicted).thickness(16f).height(128).drawOverlapped();
    TimelineVis tc = new TimelineVis(pred, new LineChart(observed).thickness(16f).height(128).drawOverlapped());
    new NWindow("_", new PCanvas(tc)).show(800, 800, true);
    n.cycles((int) discretization * 4);
    NARSwing.themeInvert();
    new NARSwing(n);
    ChangedTextInput chg = new ChangedTextInput(n);
    int k = 0;
    String lastInput = "";
    boolean pause = false;
    HashSet<String> qus = new HashSet<String>();
    int truecnt = 0;
    String saved = "";
    int lastOrival = 0;
    while (true) {
        int steps = 40;
        int h = 0;
        do {
            truecnt++;
            if (truecnt % 100 == 0) {
            // qus.clear();
            }
            for (int i = 0; i < thinkInterval; i++) {
                n.cycles(1);
            }
            Thread.sleep(10);
            h++;
            int repeat = 500;
            signal = (float) Math.sin(freq * (k / 2 % 500) - Math.PI / 2) * 0.5f + 0.5f;
            int time = (int) (n.time() / thinkInterval);
            int val2 = (int) (((int) (((signal) * discretization)) * (10.0 / discretization)));
            // System.out.println("observed "+val);
            int tmp = val2;
            if (!pause && val2 != lastOrival) {
                float noise_amp = 0.5f;
                // noise
                val2 += (rnd.nextDouble() * noise_amp * 0.5f - noise_amp * 0.25f);
            }
            lastOrival = tmp;
            final int val = val2;
            lastInput = "<{" + val + "} --> value>. :|:";
            if (k % repeat == 0 && k != 0) {
                pause = true;
                // new run
                n.memory.seq_current.clear();
            }
            if (!pause && !saved.isEmpty()) {
                chg.set(saved);
                saved = "";
            }
            observed.add((int) time, val / 10.0);
            int curval = val;
            if (QUAnswers.containsKey(val)) {
                curval = QUAnswers.get(val);
            }
            int curtime = time;
            int hh = 0;
            // QUAnswers.put(8, 0); //end to start link is fixed
            while (QUAnswers.containsKey(curval)) {
                int shift = QUShift.get(curval) / thinkInterval;
                for (int i = 0; i < shift; i++) {
                    predicted.add((int) curtime + i, (curval) / 10.0);
                    pred.customColor.put(curtime + i, Color.RED.getRGB());
                    pred.customColor.put(curtime + i + 1, Color.RED.getRGB());
                }
                curtime = curtime + shift;
                curval = QUAnswers.get(curval);
                if (curval == 0) {
                    break;
                }
                hh++;
                if (hh > discretization * 2) {
                    break;
                }
            }
            // if(!positionTruthExp.containsKey(time)) { //keep pred line up to date
            // but don't overwrite predictions
            predicted.add((int) time, val / 10.0);
            if (true) {
                chg.set(lastInput);
                if (!pause) {
                } else {
                    saved = lastInput;
                }
                // n.addInput(lastInput);
                String S = "<(&/," + "<{" + val + "} --> value>,?I1) =/> ?what>";
                if (!qus.contains(S)) {
                    // n.addInput(S);
                    AnswerHandler cur = new AnswerHandler() {

                        @Override
                        public void onSolution(Sentence belief) {
                            // System.out.println("solution: " + belief);
                            System.out.println(belief);
                            String rpart = belief.toString().split("=/>")[1];
                            Prediction(belief, rpart, -1, val);
                        }
                    };
                    try {
                        // if(truecnt%10 == 0) {
                        qus.add(S);
                        n.askNow(S, cur);
                    // }
                    } catch (Narsese.InvalidInputException ex) {
                        Logger.getLogger(Predict_NARS_Core.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
            if (h > 20) {
                pause = false;
            }
        } while (pause);
        k += steps;
    }
}
Also used : Task(nars.entity.Task) ChangedTextInput(nars.lab.ioutils.ChangedTextInput) NWindow(automenta.vivisect.swing.NWindow) Narsese(nars.io.Narsese) AnswerHandler(nars.io.events.AnswerHandler) TimelineVis(automenta.vivisect.timeline.TimelineVis) Random(java.util.Random) TreeMLData(automenta.vivisect.TreeMLData) PCanvas(automenta.vivisect.swing.PCanvas) Sentence(nars.entity.Sentence) HashSet(java.util.HashSet) Term(nars.language.Term) DerivationContext(nars.control.DerivationContext) TaskImmediateProcess(nars.io.events.Events.TaskImmediateProcess) NARSwing(nars.gui.NARSwing) NAR(nars.main.NAR) LineChart(automenta.vivisect.timeline.LineChart)

Aggregations

NAR (nars.main.NAR)28 Test (org.junit.Test)10 Term (nars.language.Term)9 NARSwing (nars.gui.NARSwing)8 CompoundTerm (nars.language.CompoundTerm)8 Narsese (nars.io.Narsese)5 Sentence (nars.entity.Sentence)4 AnswerHandler (nars.io.events.AnswerHandler)4 NWindow (automenta.vivisect.swing.NWindow)3 TextOutputHandler (nars.io.events.TextOutputHandler)3 LineChart (automenta.vivisect.timeline.LineChart)2 HashMap (java.util.HashMap)2 HashSet (java.util.HashSet)2 Concept (nars.entity.Concept)2 Inheritance (nars.language.Inheritance)2 TreeMLData (automenta.vivisect.TreeMLData)1 PCanvas (automenta.vivisect.swing.PCanvas)1 Chart (automenta.vivisect.timeline.Chart)1 MultiTimeline (automenta.vivisect.timeline.MultiTimeline)1 StackedPercentageChart (automenta.vivisect.timeline.StackedPercentageChart)1