[Project IFT702] / Planning for Scientific Conference with LPG

The last planner we tried is LPG (Local search for Planning Graphs). LPG is a planner based on local search and planning graphs that handles PDDL2.1 domains involving numerical quantities and durations. The system can solve both plan generation and plan adaptation problems. The basic search scheme of LPG was inspired by Walksat, an efficient procedure to solve SAT-problems. The search space of LPG consists of of "action graphs", particular subgraphs of the planning graph representing partial plans. The search steps are certain graph modifications transforming an action graph into another one. The best-first algorithm is chosen for LPG. The objective is to find a goal state s that minmizes some objective function f(s) and look at alll of the execution traces to see which one leads to the best solution.

Sources of LPG is available at : http://zeus.ing.unibs.it/lpg/download-lpg1.2.html

Download and Compile LPG

tar xvfz lpg1.2-source.tar.gz
cd LPG-1.2-source/LPG
make

Run LPG with Scientific Conference

  1. Generate a problem file (or use an existing available on our PDDL domain page)
  2. Run the planner
[PATH_TO_LPG]/lpg -o ScientificConf.pddl -f test1.fct -n 1  // n is the the desired number of solutions
  1. Execute the result in the simulator


Results

Test Case Goals / Plan Time
test1.fct:
planner has to do full navigation. GOTO are possible
only between visible and near waypoints.


 0.000: (GOTO STARTPLACE REGISTRATION) [D:1.000; C:1.000]
 1.000: (REGISTER REGISTRATION) [D:1.000; C:1.000]
 2.000: (GOTO REGISTRATION FRONTROOM_1) [D:1.000; C:1.000]
 3.000: (GOTO FRONTROOM_1 FRONTROOM_2) [D:1.000; C:1.000]
 4.000: (GOTO FRONTROOM_2 STANDROOM_2) [D:1.000; C:1.000]
 5.000: (MAKE-PRESENTATION STANDROOM_2 PRESSESSION1) [D:1.000; C:1.000]
 0.31

test1_nav.fct:
the same problem as test1.fct except that here, the
planner don't have to do full navigation. GOTO
are possible for every pair of waypoints.
 0.000: (GOTO STARTPLACE REGISTRATION) [D:1.000; C:1.000]
 1.000: (REGISTER REGISTRATION) [D:1.000; C:1.000]
 2.000: (GOTO REGISTRATION STARTPLACE) [D:1.000; C:1.000]
 3.000: (GOTO STARTPLACE STANDROOM_2) [D:1.000; C:1.000]
 4.000: (MAKE-PRESENTATION STANDROOM_2 PRESSESSION1) [D:1.000; C:1.000]
1.67

test2.fct:

Goal
  • (presentation-done pressession0 StandRoom_1)
  • (assisted-to-pres pressession1 SeatsRoom_3)
  • (assisted-to-pres pressession5 SeatsRoom_1)

 0.000: (GOTO STARTPLACE REGISTRATION) [D:1.000; C:1.000]
 1.000: (REGISTER REGISTRATION) [D:1.000; C:1.000]
 2.000: (GOTO REGISTRATION WP_0) [D:1.000; C:1.000]
 3.000: (GOTO WP_0 SEATSROOM_1) [D:1.000; C:1.000]
 4.000: (ASSIST-PRESENTATION SEATSROOM_1 PRESSESSION5) [D:1.000; C:1.000]
 5.000: (GOTO SEATSROOM_1 STANDROOM_1) [D:1.000; C:1.000]
 6.000: (MAKE-PRESENTATION STANDROOM_1 PRESSESSION0) [D:1.000; C:1.000]
 7.000: (GOTO STANDROOM_1 FRONTROOM_1) [D:1.000; C:1.000]
 8.000: (GOTO FRONTROOM_1 FRONTROOM_2) [D:1.000; C:1.000]
 9.000: (GOTO FRONTROOM_2 FRONTROOM_3) [D:1.000; C:1.000]
 10.000: (GOTO FRONTROOM_3 SEATSROOM_3) [D:1.000; C:1.000]
 11.000: (ASSIST-PRESENTATION SEATSROOM_3 PRESSESSION1) [D:1.000; C:1.000]
0.37

test2_nav.fct:
the same problem as test2.fct except that here, the
planner don't have to do full navigation.
 0.000: (GOTO STARTPLACE REGISTRATION) [D:1.000; C:1.000]
 1.000: (REGISTER REGISTRATION) [D:1.000; C:1.000]
 2.000: (GOTO REGISTRATION SEATSROOM_1) [D:1.000; C:1.000]
 3.000: (ASSIST-PRESENTATION SEATSROOM_1 PRESSESSION5) [D:1.000; C:1.000]
 4.000: (GOTO SEATSROOM_1 SEATSROOM_3) [D:1.000; C:1.000]
 5.000: (ASSIST-PRESENTATION SEATSROOM_3 PRESSESSION1) [D:1.000; C:1.000]
 6.000: (GOTO SEATSROOM_3 STANDROOM_1) [D:1.000; C:1.000]
 7.000: (MAKE-PRESENTATION STANDROOM_1 PRESSESSION0) [D:1.000; C:1.000]
2.05
test2_nav.fct:
run this file again to see the result which is different
from the first one
 0.000: (GOTO STARTPLACE REGISTRATION) [D:1.000; C:1.000]
 1.000: (REGISTER REGISTRATION) [D:1.000; C:1.000]
 2.000: (GOTO REGISTRATION STARTPLACE) [D:1.000; C:1.000]
 3.000: (GOTO STARTPLACE SEATSROOM_3) [D:1.000; C:1.000]
 4.000: (ASSIST-PRESENTATION SEATSROOM_3 PRESSESSION1) [D:1.000; C:1.000]
 5.000: (GOTO SEATSROOM_3 SEATSROOM_1) [D:1.000; C:1.000]
 6.000: (ASSIST-PRESENTATION SEATSROOM_1 PRESSESSION5) [D:1.000; C:1.000]
 7.000: (GOTO SEATSROOM_1 STANDROOM_1) [D:1.000; C:1.000]
 8.000: (MAKE-PRESENTATION STANDROOM_1 PRESSESSION0) [D:1.000; C:1.000]

2.00
test3_nav.fct:
Goals :
  • (presentation-done pressession0 StandRoom_2)
  • (assisted-to-pres pressession1 SeatsRoom_1)
  • (assisted-to-pres pressession2 SeatsRoom_1)
  • (poster-done postersession1 P3)
  • (picture-taken-poster postersession1 P10)
error message:


Generation of neighborhood for EQUAL_OP not yet implemented

There is no action duration to compute


test4_nav.fct and test5_nav.fct both files get same error message as test3_nav.fct did



Comment about LPG