Planning with Sensing Actions and Incomplete Information Using Logic Programming - Boolean Version

 

 Home
 Boolean Version >>

   Translator

   Test Results

       Domains

       Comparison

   Downloads

 Multivalued Version

                 

Translator

The translator is a program written in Sisctus prolog. The input of the translator is an Ak program describing the planning domain and the output is a smodels program.

To translate a planning problem P=(D,I,G) into p(P), follow the steps:

1. Launch Sicstus prolog

bangkok[10]% sicstus

SICStus 3.7 beta3: Thu May 14 10:01:09 MET DST 1998

2. Compile the translator

| ?- [tr].

3. Issue gen. at the sicstus prompt to generate a domain written in the Ak language and then enter the domain description file name. Notice that the the default extension of the input domain description file is .pl.

| ?- gen. 

 Enter domain description file name: <problem-name>. (for example, a1_prob.)

4. Quit the Sicstus

| ?- halt.

The output file has the same name as the input file but the extension is .smo. For instance, the output logic program for the a1_prob.pl domain will be a1_prob.smo.

The next step is to use smodels and lparse to generate solutions for the given domain. You need to provide the maximum length and maximum level for search space. Notice that for conformant plans, the value of the level should be set to 1. For example, the following command will generate the plan for the a1_prob domain:

bangkok[10]% lparse -c length = 5 -c level = 2 a1_prob.smo | smodels

Test Results

Domains

The domains/problems used to test the program are shown in the table below. The first column shows problems and domains. These problems and domains are expressed as Ak programs in the second column. The corresponding logic programs for these domains, generated by the translator, are shown in the third column.

Domains/Problems

Ak

Smodels

Cassandra

a1-prob

a1_prob.pl

a1_prob.smo

a2-prob

a2_prob.pl

a2_prob.smo

a3-prob

a3_prob.pl

a3_prob.smo

a4-prob

a4_prob.pl

a4_prob.smo

a5-prob

a5_prob.pl

a5_prob.smo

a6-prob

a6_prob.pl

a6_prob.smo

a7-prob

a7_prob.pl

a7_prob.smo

Bomb in the toilet 

bt-1sa

bt_1sa.pl

bt_1sa.smo

bt-2sa

bt_2sa.pl

bt_2sa.smo

bt-3sa

bt_3sa.pl

bt_3sa.smo

bt-4sa

bt_4sa.pl

bt_4sa.smo

Sickness

sick-3-1

sick_3_1ill.pl

sick_3_1ill.smo

sick-3-2

sick_3_2ill.pl

sick_3_2ill.smo

sick-3-3

sick_3_3ill.pl

sick_3_3ill.smo

sick-3-4

sick_3_4ill.pl

sick_3_4ill.smo

sick-3-5

sick_3_5ill.pl

sick_3_5ill.smo

 Comparison

The following table shows the comparison between our planner and SGP for the above domains.

Problems/ SGP p(P)
Domains 1st 2nd 3rd Avg. 1st (*) 1st (**)  2nd(*) 2nd(**) 3rd (*) 3rd(**) Avg.(*) Avg.(**)
Cassandra
a1-prob 140 170 140 150 387 190 358 210 390 190 378 197
a2-prob 40 40 40 40 811 500 810 510 809 460 810 490
a3-prob 50 50 40 47 282 110 284 110 282 130 283 117
a4-prob 300 300 300 300 704 470 705 480 705 490 705 480
a5-prob 50 30 40 40 185 80 219 70 185 80 196 77
a6-prob  NA  NA  NA  NA 7,990 6,860 7,977 6,850 7,971 6,930 7,979 6,880
a7-prob 120 120 120 120 238 80 239 90 239 80 239 83
Bomb in the toilet 
bt-1sa 1,790 1,630 1,660 1,693 4,491 3,660 4,420 3,510 4,702 3,640 4,538 3,603
bt-2sa 1,760 1,760 1,710 1,743 5,386 4,220 5,349 4,070 5,285 4,080 5,340 4,123
bt-3sa 1,940 1,910 1,900 1,917 5,404 3,950 5,349 4,140 5,369 4,070 5,374 4,053
bt-4sa 2,130 2,150 2,080 2,120 7,387 5,650 7,286 5,530 7,335 5,530 7,336 5,570
Sickness 
sick-3-1 20 20 10 17 437 70 459 50 449 60 448 60
sick-3-2 130 130 160 140 810 320 812 320 791 300 804 313
sick-3-3 500 480 550 510 2,740 1,640 2,735 1,790 2,705 1,760 2,727 1,730
sick-3-4 2,630 2,610 2,650 2,630 3,632 2,390 3,652 2,400 3,633 2,460 3,639 2,417
sick-3-5 17,070 17,370 17,690 17,377 3,749 2,510 3,810 2,620 3,613 2,750 3,724 2,627

Unit: millisecond

Notes:

(*) Total time (smodels and lparse).

(**) Time consumed by smodels only.

NA: Errors due to memory limit exceeded.

Downloads

The translator, sample domains and  testing results can be found in this file. Please download, extract this file and view the README file to understand individual files in details. To run this stuff, you need  to download  lparse and smodels and save them in the same directory.

Contact information

Please contact me if you have any questions or comments related to this stuff.