Einingalíkön og hermun


2. Introduction to Psyclone & Constructionist Design Methodology




  Framework for modeling real-time systems Built for A.I. & robotics; very good for modeling complex distributed systems
  Messages & streams We will only use the messaging mechanisms, which follow the OpenAIR specification
  Psyclone modules = executable code = semi-autonomous agents Bi-directional communication (via OpenAIR) with Psyclone, or more specifically, with AIRCentral or other named infobus
  Whiteboards Psyclone equivalent of blackboards
  psySpec Central specification of modules and APIs. XML file that can be easily created.











Constructionist Design Methodology (CDM)
  Methodology for building interactive AI systems Well suited for agent-based construction (very similar requirements to interactive AI systems, with a few minor exceptions)
  Mutability Start with "empty boxes", create full system
Expand over time while running whole system together
  Write modules with resilience A distributed system can be very fragile; write modules to be resistent to downtime
  Write modules with temporal knowledge If the modules are unaware of the passing of time, they are less likely to represent the behavior of the system they are trying to simulate
  Determine the number of blackboards Blackboards with a lot of messages types can be hard to use; systems with many blackboards can be hard to use
  CDM details http://www.mindmakers.org/projects/CDM













Psyclone + CDM
  Psyclone has CDM "built-in" OpenAIR: message- and routing protocol of Psyclone
  Message types Make a sensible message type tree where each branch has a definite, clear meaning in the system
  Defining blackboards In psySpec, use the <whiteboard ...> tag
  psyProbe web-based monitoring tool for Psyclone
  publish-subscribe Java Listener subscribes; Java Poster sends messages (see examples provided with Psyclone)














OpenAIR Message Semantics
  From The unique name of the Poster - the system component (module) that authored and posted this Message
  To The main Receiver of this Message, which is always a dispatcher (e.g. blackboard or infobus) that handles the dissemination of this Message
  Cc Any unique module name which should receive this Message, even though it may not be subscribed to receive this particular Message's Type
  postedTime The time at which this Message was released, or posted, by the module that authored and posted it
  receivedTime The time at which a receiving party received this Message
  Content The content of the Message - the main body. This slot has a parameter called language, which specifies the particular language of the content, e.g. XML, Prolog, Lisp, KQML, etc.
  Type A dot-delimited string which represents the name of the type of this Message.