Nell/ProductionRules: Difference between revisions

From OLPC
Jump to navigation Jump to search
(Planners braindump)
 
Line 5: Line 5:


The second detour took me through various [http://en.wikipedia.org/wiki/Automated_planning planner] implementations. The language used in expressing plans for [http://en.wikipedia.org/wiki/STRIPS STRIPS] has proven to be very popular and durable over the past 30 years. (Although slight extensions such as [http://en.wikipedia.org/wiki/Action_description_language ADL] or one of the [http://en.wikipedia.org/wiki/Planning_Domain_Definition_Language PDDL]s might be necessary.) A STRIPS implementation in [https://github.com/tansey/strips Python] is not too complicated; a simple [http://www.inf.ed.ac.uk/teaching/courses/aipp/material/simstrips.pl implementation in PROLOG] is only 11 lines or so. More sophisticated planner implementations (mostly in Lisp) are available from the [http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/areas/planning/0.html CMU AI repository].
The second detour took me through various [http://en.wikipedia.org/wiki/Automated_planning planner] implementations. The language used in expressing plans for [http://en.wikipedia.org/wiki/STRIPS STRIPS] has proven to be very popular and durable over the past 30 years. (Although slight extensions such as [http://en.wikipedia.org/wiki/Action_description_language ADL] or one of the [http://en.wikipedia.org/wiki/Planning_Domain_Definition_Language PDDL]s might be necessary.) A STRIPS implementation in [https://github.com/tansey/strips Python] is not too complicated; a simple [http://www.inf.ed.ac.uk/teaching/courses/aipp/material/simstrips.pl implementation in PROLOG] is only 11 lines or so. More sophisticated planner implementations (mostly in Lisp) are available from the [http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/areas/planning/0.html CMU AI repository].

Planners of this sort seem to be useful in story generation (cf [http://classes.soe.ucsc.edu/cmps148/Winter10/readings/LebowitzUniversePoetics14.pdf "Story Telling as Planning and Learning"], an early UNIVERSE paper, and Mark Riedl's [http://www.cc.gatech.edu/~riedl/pubs/aiide09.pdf Story Analogues] paper). So we might resurrect this for the "Story Generation" activity... but that's not part of the Story execution engine.


== Production rule systems ==
== Production rule systems ==

Revision as of 23:59, 28 February 2012

[CSA] I did some research (and AI archaeology) to try to determine the "proper" way to implement story module preconditions. The original goal was twofold: be more efficient than scanning every story module and evaluating its conditions (which wouldn't scale as we accumulated story modules), and secondly to attempt to integrate a full programming language for the condition expressions in such a way that we could leverage the story module evaluation semantics more generally to implement other Avatar Services functionality (ie, do as much as possible with a single abstraction).

Planners

A long detour took me through Nell/Prolog, before eventually coming to the realization that Backward Chaining (the core of Prolog) was *not* actually what we needed for story evaluation. (Although Prolog is very cool.)

The second detour took me through various planner implementations. The language used in expressing plans for STRIPS has proven to be very popular and durable over the past 30 years. (Although slight extensions such as ADL or one of the PDDLs might be necessary.) A STRIPS implementation in Python is not too complicated; a simple implementation in PROLOG is only 11 lines or so. More sophisticated planner implementations (mostly in Lisp) are available from the CMU AI repository.

Planners of this sort seem to be useful in story generation (cf "Story Telling as Planning and Learning", an early UNIVERSE paper, and Mark Riedl's Story Analogues paper). So we might resurrect this for the "Story Generation" activity... but that's not part of the Story execution engine.

Production rule systems