Skip to content

Commit 5b4584b

Browse files
committed
Added critical heuristic
1 parent 43a013b commit 5b4584b

3 files changed

Lines changed: 46 additions & 5 deletions

File tree

example-run.txt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
A* - Delete Relaxation - H_Max
2+
======PLAN (Nodes)=======
3+
['Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), connected(NewYork, Boston), connected(Boston, Pittsburgh), connected(Albany, NewYork), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), at(Boston), connected(Toronto, NewYork), total-cost = 3 | g = 3.00 | h = inf | open = False | closed = True }', 'Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), connected(NewYork, Boston), connected(Boston, Pittsburgh), connected(Albany, NewYork), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), connected(Toronto, NewYork), at(NewYork), visited(NewYork), total-cost = 6 | g = 6.00 | h = inf | open = False | closed = True }', 'Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), at(Albany), connected(NewYork, Boston), connected(Boston, Pittsburgh), connected(Albany, NewYork), visited(Albany), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), connected(Toronto, NewYork), visited(NewYork), total-cost = 9 | g = 9.00 | h = inf | open = False | closed = True }', 'Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), at(Toronto), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), connected(NewYork, Boston), connected(Boston, Pittsburgh), visited(Toronto), connected(Albany, NewYork), visited(Albany), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), connected(Toronto, NewYork), visited(NewYork), total-cost = 12 | g = 12.00 | h = inf | open = False | closed = True }', 'Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), connected(NewYork, Boston), visited(Pittsburgh), connected(Boston, Pittsburgh), at(Pittsburgh), visited(Toronto), connected(Albany, NewYork), visited(Albany), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), connected(Toronto, NewYork), visited(NewYork), total-cost = 15 | g = 15.00 | h = 15.00 | open = True | closed = False }']
4+
======PLAN (Actions)=======
5+
('move(Pittsburgh, Boston)>', 'total-cost = 3')
6+
('move(Boston, NewYork)>', 'total-cost = 6')
7+
('move(NewYork, Albany)>', 'total-cost = 9')
8+
('move(Albany, Toronto)>', 'total-cost = 12')
9+
('move(Toronto, Pittsburgh)>', 'total-cost = 15')
10+
11+
======METRICS=======
12+
Expanded 17 state(s).
13+
Opened 27 state(s).
14+
Reopened 0 state(s).
15+
Evaluated 21 state(s).
16+
Generated 28 state(s).
17+
Dead ends: 3 state(s).
18+
Runtime: 1.46s.
19+
Total heuristic runtime: 2.37s
20+
Computational weight of heuristic in the search: 162.00%
21+
22+
A* - Delete Relaxation - H_Add
23+
======PLAN (Nodes)=======
24+
['Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), connected(NewYork, Boston), connected(Boston, Pittsburgh), connected(Albany, NewYork), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), at(Boston), connected(Toronto, NewYork), total-cost = 3 | g = 3.00 | h = inf | open = False | closed = True }', 'Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), connected(NewYork, Boston), connected(Boston, Pittsburgh), connected(Albany, NewYork), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), connected(Toronto, NewYork), at(NewYork), visited(NewYork), total-cost = 6 | g = 6.00 | h = inf | open = False | closed = True }', 'Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), at(Albany), connected(NewYork, Boston), connected(Boston, Pittsburgh), connected(Albany, NewYork), visited(Albany), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), connected(Toronto, NewYork), visited(NewYork), total-cost = 9 | g = 9.00 | h = inf | open = False | closed = True }', 'Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), at(Toronto), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), connected(NewYork, Boston), connected(Boston, Pittsburgh), visited(Toronto), connected(Albany, NewYork), visited(Albany), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), connected(Toronto, NewYork), visited(NewYork), total-cost = 12 | g = 12.00 | h = inf | open = False | closed = True }', 'Node { object(NewYork), object(Pittsburgh), object(Toronto), object(Boston), object(Albany), connected(Pittsburgh, Boston), connected(Toronto, Albany), visited(Boston), connected(NewYork, Albany), connected(NewYork, Toronto), connected(Toronto, Pittsburgh), connected(NewYork, Boston), visited(Pittsburgh), connected(Boston, Pittsburgh), at(Pittsburgh), visited(Toronto), connected(Albany, NewYork), visited(Albany), connected(NewYork, Pittsburgh), connected(Albany, Toronto), connected(Boston, NewYork), connected(Pittsburgh, NewYork), connected(Toronto, NewYork), visited(NewYork), total-cost = 15 | g = 15.00 | h = 15.00 | open = True | closed = False }']
25+
======PLAN (Actions)=======
26+
('move(Pittsburgh, Boston)>', 'total-cost = 3')
27+
('move(Boston, NewYork)>', 'total-cost = 6')
28+
('move(NewYork, Albany)>', 'total-cost = 9')
29+
('move(Albany, Toronto)>', 'total-cost = 12')
30+
('move(Toronto, Pittsburgh)>', 'total-cost = 15')
31+
32+
======METRICS=======
33+
Expanded 17 state(s).
34+
Opened 27 state(s).
35+
Reopened 0 state(s).
36+
Evaluated 21 state(s).
37+
Generated 28 state(s).
38+
Dead ends: 3 state(s).
39+
Runtime: 1.31s.
40+
Total heuristic runtime: 1.22s
41+
Computational weight of heuristic in the search: 93.45%
42+

jupyddl/heuristics.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,6 @@ def __init__(self, automated_planner, critical_path_level=1):
284284

285285
if self.critical_path_level == 2:
286286
self.goals = [[g1, g2] for g1 in self.automated_planner.goals for g2 in self.automated_planner.goals if g1 != g2]
287-
#create subgoal1, subgoal2
288287

289288
if self.critical_path_level == 3:
290289
self.goals = [
@@ -297,7 +296,7 @@ def __init__(self, automated_planner, critical_path_level=1):
297296

298297
print (self.goals)
299298

300-
299+
301300
def __h_max(self, costs):
302301
return max(costs)
303302

@@ -370,6 +369,4 @@ def zero_heuristic():
370369
else:
371370
nodes[child_hash] = child
372371
open_nodes_n += 1
373-
374-
self.automated_planner.logger.warning("!!! No path found !!!")
375372
return float('inf')

scripts/ipc.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323
output = sys.argv[2]
2424

2525
apla = AutomatedPlanner(domain, problem, log_level="WARNING")
26-
path, metrics = apla.astar_best_first_search(heuristic_key="critical_path/2")
26+
path, metrics = apla.astar_best_first_search(heuristic_key="critical_path/1")
2727
actions = apla.get_actions_from_path(path)
2828
path = Path(path)
29+
#What happens when there is only one goal state?
30+
2931
path2, metrics2 = apla.astar_best_first_search(heuristic_key="critical_path/1")
3032
actions2 = apla.get_actions_from_path(path2)
3133
path2 = Path(path2)

0 commit comments

Comments
 (0)