Graphplan is a general-purpose planner for STRIPS-style domains, based on ideas used in graph algorithms. This alogirhtm was first developed by Avrim Blum and Merrick using C in 1995. There are some researchers implement Graphplan in Java:
- PL-PLAN can be used as Java library, implemented by Philippe Fournier-Viger and Ludovic Lebel in 2004 summer. The .jar file contains source codes and test data without any Java class or library, user should compile and build this project first. In my point of view, their implementation have the following problems:
- No parameter passing support: PL-PLAN does not provide parameter list for operator definition. Users should declare different actions for matching the objects in the parameter list, but it’s hard to enumerate all the possible combinations when there are many operators and objects. For example, if a problem contains single type of object with 4 instances and there is an operation takes 2 parameters, user should combine two different instances to associate with this operation’s parameters and it needs 4*3=12 times.
- Unexecutable testing program: Some JUnit test codes encountered ‘undefined method’ compile errors.
- Poor file organization: Files are not organized well, either testing data or some Java programs are stored in wrong folder. For example, the demo programs Example1.java and Example2.java are located in javaapi directory, these sample programs should store in a specific demonstration folder. The Graphplan API (javaapi) directory definitely not the right folder for such example program files. Moreover, the testing data files are allocated on the PL-PLAN root directory, these files must be stored in a specified directory as the data repository. An unit test folder should be prepared for the JUnit test programs instead of storing in API (or algorithms) folder .
- JPLAN can be downloaded from SourceForge.net, implemented by By Yasser EL-Manzalawy in April, 2004. The .jar code consists of a runnable library and source codes. Simply run one of the three example programs, rocket, blocks, and robot, will get .gp and .pln files. The .gp is the mutual exclusive description of the leveled GraphPlan graph, whereas the .pln is the planning results. The following is my summary of JPLAN:
- Support parameter matching, but not follow the PDDL (Planning Domain Definition Language) standard.
- File organization is better than PL-PLAN
- All programs can be successfully compiled
- The token parsing programs contains goto-like statements, programs contain <label> and continue <label> statements for parsing input problem.
- The naming and programming style of parser programs are not as good as the styles of Graphplan algorithm programs. The author uses meaningless word jj as the variable and method names.