⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http:^^www.cs.washington.edu^homes^ctkwok^simon-manual.html

📁 This data set contains WWW-pages collected from computer science departments of various universities
💻 HTML
📖 第 1 页 / 共 3 页
字号:
Date: Tue, 10 Dec 1996 03:33:15 GMTServer: NCSA/1.4.2Content-type: text/htmlLast-modified: Wed, 22 Nov 1995 07:59:50 GMTContent-length: 38848<html><head> <title> Simon User Guide </title> <!-- Changed by: Sujay Parekh, 21-Nov-1995 --></head><body><h1><center><i>Simon User Guide</i></h1>  Version 0.11</center><br><hr><p><h3>Table of Contents</h3><OL><li>  <a href="#Introduction">Introduction</a><li>  <a href="#Motivation">Why Simon was Created</a><li>  <a href="#About_this_release">About this release</a><li>  <a href="#Starting">Starting Simon Up</a><li>  <a href="#Some_simple">Some simple things to try</A><li><A href="#Terminology">Terminology</A><li>  <a href="#How_simon">How Simon works</A><li>  <a href="#SAL_constructs">SAL constructs</A><li>  <a href="#Misc">Miscellaneous</a><li>  <a href="#Repo">Full SAL domains</a></OL><h3>Appendix</h3><OL TYPE=A><li><A href="#Universal">Solving universal goals</A><li><A href="#Kludges">Known problems/kludges in this release</A><li><A href="#SAL_BNF">SAL bnf</A><li><A href="#Partial_objects">Partial objects</A><li><A href="#SAL_tutorial">SAL tutorial</A><li><A href="#Trouble_shooting">Trouble shooting</A><li><A href="#The_tracer">The tracer</A></OL><hr><a name="Introduction"><h3>Introduction</h3></a><p>Simon is a "softbot" (a software robot) which is being developed atthe University of Washington.  This manual contains technicalinformation needed to use and work on Simon.<p>Simon is a descendent of another softbot, "Rodney", and shares a lotof functionality with Rodney.  The major difference between Simon andRodney is that Rodney uses a planner (called XII) to determine acourse of action, whereas Simon's actions are controlled via aprocedural specification expressed in the Simon Action Language (SAL).<p>This manual assumes that you have read the following sections of the<a href="../../doc/user-manual/user-manual/user-manual.html"> Rodneymanual</a>:<ul><li>The Model Manager<li>Goal Language<li>Rodney Action Language<li>Writing Operators</ul>A few things to bear in mind:<ul><li> Wherever the planner would be invoked in Rodney (ie to achievegoals), Simon invokes the default mechanism outlined <ahref="#How_simon"> below </a>.  The rest of the Softbot architectureis pretty much the same.<li> Even though Simon does not use XII, it still uses the XIIlanguage for specifying goals, so it is important to understand thesyntax and meaning of the goal language.<li> The <code>do</code> and <code>request</code> mechanisms are notyet fully functional in Simon.<li> Actions parameters in SAL do not take list-valued arguments,hence the <code>all</code> modifier is not to be used.<li>Simon only understands the annotations: FIND-OUT, SATISFY,CONTEMPLATE and SCOPE.</ul>After you read those chapters, you can start profitablyplaying around with Simon, but you should also read thefollowing sections before long:<ul><li>Model Manager Options<li>Shell Interface<li>Planner Interface Functions and RAL Commands<li>Advanced Model Manager<li>Sensor Functions</ul><hr><a name="Motivation"><h3>Why Simon was Created</h3></a><p>The softbot Simon and its action language SAL (Simon Action Language)were created in the hopes of allowing easier and more elegantspecification of Softbot activity.  SAL can be seen as search controlbut is perhaps better seen as an integration of a procedural controllanguage with simple task reduction planning.  SAL allows forintuitive procedural action design while also allowing for generalbackchaining search.  The Simon kernel is very close in spirit toRAPS.  But unlike RAPS, we embrace complete ordering and do notconcern ourselves with protected states or explicit checks forsuccess.  The hope is that we can design a system which better matchesthe constraints and opportunities of software environments.  Thismeans taking advantage of the relative rarity of goal clobbering. <p><!--Simon decomposes <a href="http://www.cs.washington.edu/research/projects/softbots/www/xii.html">XII</a> goals into literals and calls the SAL action which isassociated with those literals.  SAL allows for calling of operators,querying the model, and the storage of partial object information in aresource called the attribute cache. Access to these constraints provevery useful in achieving goals. <p>-->Simon is built on top of RAL (Rodney Action Language).  All RAL constructsare supported in SAL.  For details on RAL,  please refer to the Rodneyuser manual.<p><hr><a name="About_this_release"><h2>About this release</h2></a>This release of Simon is considered pre-alpha, and as such it shouldnot be considered stable.  The primary purpose of this release is toget people acquainted with Simon, in particular on how Simon does itswork and SAL syntax.  Although I hope people can expand the domain onwhich Simon can operate, this release is not robust enough for someonewithout intermediate knowledge about the Simon kernel to include awhole new domain without considerable frustration.  However it shouldnot be as frustrating to modify existing domains (there are threeexisting domains in Simon: machine, people and files) or to build uponthem.  The next release should be more robust.  If you are interestedin building domains however, I'll try to give you as much support as Ican.<p><hr><a name="Starting"><h3>Starting Simon Up</h3></A><p>Simon is compiled on Allegro Common Lisp 4.2 (ACL) on Suns and SGIs.  To get into ACL in a Simon-compatible way,<ul><li>Place the following line in your <code>.emacs</code> file:<xmp>(load "/projects/ai/emacs/standard.emacs-4.2.el")</xmp><li>Place the following line in your <code>.clinit.cl</code> file:<xmp>(load "/projects/ai/emacs/standard.clinit.cl")</xmp><li>Run emacs on a Sun or SGI machine.<li>Load a lisp file (anything with the suffix '.cl' will do).<li>Type <code>C-c l</code> and respond to the prompts by pressing return,thus accepting the defaults.  After a bit of processing(during which you can verify that the correct version of LISP --version 4.2 -- is being loaded), youshould see the ACL prompt, which is <xmp>USER(1):</xmp></ul>(A little more information on <a href="manual/emacs.html">how to navigate around emacs</a> while using ACL is available.)<ul><li>Now load Simon by typing:<xmp>USER(1): (require 'simon)</xmp>You may get some <a href="manual/nowarn.html"> redefinition warningmessages</a>; you can ignore them for now.<p><li> Next, we start up Simon.  If you're running under X-windows, just type:<xmp>USER(2): :ss</xmp>This is a pre-defined alias that start up a shell, a Tracer window (ifyou have CLIM 2.0 installed) and the Simon interface.  You can also dothese steps individually, similar to the way Rodney is started:<xmp>(start-shell [arguments])(start-tracer)   ; Only if CLIM 2.0 is available on your system.(simon)</xmp>Note that the shell interface is meant to interface with a shellprocess on a Sun.  Hence, we need to make sure that shells, whenstarted, are run on a Sun machine.  This can be done by eitherspecifying a :host argument to the <code>start-shell</code> command,or by setting the variable <code>*shell-default-host*</code> to areasonable value, as follows: <xmp> (start-shell :host "sun-host") or(setq *shell-default-host* "sun-host") </xmp>Setting the variable in your <code>.clinit.cl</code> is convenientbecause it allows the use of the <code>:ss</code> alias.  See thesection "Shell Interface" in the Rodney User Manual for moreinformation.<p><li>If the previous step succeeded, you should now seethe simon prompt:<xmp>simon></xmp><li>To reenter Simon after a crash or after you have <code>(quit)</code>,  just type <code>(restart-simon)</code>or the toplevel command <code>:rr</code>.<xmp>USER(24): :rrTask aborted.simon></xmp></ul><p><hr><a name="Some_simple"><h2>Some Simple Things To Try</h2></a><!--I can load that into another emacs buffer, but now how do I 'submit' it to simon? You can either load it directly in the Lisp buffer by typing:(load "filename")Or, from the file's buffer, type C-c C-b, and that should have thesame effect.I use the 1st approach to load files that I won't be modifying,because it loads a compiled version if available.  The 2nd approach isconvenient for files that I'm modifying.C-c C-s in a Lisp file buffer is also useful for eval-ing a Lisp s-exp.--><p>  SAL is an immediate descendant of RAL, so most of this things demonstrated in the RAL section of the Rodney manual will work withSimon.  For example:<xmp>simon> (display "hello world")hello world</xmp>works fine.The demo does a couple of some Rodney tasks.  One is finding office phoneand one is finding email address via uactionwin-inspecwin-inspec.  There is a partial object example as well.<p>For details please look at <a href="me/demo.lisp">/projects/softbots/rodney/working/simon/demo.lisp</a>.<p>The best way to learn about using Simon is to browse through theexisting domain definitions.  Start with a Unix operator you'refamiliar with and trace through all the definitions to see how thevarious parts are implemented.  Also, see the brief tutorial for thegeneral process of adding an operator to the existing domain theories.The Tracer utility is very handy for monitoring what is happeningunder the covers in Simon.  This is quite useful when debuggingdomains, since it allows one to observe the order in which goals andsubgoals are generated and worked on, and which actions are used forthem.  See <a href="#The_tracer"> Appendix G </a>.<p><hr><a name="Terminology"><h3>Terminology</h3></a>A brief <a href="manual/glossary.html">glossary </a> of selected termsis available.<p><p><hr><a name="How_simon"><h2>How Simon works</h2></a>As mentioned earlier, Simon decomposes goals into literals andoperates on these literals.  The general scheme used for each literalis as follows:<ol><li> If the predicate is a fact, then the fact lookup is done.<li> The object cache is checked for possible partial-object     information that would match the literal.  The object cache is an     attempt to address the partial-object problem ; see <A     href="#Partial_objects"> Appendix D </A> for details.<li> The model-manager is checked for LCW and/or presence of a     matching literal.<li> The corresponding action is executed (except for CONTEMPLATE     goals).</ol>For FIND-OUT and SATISFY goals, Simon will use SAL actions, asfollows.  When presented with a single term goal, Simon will map itspredicate to an action and starts the action.  For example:<xmp>     (achieve (find-out (firstname ?p ?d)))</xmp>Here we have a one-term goal <code>(firstname ?p ?d)</code>.  Simon'smapping is done by attaching ".action" at the end of the predicate.So in this case Simon solves the goal by calling the action called<code>firstname.action</code>.  When dealing with conjunctive goals Simon processes them in a depth-firstmanner. Here is another example:<xmp>    (achieve (and (find-out (firstname ?p ?d))                  (find-out (lastname  ?p "etzioni"))                  (find-out (office.phone ?p ?num))))</xmp>Here, Simon will start off by attempting to satisfy the firstliteral. If the <code>firstname.action</code> fails at this point thenthe whole conjunctive goal will fail.  Suppose for now that itsucceeds--now Simon will start working on the second conjunct.  Ifthis conjunct cannot be solved with the constraint placed on<code>?p</code> by the first conjunct, then Simon will backtrack andget an alternative binding for the first conjunct.  This generalsearch process will continue until bindings are obtained, whichsatisfy all three conjuncts, or until there are no more alternativesfor backtracking, in which case the goal fails.<p>As you will see below, there is one other form of backtracking thatSimon allows.  The SAL <code>try</code> statement allows the user tospecify an explicit choice point.  That is to say, the user canspecify a group of methods in which a given goal may be solved.  Thegeneral template for a SAL action is a tree of conditions which bottomout with <code>try</code> statements.  See the examples below.<p>This framework allows Simon to efficiently handle the goal levelbacktracking discussed above.  If, for example, Simon has failed onthe second goal conjunct above, you want Simon to attempt to find aNEW binding for <code>(firstname ?p ?d)</code> that hasn't been triedyet.  Assume that there are three methods for satisfying<code>(firstname ?p ?d)</code>: bindings from the model, action A, andaction B (i.e., A and B are in a <code>try</code> statement).  So,after all the possible bindings from the model have been tried, Simonwill try action A.  And after all the ways of executing action A, havebeen tried, action B will be used.  This continues until asatisfactory binding has been found or, all the alternatives have beentried.<p><hr><a name="SAL_constructs"><h2>SAL constructs</h2></a><h3>Actions</h3>As mentioned in the previous section, Simon will map an action from agoal.  For example, a goal like <code>(current.terminal.type"vt100")</code>, would cause the following action to be invoked:<xmp>(defaction current.terminal.type.action (?goal ?type)  (call-op (set-term ?type) ?goal))</xmp>When invoking the action, the first parameter of the action,<code>?goal</code> here, is bound to the goal that caused the actionto be invoked. The rest of the parameters, in this case<code>?type</code>, will be bound to the arguments to the predicate(<code>"vt100"</code>).  <p>Below are some new SAL syntatic additions to RAL (see <A href="#SAL_BNF">Appendix C</A> for the full BNF specs):<p><h4>CALL-OP</h4>You can cause an operator to be invoked.  When an an operator iscalled, Simon automatically subgoals on achieving the preconditions.<p><xmp>(call-op (<operator-name> <value>*) <simon-goal>)</xmp>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -