[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Sep 10 12:58:31 1994 
Subject:LIB NEWPSYS - does anyone use it? 
From:"A.Sloman" 
Volume-ID:940910.01 

In Poplog version 14 a new forward chaining production system
interpreter was added -- LIB NEWPSYS (described in HELP NEWPSYS).

This differed from the older LIB PRODSYS (see TEACH PRODSYS) in several
respects.

E.g. instead of each rule associating a set of database conditions with
a fully compiled Pop-11 procedure body, it associates a set of
conditions with a set of actions in a higher level interpreted language,
while allowing calls to Pop-11 procedures where desired in the actions.

It was thought that this could in some cases produce simpler, more
readable code.

Moreover, since the procedures for reading in the conditions and the
actions in rule-definitions are user definable, it is possible for users
to implent a type of rule that works more like LIB PRODSYS if required.

More importantly the matching and condition defining facilities in
LIB NEWPSYS, and the control over which rules to run when more than one
has its conditions satisfied were far more sophisticated, e.g. because
of support for the keyword "ALL" in conditions, which allows information
to be in the database that would otherwise have to be compiled into
rules. Also, there is explicit support for switching between rulesets
and/or between databases, so that the current rulset and current
database (working memory) can be kept small, reducing the need for very
complex indexing schemes to improve efficiency. (There are other
differences).

Here in Birmingham we have been using NEWPSYS both for teaching and also
in the Cognition and affect project for implementing systems based on
condition-action rules. Is anyone else using it? If so I would welcome
comments on problems with it, or any suggestions for improving it.

One change that Tim Read, here in Birmingham, found desirable was the
ability to associate weights with rules, so that when several rules
have their conditions satisfied their weights can be used to define
priorities. There is a modified version of newpsys, called
WEIGHTED_NEWPSYS which implements this. It is available with a
teach file giving a simple example, in
    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/teach/weighted_newpsys
    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/lib/weighted_newpsys.p

We are starting to use NEWPSYS to implement a generic agent architecture
which can be used in multi-agent "simulations" of various kinds. The key
idea is that each agent will be composed of a collection of sub-contexts
each represented by a ruleset and a database. Since switching between
rulesets and databases is very fast and very simple, representing
parallelism should be easy, though aspects of timing to ensure
reasonable relative speeds will need to be thought through. There is no
attempt to use clocked interrupts since CPU times are pretty meaningless
in cognitive simulations. Thus users will need to ensure that on each
cycle each agent's rules do something and then terminate.

Objectlass will be used to define types of agents, which will have
different rulesets, different default databases, and various other
differences in capabilities.

If anyone is doing related work, or would be interested in joining in
the design of a generic multi-agent toolkit implemented in Pop-11,
using this sort of strategy please let me know.

At a later stage I may make the code for this generally available for
other (licensed) Poplog users to try out.

Aaron
PS I think the tracing and explanation faciliteis in LIB NEWPSYS could
do with a graphical interface, but at present the facilities for
constructing menus and dialogue boxes in Pop-11 are still too messy
and low level (one has to use lib propsheet, which does not provide the
right functionality), so I have not yet done it. If anyone else has
I'd like to know.