mailto:Drew

Memorial Day, 2004

Drew V. McDermott

I am interested in artificial intelligence, specifically automated planning, robotics, and agent communication.

DAML Project

Automatic Tools for Mapping Among Ontologies

DAML-Time Ontology (See also the DAML-Time home page)

OWL-S - "OWL and Services." The acronym is unbalanced; more stuff is crammed into the S than into the OWL part. The focus is on Semantic Web Services, and how to describe them so automated agents can reasona about them. A key component is describing the processes required to interact with a web agent, including I/O specs but also (sometimes) details of the sequences of operations required. For that we need a language, and OWL doesn't cut it, in spite of a heroic attempt. We solve the problem with the OWL-S Presentation Syntax, which currently is in a very rough draft stage.

Planning Domain Definition Language

PDDL is the language originally developed by the AIPS-98 Competition Committee for use in defining problem domains.

The original version, PDDL 1.7, is still available.

The 2002 version is called PDDL2.1, and contains many new features, mainly connected with adding time and objective functions to the language. Unfortunately, certain features of the original language have been removed for "retuning." Hopefully in the future we'll see a reconvergence as hierarchical-planning features are integrated back into PDDL.

The 2004 version is called PDDL2.2. It is adds derived predicates and timed initial literals. The former are just backward-chaining axioms that allow a planner to achieve a goal by making the antecedent of one of the them true. The latter are literals that will become true at a predictable time independent of what the planning agent does.

PDDL3.0 is the language for the 2006 competition. A BNF syntax can be found here. It adds constraints and preferences, expressed in a restricted temporal logic. For instance, one can have a preference at the end of execution one's gas tank is full:

   (:constraints
        (preference p-fuel
	   (at end (current-value (fuel truck1)
				  (capacity truck1)))))
and an objective function that states how important it is:
   (:metric (+ (* 10 (is-violated p-fuel))
	       (fuel-used)))

Opt is a successor to PDDL, including durative actions, autonomous processes, a completely revised hierarchical planning notation, and a more robust type system. It incorporates all the features of PDDL2.2 and (soon) PDDL3.0.

The International Planning Competition

The 2006 competition

The 2004 competiotion

Competition 2002

Results 2000

Results 1998

Publications:

In reverse chronological order:

Unpublications:

Software Documentation

If you want to check out the documentation of the software packages described below, various manuals are available. In some cases the manual is more fully developed than the software; in other cases, the software is ahead. Read the fine print

My public key This may be useful in verifying the provenance of some of the software below.

Software

To use the following packages, download them, untar them, then follow the installation instructions that follows the package list. Untarring will create one or two subdirectories, usually one of which has the same name as the one shown here. (E.g., untarring nity.tar.gz in directory d will create d/nity/ and d/langutils/.)

To install any of the above, copy the following code template

   (load "sdyt/ytools/ytload/ytload")
   (setq ytools::config-directory* "dytc/")
   (setq ytools::ytload-directory* "sdyt/ytools/ytload/")
to your Lisp initialization file (which is found in your home directory and has a name like .clinit.cl or .lispworks or .clisprc.lisp or something else). Replace sdyt with the name of the immediate superdirectory where you placed the ytools directory. Replace dytc with your home directory if you are the only user of the software, otherwise in some place that others can put in their search paths. (If you are the only user, you can put it anywhere you like, actually, but the home directory is the obvious thoice.)

Important note for CLISP users: Your .clisprc file must include the following code

     (setq custom:*merge-pathnames-ansi* t)
to make sure that YTools logical pathnames work right.

Now start Lisp and type (yt-install :sysname) to install one of the systems listed above. (Here the names are all lower-case, which matters only in a case-sensitive Lisp.) If you want Optop, you can just type (yt-install :optop) and all the systems it depends on will be installed as well. But it might be clearer to install them in order. The installation process consists of a series of questions about directories, case-sensitivity, various modes, etc., followed by a bunch of compilations. Some Lisps generate an unbelievable number of warnings about unimportant conditions. When I figure out how to turn them off, I'll include that code in future releases. For now, just ignore them. If something blows up, let me know.

OH NO!!! All these programs seem to be written in Lisp, which is bad because it looks funny and there's no free standard implementation. But wait ... There is a free standard implemention: CLISP. It's written in C, is compliant with the ANSI standard, and produces byte code as output, so it runs anywhere. It's also easy to install. If you like to think of Python as the last word in high-level scripting languages, you're almost right. One step beyond is Lisp: Python with macros (and without that annoying indentation-dependent syntax). Lisp is defined by an ANSI standard, not a single implementation. Most implementations compile to efficient machine code, so once you outgrow CLISP you can make an easy transition to a full-featured state-of-the-art language.


Emacs Packages

Lightmark (version 1.01) implements a system of "lightweight bookmarks," for people who just can't stand that there's only "point" and "mark." If you want to keep several fingers in various pies, this package allows you to create bookmarks and flip around them with a few keystrokes. For instance, ^C^Bp creates a bookmark whose default name is the symbol under the cursor --- but you can edit the name to whatever you want, and change it-- --later. ^C^Bj prompts (with completion) for the name of a bookmark and jumps to it. Many utilities are included for viewing and managing the current bookmarks, including a 'Marks' menu.


Old Software

Miscellany

  • Yale Computer Science Department
  • Acknowledgements:The way the mailto: link at the top of page is done was lifted from the web page of Andrew Philpot