No announcement yet.

Search Result

11 results in 0.0035 seconds.

You can also choose from the popular tags.

  • Waterfall


    This document describes the "Waterfall" modifications made to to Soar.

    As described by Bob Marinier...

    "Suppose I have a blocks world agent that is trying to accomplish "put A on B". Several moves might be required to do this, and the agent doesn't know what they are, so it goes into a subgoal and starts randomly moving blocks around. What we want is for the agent to get a positive reward on the substate's reward link when it succeeds. So we can...
    See more | Go to post

  • Timers


    This document describes how Soar's internal timers work.

    Preprocessor Symbols

    Core/SoarKernel/src/kernel.h contains a few relevant preprocessor symbols:
    • NO_TIMING_STUFF: Defining this symbol removes most timer code from the kernel. The stats command output will be much shorter as well, as it will not include timing statistics.
    • DETAILED_TIMING_STATS: Only valid when NO_TIMING_STUFF is not defined. Defining this turns on more timers for more detailed stats for things
    See more | Go to post

  • Soar XML Interface Specification

    Soar XML Interface Specification

    You can find a Word document describing the Soar XML interface specifications here.
    See more | Go to post

  • Threads in SML

    Threads in SML

    This document is intended to explain how threads are used in Soar 8.6 and later (this document is being written against 8.6.3). It assumes you already have a passing familiarity with both Soar and the SML interface language. This is advanced reading, for those who want to understand everything that's going on "under the hood".

    What Threads Exist

    As with all things related to SML, we need to divide up the world into client-side threading and kernel-side thread...
    See more | Go to post

  • SML Output Link Guide

    SML Output Link Guide

    This document provides help on reading the output link of Soar agents using SML.

    General Advice
    • Read the output link after the agent's output phase but before the next decision cycle's input phase.
    This is usually accomplished by registering for an event that fires in this range and reading the output link in there.
    • Excercise care if you save commands (or other working memory elements on the output-link) to use later and return control back to Soar.
    Working memory elements can be...
    See more | Go to post

  • Memory Leak Debugging with Visual Studio

    Memory Leak Debugging with Visual Studio

    This document summarizes one technique for fixing memory leaks in the Soar kernel using Visual Studio's Leak Detection tools.

    First, choose a program you will use for testing. I recommend TestCLI or TestClientSML or some other program that can repeatably cause leaks.

    At the top of the file containing main.cpp, add this:

    #ifdef _MSC_VER
    // Use Visual C++'s memory checking functionality
    #define _CRTDBG_MAP_ALLOC
    #include <crtdbg.h>
    See more | Go to post

  • I/O and Reward Links

    I/O and Reward Links


    Soar provides several links on various states: the io, input-link, and output-link exist on the top state, whereas a reward-link exists on every state. This page will describe how to add your own link, using the emotion link as an example (since that's what I'm working on at the moment). Note that this is actually a couple links (like io has a couple links) and it's only on the top state. If you only want a single link and/or you want links on all states, just search the...
    See more | Go to post

  • Command Line Interface Parsing Code

    Command Line Interface Parsing Code


    The command line interface (CLI) described in this document has no relation to the lexer/parser inside the Soar kernel. CLI often refers to the actual object instance (a member of KernelSML) but sometimes can refer to the whole component.

    The CLI takes an arbitrary string and transforms it into method calls providing a general interface to Soar as described by the help document on the Soar wiki (on Google Code).

    A command line in this context can actually...
    See more | Go to post

  • Basic Kernel Terminology

    Basic Kernel Terminology

    This is a document that defines some of the basic data structures, files and terminology used in the Soar kernel code. It is very incomplete but a good starting point for understanding the kernel.

    "But where can I start?"

    In a nutshell:
    The Soar Kernel is a very object-oriented, structured set of code. If you don't understand the basic Soar execution cycle and its phases, the source code won't help you. You should start by reading the introductory material...
    See more | Go to post

  • How to compile SML Clients

    How to compile SML Clients


    The SML API is the standard method to get Soar agents to communicate with external environments, such as simulations or games. The API was written natively in C++, but has Java, Python, and Tcl bindings generated via SWIG. This page lays out the steps required to compile C++, Java, and Python SML client programs successfully on Linux/OSX/Windows. These instructions are for the 9.3.2 and later releases. Previous releases required a slightly more complex compilation process....
    See more | Go to post

  • SML Quick Start Guide

    SML Quick Start Guide

    SML (Soar Markup Language) provides an interface into Soar based around sending and receiving commands packaged as XML packets. The interface is designed to support connecting environments to Soar (where input and output data structures are sent back and forth) and to support debuggers (where commands to print out specific productions or working memory elements are sent back and forth).

    We refer to these environments and debuggers as "clients".

    The details and...
    See more | Go to post