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...
No announcement yet.
11 results in 0.0035 seconds.
You can also choose from the.
TimersThis document describes how Soar's internal timers work.
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
Threads in SMLThis 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...
SML Output Link GuideThis document provides help on reading the output link of Soar agents using SML.
- Read the output link after the agent's output phase but before the next decision cycle's input phase.
- Excercise care if you save commands (or other working memory elements on the output-link) to use later and return control back to Soar.
Memory Leak Debugging with Visual StudioThis 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>
I/O and Reward LinksIntroduction
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...
Command Line Interface Parsing CodeOverview
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...
Basic Kernel TerminologyThis 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...
How to compile SML ClientsIntroduction
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....
SML Quick Start GuideSML (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...