Hide menu

Introduction to the Labs

Read the entire page
before you start working on the individual labs!

The page contains important information that is common to all labs and exercises.

Lab Assignments

Working in Groups / Working at Home

You may work alone or (if you prefer and you can find a lab partner) in pairs.

If you work in pairs, we expect you to work together with each lab and each task, continuously discussing the solutions you develop with each other. You should not tackle problems indididually. Both participants must be able to answer questions about all of the domain variations you define.

It may be possible to work with these labs on your own computer, at the university or at home. If so, you must still make sure you're working together if you are working in pairs! This is done using the ThinLinc remote desktop client (available for Linux, Mac, Windows) to log in to IDA's remote access servers at thinlinc-und.ida.liu.se.

Each remote access server has 64 GB of memory. Usually this is plenty, but planners can require a lot of memory! The server cluster could easily be overloaded if too many students are doing planning labs (or memory-hungry labs in other courses) at the same time. If there are problems, remember that you can use the standard lab computers where you don't have to compete for resources!

You could of course also download the planners and compile them at home, but this is most likely more work than it's worth...

Lab Registration

Registration for the labs should be done using the WebReg on-line registration system.

If you cannot register for the labs, the most likely reason is that:

  • We haven't opened the registration yet. In every course there are participants who sign up for labs, but then drop the course before the labs actually start. We want to avoid this.
  • You are not registered for the course. Please talk to the people responsible for course registration – we do not handle registration ourselves and cannot add you to the course! Without registration, you cannot receive credits.


The following resources are available for the planning labs.

  • A large number of planners, both from the two latest international planning competitions (2011/2014) and from other sources. These include sequential satisficing (non-optimizing) planners, sequential optimizing planners and temporal satisficing planners as well as other types of planners.

    • Some of these planners will be used by all participants in specific parts of the labs, and have been tested and verified to run on our current systems.
    • The remainder of the planners are included to allow all of you to experiment with alternatives!
  • An introduction to PDDL, complementing the information provided during the lectures.

  • A PDDL parser that can be used to test your planning domains and problem instances for syntactic correctness. This parser is likely to be more correct and at the same time more informative than most planners' built-in parsers. Run the parser as follows:

    /home/TDDD48/bin/parser domainFile [problemFile]

    See also VAL's web page. Note that the FF planner also tends to provide comprehensible error messages!

  • A set of PDDL examples using the STRIPS subset of PDDL. Use these to learn more about how domains are usually modelled!

  • A set of PDDL examples using types and some non-STRIPS features. Use these to learn more about how domains are usually modelled!

  • Several variants of the Satellite domain, which illustrate the use of durative (temporal) actions in PDDL 2.1. Use these to learn more about modeling temporal domains!

  • A PDDL mode for Emacs to help you edit domain and problem instance files. You can also use the plain text mode in Emacs, or any other editor, but with this mode file you also get syntax highlighting.

    An updated version of the original files, modified by Erik Hansson, is available in Gitlab. There are instructions on the Gitlab web page.

    The original version is also available. For this original version, the installation instructions are not entirely correct! To install the original version:

    • (If you don't want the updated version): Download the file pddl-mode.el to some directory, let's say "~/TDDD48/".
    • Rename the file to "PDDL-mode.el" with capital letters in PDDL, since Unix file systems are case-sensitive.
    • Add the following to ~/.emacs (where "~/TDDD48/" is replaced with the directory where you placed the file):
          (add-to-list 'load-path "~/TDDD48/")
          (require 'PDDL-mode)
          (add-to-list 'auto-mode-alist
               '("\\.pddl" . PDDL-mode))
  • Alternatively, or as a complement: A PDDL modelling tool called myPDDL. The tool is integrated in the text editor Sublime Text that can be evaulated for free. To use it follow these steps:

    1. Download Sublime Text 3, choosing tarball for other Linux distributions.
    2. Extract to somewhere like /home/your_liu_id/tddd48.
    3. Run sublime_text from within the extracted folder.
    4. Install Package Control:
      1. Open console via View->Console.
      2. Paste the python code from the Sublime Text 3 tab at this location into the console window in Sublime Text 3.
      3. Run the code and restart if prompted. This may happen twice.
    5. Bring up the Command Palette in Sublime Text via Shift+Ctrl+P.
    6. Type "package" and browse to Package Control: Install Package
    7. Type "myPDDL" and install the package.
    8. Make sure the myPDDL file downloaded is executable. It is located in .config/sublime-text-3/Packages/myPDDL. If it is not executable use a terminal to run "chmod a+x myPDDL" in its location.
    9. Edit the myPDDL file and change path from sublime-text-2 to sublime-text-3
    10. Restart sublime and the installation is complete.
    Now that installation is complete, it is possible to create PDDL projects and to switch any file to PDDL mode via the Command Pallette (try searching for PDDL to get all options). There are also snippets, i.e. templates for many things such as durative-domains and actions. Access them via the Command Pallette, Tools->Snippets or type a snippet name such as "action" and press tab to have it inserted.

Keeping All Versions

In these labs you will be incrementally creating quite a few planning domains and problem instances. Don't overwrite old domains or problem instances when they are extended in a subsequent exercise. Make sure you have a suitable directory structure for your labs where you keep the result of each exercise (not necessarily all intermediate versions, of course, but the end result of lab 1.1, the end result of lab 1.2, and so on). For example, something as simple as this:


Reporting your results

In all labs and exercises, you will be handing in a set of domain specifications and problem specifications, possibly together with a report. All domains and problems must be easily readable and sufficiently commented, explaining the way you represent the domain and motivating your choice of predicates, objects and operators unless these choices seem so obvious that explaining them would be silly. Naturally, names of predicates, operators and constants should be chosen with some care.

Note that if you try out one design and find out that you have to make changes to make it work, then this is an excellent opportunity for explaining why you made the change and why your new design is better. This is one way of demonstrating your understanding of how planning domains are modeled.

Results should always be reported to your lab assistant.

Policy for handing in computer lab assignments at IDA

General policy: For all IDA courses having computer lab assignments there will be one deadline during or at the end of the course. If you fail to make the deadline, you must retake the, possibly new, lab course the next time the course is given.

Deviation in this course: There will be some additional opportunities to hand in your assignments. See the lecture notes for further information.

General rules for examination of computer lab assignments at IDA

You are expected to do lab assignments in group or individually, as instructed for a course. However, examination is always based on individual performance.

It is not allowed to hand in solutions copied from other students, or from elsewhere, even if you make changes to the solutions. If there is suspicion of such, or any other form of cheating, teachers are obliged to report it to the University Disciplinary Board.

Be prepared to answer questions about details in specific code and its connection to theory. You may also be asked to explain why you have chosen a specific solution. This applies to all group members.

If you foresee problems meeting a deadline, contact your teacher. You can then get some help and maybe the deadline can be set to a later date. It is always better to discuss problems, instead of, e.g., to cheat.

Any kind of academic dishonesty, such as cheating, plagiarism or use of unauthorized assistance, and failure to comply with university examination rules, may result in the filing of a complaint to the University Disciplinary Board. The potential penalties include warnings and suspension from further studies.

Page responsible: Jonas Kvarnström
Last updated: 2017-04-10