I'm a
scientist. What I do is meaningless if it doesn't contribute to
the
rest of human knowledge in some way. I think this applies to my
code
as well as to the rest of my ideas.
If you use my code, you should give me credit just as you would if you
used
an idea from one of my papers. Please keep all authorship
information
intact, and reference my work in any documentation. Also, I'd
like
to hear about any projects using my code, whether they are working or
just
under way. So please email me.
But don't expect much technical support - I'm afraid I don't have
much time!
AmonI Software Page
The most accessable and heavily used/debugged versions of my code are
now available on the AmonI
software page. This page now is primarily for supporting the
lisp version of BOD & POSH, which I still use myself
sometimes. It also links to some even
older code.
Lisp BOD/POSH Code
Lisp last updated 8 August
2005. Works with Lispworks
4.4.5
If you don't already know about BOD, you'd
better read that link first. This code is in Common Lisp, using
the Object System. For a quick intro to this language, see Jeff
Dalton's Brief
Guide to CLOS.
If you
download my code directory, you will see several behavior libraries
each
with many scripts. But only a few things are really running ---
some
are currently in development, others represent early versions of the
program. See the Demo
section below for recommended scripts to run.
Not everything is perfectly documented, but see my PhD
for a lot of documentation! Even this page is really for my
students,
though if someone hassles us we may rewrite it better.
Installation
Here is the lisp code in its
directory structure. To make it run in either linux, Mac OSX or
the evil empire, download Lispworks.
Caveats:
- I no longer have a linux box around, and lispworks is changing
fast, so the linux instructions may be pretty old. I'm using Mac
OS X myself now, and it works straight out of the box.
- Linux Instructions:
- Be sure to follow all the instructions carefully: you
need
a licensing
file & on linux you need openmotif as well as lispworks (run "rpm
-q
openmotif" to see if you already have it.)
- If you are running on linux, then you might have problems with
motif. Lispworks version 4.2-2
used to require an older version
of motif, here is the RPM
which I used with both RedHat 7.x and Suse 8.1. This doesn't seem
to be a problem in the current LW version.
Demos
To run my code, run lispworks from the directory you downloaded
my
code to.
- linux: cd into
the directory & run lispworks.
- microsoft: double-click
on one of the .lisp files in that directory & associate it
with
lispworks. From then on, start lispworks by double-clicking on a
.lisp
file. (Haven't checked this for a couple years either, email me
if I'm wrong.)
- mac OS X: There
doesn't seem to be any GUI way to do this, so you have to change
directory from within lispworks.
- This can be done automatically for you if you set it up once.
- Edit the file "posh-gui.lisp".
- Uncomment one of the first lines of code where it says
"change-directory", and set the path to your copy of lispPOSH there.
To get the BOD interface up, you need to load "posh-gui.lisp".
Either do this from the File menu, or from the listener window (the big
one with the prompt)
type:
CL-USER 1> (load "posh-gui")
When the (stunningly ugly) BOD window comes up, choose a behavior
library, then a script to run. Then push the "run" button.
"Fast run"
runs faster (surprise) but doesn't maintain any debugging state or
print
to any debugging windows.
If you want more information, play with the debugging tools.
Notice
that after you click "debug mode" you are automatically stepping, so
"run"
only takes you to the first step. Click "step" to advance another
step,
or "continue" to just run.
See my POSH web page for descriptions of the
scripts mentioned below. Basically, POSH plans coordinate the
behavior of an agent, but it's behavior is generated by modules written
in some OO language, (in this case, CLOS). But the POSH scripts
determine the different `personalities' (goals) of different
agents. They determine what the agents do, even though in theory any agent
that shares the same behavior library has the same capacities. See my BOD page (or papers) for a fuller explanation.
Transitive Inference
"educate-me+monk" is the best script to run under transitive inference. That has
phased training & terminates after either the agent fails to learn
or the full testing program has run. To see what happens without
going through such an organized training system see the script
"prior-learn".
You will have to quit this at some point.
All results from this library trail into a file called monkey-results, which means one run
will write over another if you don't rename it after the trial.
"educate-freq-test" is the only thing here that uses the frequency
tests
on the drives --- I used that a lot in the C & robot demos, but not
so
much for the monkeys. It makes a `noise' every 1000 steps.
If
you change "screech" to "squawk" in the script you can make the program
break
every 1000 steps. Sam Partington has used this code feature to
greater effect in his BOD/UT
code.
Colony
Unfortunately, the colony code is now broken on all platforms. It
used CAPI for the simulator code, & CAPI got changed a bunch.
Since my students don't like learning lisp, there is now a new version
of this code being written using python/jython called BOD/MASON.
Here are the old instructions for colony though, just in case:
If you are running under the evil
empire, the multi-agent stuff
"colony"
doesn't work. Sorry, I have no idea why, I suspect it's the
threading
done by lispworks. But you can still run the transitive inference
demos.
I haven't checked OS X yet, or windows with lw 4.3. UPDATE:
The newest version of lispworks has broken the colony demo on linux
too! I'm currently making TI work under OSX, I'll worry about
colony next if I haven't migrated this work to python or repast before
that. 10 November 2004.
If you are
on linux, the two colony
programs of most relevance to my most recent papers
are "stay-groom" where folk hold still while they are being groomed,
and
"stay-intent" where they hold still even if they are being approached.
All results (decisions) here trail into a file named
jane.[somebignumber].
These files don't overwrite each other. They also don't
grow
very fast, but they will keep
growing
as long as the thing keeps running. The python script
cost-primates.py
summarizes these results.
Older Code
I wrote a stand-alone version of an older version
of POSH action selection for the net a number of years ago. You
can
download it from my Edmund page
(see the code
section.)
That has toy scripts but real documentation! For the
reverse,
on the same page further down you can find the code I used to make a
winning
mouse run in Toby Tyrrell's action-selection testing environment.
If you are really a great fan of my work and can't get enough of my
code, you might want to also see my Reactive Accompanist
page, which also has code. Or, if you want to see the code I had
running
on the Nomad robot, ask & I will post it (if I can find it!)
It's
probably lying around somewhere.
Joanna Bryson
Last updated a little on 15 August 2005
Lisp code last updated 15 August 2005