-
Notifications
You must be signed in to change notification settings - Fork 10
/
README
180 lines (140 loc) · 6.6 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
VHPOP 3.0
=========
VHPOP is a versatile heuristic partial order planner loosely based on
UCPOP with the following main features:
* Can plan with either ground or lifted actions.
* Can enforce joint parameter domain constraints when using lifted
actions.
* Has several different plan ranking heuristics to choose from that
can be combined into complex plan ranking functions.
* Efficiently implements all common flaw selection strategies,
including LCFR and ZLIFO, and many novel ones, and allows flaw
selection strategies to be specified using a concise notation.
* Several flaw selection strategies can be used simultaneously.
* Implements A*, IDA*, and hill climbing search.
* Fully supports levels 1 and 3 of PDDL2.1.
For installation instructions, see `INSTALL'.
For copyright information and distribution restrictions, see `COPYING'.
Search Algorithms
-----------------
You can select the search algorithms to use with the -s flag. The
options are as follows:
A for A*.
IDA for IDA*.
HC for hill climbing.
Action Costs
------------
VHPOP currently provides three definitions of action costs, selected
through the -a flag, to use in conjunction with the additive
heuristic:
UNIT uses unit cost for all actions.
DURATION uses absolute duration as action costs.
RELATIVE uses relative duration as action costs.
Plan Selection
--------------
The plan ranking function is specified with the -h flag. A plan
ranking function is a sequence of simple heuristic plan ranking
functions in decreasing order of significance. For example,
"S+OC/LIFO" uses the number of steps plus the number of open
conditions of a plan as primary rank, and selects plans in LIFO order
in case the primary rank of several plans are the same. Some simple
plan ranking functions use a weight, which can be specified with the
-w flag. VHPOP implements the following simple plan ranking
functions:
LIFO gives priority to plans created later.
FIFO gives priority to plans created earlier.
OC gives priority to plans with few open conditions.
UC gives priority to plans with few threatened links.
BUC gives priority to plans with no threatened links.
S+OC uses h(p) = |S(p)| + w*|OC(p)| for plan p.
UCPOP uses h(p) = |S(p)| + w(|OC(p)| + |UC(p)|) for plan p.
ADD_COST uses the additive cost heuristic.
ADD_WORK uses the additive work heuristic.
ADD uses h(p) = |S(p)| + w*ADD_COST for plan p.
ADDR is like ADD, but tries to take reuse into account.
ADDR_COST uses the ADDR cost heuristic.
ADDR_WORK uses the ADDR work heuristic.
MAX uses the max heuristic.
MAX_COST uses the max cost heuristic.
MAX_WORK uses the max work heuristic.
MAXR is like MAX, but tries to take reuse into account.
MAXR_COST uses the MAXR cost heuristic.
MAXR_WORK uses the MAXR work heuristic.
Flaw Selection
--------------
A flaw selection strategy is an ordered list of selection criteria.
Each selection criterion is of the form
{flaw types}[max refinements]ordering criterion,
and applies to flaws of the given types which can be resolved in at
most "max refinements" ways. The limit on number of refinements is
optional and can be left out. The ordering criterion is used to order
flaws that the selection criterion applies to. LIFO order is used if
the ordering criterion cannot be used to distinguish two or more
flaws.
The different flaw types are "o" (open condition), "t" (static open
condition), "l" (local open condition), "u" (unsafe open condition),
"n" (non-separable threat), and "s" (separable threat). The different
ordering criteria are "LIFO", "FIFO", "R" (random), "LR" (least
refinements first), "MR" (opposite of LR), "New" (open conditions that
can be resolved with new step first), "Reuse" (opposite of New),
"MC_h" (most cost with heuristic h), "LC_h" (opposite of MC_h), "MW_h"
(most work with heuristic h), "LW_h" (opposite of MW_h).
Flaws are matched with selection criteria, and it is required for
completeness that every flaw matches at least one selection criterion
in a flaw selection strategy. The flaw that matches the earliest
selection criterion, and is ordered before any other flaws matching
the same criterion (according to the ordering criterion), is the flaw
that gets selected by the flaw selection strategy. Note that we do
not always need to test all flaws. If, for example, the first
selection criterion is {n,s}LIFO, and we have found a threat, the we
do not need to consider any other flaws for selection.
Most common flaw selection strategies are predefined, along with
several novel ones:
UCPOP {n,s}LIFO/{o}LIFO
UCPOP-LC {n,s}LIFO/{o}LR
DSep-LIFO {n}LIFO/{o}LIFO/{s}LIFO
DSep-FIFO {n}LIFO/{o}FIFO/{s}LIFO
DSep-LC {n}LIFO/{o}LR/{s}LIFO
DUnf-LIFO {n,s}0LIFO/{n,s}1LIFO/{o}LIFO/{n,s}LIFO
DUnf-FIFO {n,s}0LIFO/{n,s}1LIFO/{o}FIFO/{n,s}LIFO
DUnf-LC {n,s}0LIFO/{n,s}1LIFO/{o}LR/{n,s}LIFO
DUnf-Gen {n,s,o}0LIFO/{n,s,o}1LIFO/{n,s,o}LIFO
DRes-LIFO {n,s}0LIFO/{o}LIFO/{n,s}LIFO
DRes-FIFO {n,s}0LIFO/{o}FIFO/{n,s}LIFO
DRes-LC {n,s}0LIFO/{o}LR/{n,s}LIFO
DEnd-LIFO {o}LIFO/{n,s}LIFO
DEnd-FIFO {o}FIFO/{n,s}LIFO
DEnd-LC {o}LR/{n,s}LIFO
LCFR {n,s,o}LR
LCFR-DSep {n,o}LR/{s}LR
ZLIFO {n}LIFO/{o}0LIFO/{o}1NEW/{o}LIFO/{s}LIFO
ZLIFO* {o}0LIFO/{n,s}LIFO/{o}1NEW/{o}LIFO
Static {t}LIFO/{n,s}LIFO/{o}LIFO
LCFR-Loc {n,s,l}LR
LCFR-Conf {n,s,u}LR/{o}LR
LCFR-Loc-Conf {n,s,u}LR/{l}LR
MC {n,s}LR/{o}MC_add
MC-Loc {n,s}LR/{l}MC_add
MC-Loc-Conf {n,s}LR/{u}MC_add/{l}MC_add
MW {n,s}LR/{o}MW_add
MW-Loc {n,s}LR/{l}MW_add
MW-Loc-Conf {n,s}LR/{u}MW_add/{l}MW_add
Several flaw selection strategies can be used simultaneously in a
round-robin scheme. For example,
./vhpop -f LCFR -l 10000 -f MW -l unlimited <domain> <problem>
specifies that both LCFR and MW should be used. The search limit with
LCFR is 10,000 generated search nodes, and with MW the number of
search nodes generated is only limited by the physical memory of the
machine. The use of multiple flaw selection strategies is similar to
running multiple instances of VHPOP concurrently. A separate search
queue is kept for each flaw selection strategy. Flaw selection
strategies are switched after 1,000; 2,000; 4,000; 8,000;
etc. generated search nodes or when the search limit is reached for a
strategy. The first plan, if any, found is returned as the solution
regardless of which flaw selection strategy was used.
Plans for Future Improvements
-----------------------------
* Add better support for plan optimization metric (currently ignored).
* Allow secondary ordering criterion for flaw selection strategies.
* Add support for numeric effects and preconditions (level 2 of PDDL2.1).
* Add support for axioms (PDDL2.2).