For example, running the latest version of Aries three times yields the following three plans:
**** Plan **** [Makespan 5]
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.5: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
**** Plan **** [Makespan 6]
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.3: (sample_soil rover0 rover0store waypoint3) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.5: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
**** Plan **** [Makespan 7]
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.1: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.3: (sample_rock rover1 rover1store waypoint1) [0.0]
0.3: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.5: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
`❯ ./aries-plan ../../../Github/ipc2023-domains-main/partial-order/Rover/pfile04.hddl -d ../../../Github/ipc2023-domains-main/partial-order/Rover/domain.hddl --optimize makespan
===== Preprocessing ======
Removed 93 unusable effects
Lifting predicates to state variables:
- have_soil_analysis:at_soil_sample [from: have_soil_analysis(1) -> 0:at_soil_sample(0) -> Bool:]
- have_rock_analysis:at_rock_sample [from: have_rock_analysis(1) -> 0:at_rock_sample(0) -> Bool:]
- full:empty [from: full(0) -> Bool:empty(0) -> Bool:]
- store_of [from: store_of(0) -> 1:]
- on_board [from: on_board(0) -> 1:]
- equipped_for_rock_analysis [from: equipped_for_rock_analysis() -> 0:]
- calibration_target [from: calibration_target(0) -> 1:]
- at_lander [from: at_lander(0) -> 1:]
Transforming static state functions as table constraints:
- can_traverse
- equipped_for_imaging
- equipped_for_soil_analysis
- supports
- visible
- visible_from
- store_of
- on_board
- equipped_for_rock_analysis
- calibration_target
- at_lander
Rolling, rolling, rolling... Rawhide!
==========================
Useful values:
- available(rover):true
- have_image(rover, objective, mode):true
- visited(waypoint):false
- full(store):empty
- full(store):full
- at(rover, waypoint):false
- have_soil_analysis(waypoint):at_soil_sample
- calibrated(camera, rover):true
- at(rover, waypoint):true
- have_rock_analysis(waypoint):at_rock_sample
- channel_free(lander):true
- have_rock_analysis(waypoint):rover
- have_soil_analysis(waypoint):rover
- full(store):★any★
Continuous fluents:
- available
- available(rover):true
single useful: available(rover):true
- channel_free
- channel_free(lander):true
single useful: channel_free(lander):true
- have_soil_analysis:at_soil_sample
- have_soil_analysis(waypoint):rover
- have_soil_analysis(waypoint):at_soil_sample
- have_rock_analysis:at_rock_sample
- have_rock_analysis(waypoint):rover
- have_rock_analysis(waypoint):at_rock_sample
- full:empty
- full(store):empty
single useful: full(store):empty
Fluent hierarchy:
- communicated_image_data
- communicated_soil_data
- communicated_rock_data
- have_soil_analysis full have_rock_analysis
- calibrated have_image
- at
- visited
Action hierarchy:
[0] communicate_image_data
[1] communicate_soil_data
[2] communicate_rock_data
[3] sample_soil
[3] drop
[3] sample_rock
[4] calibrate
[4] take_image
[5] navigate
[6] unvisit
[6] visit
[7] m-navigate_abs-1
[7] m-empty-store-1
[7] m-calibrate_abs
[7] m-send_soil_data
[7] m-get_soil_data
[7] m-navigate_abs-3
[7] m-empty-store-2
[7] m-send_rock_data
[7] m-get_rock_data
[7] m-get_image_data
[7] m-navigate_abs-2
[7] m-send_image_data
[7] m-navigate_abs-4
∞ Solving with depth ∞
[0.000s] Populated
**** Decomposition ****
==>
51 (calibrate rover1 camera0 objective0 waypoint2)
38 (navigate rover1 waypoint2 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
18 (sample_rock rover1 rover1store waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 4 9 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 16 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
4 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 38
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 48 51
48 (navigate_abs rover1 waypoint2) -> m-navigate_abs-2
9 (empty-store rover0store rover0) -> m-empty-store-1
16 (empty-store rover1store rover1) -> m-empty-store-1
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 32 36
32 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 45 46
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 58 60
45 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
58 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.1: (calibrate rover1 camera0 objective0 waypoint2) [0.0]
0.2: (navigate rover1 waypoint2 waypoint1) [0.0]
0.3: (sample_soil rover0 rover0store waypoint3) [0.0]
0.4: (sample_rock rover1 rover1store waypoint1) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
0.7: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.8: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
**** Decomposition ****
==>
38 (navigate rover1 waypoint2 waypoint1)
18 (sample_rock rover1 rover1store waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 4 9 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 16 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
4 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 38
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 48 51
9 (empty-store rover0store rover0) -> m-empty-store-1
16 (empty-store rover1store rover1) -> m-empty-store-1
48 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 45 46
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
45 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 32 36
32 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 58 60
58 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.3: (sample_soil rover0 rover0store waypoint3) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
0.7: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
**** Decomposition ****
==>
38 (navigate rover1 waypoint2 waypoint1)
18 (sample_rock rover1 rover1store waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 4 9 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 16 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
4 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 38
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 48 51
9 (empty-store rover0store rover0) -> m-empty-store-1
16 (empty-store rover1store rover1) -> m-empty-store-1
48 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 45 46
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
45 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 32 36
32 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 58 60
58 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.3: (sample_soil rover0 rover0store waypoint3) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.5: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
==== Worker 1
Solver is running
==== Worker 2
Solver is running
==== Worker 3
Solver is running
==== Worker 4
solutions : 3
restarts : 0
decisions : 426 (73.6k /sec)
conflicts : 79 (13.7k /sec)
dom-updates : 35,365 (6.11M /sec)
=================
Solvers : SAT DiffLog CP Equality Optim
% CPU (propagation) : 40.15 % 56.37 % 1.54 % 0.32 % 0.28 %
# propagation loops : 1,218 1,189 1,139 1,139 1,189
# bound updates : 16,444 18,918 0 0 3
# conflicts : 29 50 0 0 0
=================
Init time : 0.006610 s
Solve time : 0.005786 s
====== SAT =====
DB size : 11928
Num unit propagations: 13119
====== Optim =====
====== DiffLog =====
# nodes: 744
# propagators: 16844
# propagations: 0
# domain updates: 4621
# bounds deactivations: 11694
# theory propagations: 0
# theory deactivations: 0
====== Equality =====
num edge props1 0
num edge props+ 0
num edge props- 0
num edge props1 ++ 0
num edge props1 +- 0
num edge props1 -+ 0
num edge props1 eff 0
num edge props2 ++ 0
num edge props2 +- 0
num edge props2 -+ 0
====== CP =====
# constraints: 0
# propagations: 0
[0.043s] Solved
**** Decomposition ****
==>
38 (navigate rover1 waypoint2 waypoint1)
18 (sample_rock rover1 rover1store waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 4 9 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 16 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
4 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 38
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 48 51
9 (empty-store rover0store rover0) -> m-empty-store-1
16 (empty-store rover1store rover1) -> m-empty-store-1
48 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 45 46
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
45 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 32 36
32 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 58 60
58 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.3: (sample_soil rover0 rover0store waypoint3) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.5: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
---------------------------------------------------------------------------------------------------------
❯ ./aries-plan ../../../Github/ipc2023-domains-main/partial-order/Rover/pfile04.hddl -d ../../../Github/ipc2023-domains-main/partial-order/Rover/domain.hddl --optimize makespan
===== Preprocessing ======
Removed 93 unusable effects
Lifting predicates to state variables:
- have_soil_analysis:at_soil_sample [from: have_soil_analysis(1) -> 0:at_soil_sample(0) -> Bool:]
- have_rock_analysis:at_rock_sample [from: have_rock_analysis(1) -> 0:at_rock_sample(0) -> Bool:]
- full:empty [from: full(0) -> Bool:empty(0) -> Bool:]
- store_of [from: store_of(0) -> 1:]
- on_board [from: on_board(0) -> 1:]
- equipped_for_rock_analysis [from: equipped_for_rock_analysis() -> 0:]
- calibration_target [from: calibration_target(0) -> 1:]
- at_lander [from: at_lander(0) -> 1:]
Transforming static state functions as table constraints:
- can_traverse
- equipped_for_imaging
- equipped_for_soil_analysis
- supports
- visible
- visible_from
- store_of
- on_board
- equipped_for_rock_analysis
- calibration_target
- at_lander
Rolling, rolling, rolling... Rawhide!
==========================
Useful values:
- channel_free(lander):true
- full(store):empty
- have_rock_analysis(waypoint):rover
- have_soil_analysis(waypoint):at_soil_sample
- have_rock_analysis(waypoint):at_rock_sample
- full(store):full
- calibrated(camera, rover):true
- at(rover, waypoint):false
- at(rover, waypoint):true
- visited(waypoint):false
- have_soil_analysis(waypoint):rover
- have_image(rover, objective, mode):true
- full(store):★any★
- available(rover):true
Continuous fluents:
- available
- available(rover):true
single useful: available(rover):true
- channel_free
- channel_free(lander):true
single useful: channel_free(lander):true
- have_soil_analysis:at_soil_sample
- have_soil_analysis(waypoint):rover
- have_soil_analysis(waypoint):at_soil_sample
- have_rock_analysis:at_rock_sample
- have_rock_analysis(waypoint):at_rock_sample
- have_rock_analysis(waypoint):rover
- full:empty
- full(store):empty
single useful: full(store):empty
Fluent hierarchy:
- communicated_rock_data
- communicated_soil_data
- have_soil_analysis full have_rock_analysis
- communicated_image_data
- calibrated have_image
- at
- visited
Action hierarchy:
[0] communicate_rock_data
[1] communicate_soil_data
[2] drop
[2] sample_rock
[2] sample_soil
[3] communicate_image_data
[4] take_image
[4] calibrate
[5] navigate
[6] unvisit
[6] visit
[7] m-empty-store-2
[7] m-navigate_abs-1
[7] m-navigate_abs-4
[7] m-send_image_data
[7] m-navigate_abs-2
[7] m-calibrate_abs
[7] m-navigate_abs-3
[7] m-send_soil_data
[7] m-get_soil_data
[7] m-empty-store-1
[7] m-get_rock_data
[7] m-send_rock_data
[7] m-get_image_data
∞ Solving with depth ∞
[0.000s] Populated
**** Decomposition ****
==>
51 (calibrate rover1 camera0 objective0 waypoint2)
10 (sample_soil rover0 rover0store waypoint3)
37 (navigate rover1 waypoint2 waypoint1)
18 (sample_rock rover1 rover1store waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 4 8 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
4 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 37
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 47 51
47 (navigate_abs rover1 waypoint2) -> m-navigate_abs-2
8 (empty-store rover0store rover0) -> m-empty-store-1
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 32 36
17 (empty-store rover1store rover1) -> m-empty-store-1
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
32 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 44 46
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 56 60
44 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
56 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.1: (calibrate rover1 camera0 objective0 waypoint2) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.2: (navigate rover1 waypoint2 waypoint1) [0.0]
0.4: (sample_rock rover1 rover1store waypoint1) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.6: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.7: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
0.8: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
**** Decomposition ****
==>
37 (navigate rover1 waypoint2 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
18 (sample_rock rover1 rover1store waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 4 8 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
4 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 37
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 47 51
8 (empty-store rover0store rover0) -> m-empty-store-1
17 (empty-store rover1store rover1) -> m-empty-store-1
47 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 32 36
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 44 46
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
32 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
44 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 56 60
56 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
0.7: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
**** Decomposition ****
==>
37 (navigate rover1 waypoint2 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
18 (sample_rock rover1 rover1store waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 4 8 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
4 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 37
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 47 51
8 (empty-store rover0store rover0) -> m-empty-store-1
17 (empty-store rover1store rover1) -> m-empty-store-1
47 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 32 36
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 44 46
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
32 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
44 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 56 60
56 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.5: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
==== Worker 1
Solver is running
==== Worker 2
Solver is running
==== Worker 3
Solver is running
==== Worker 4
solutions : 3
restarts : 0
decisions : 611 (84.9k /sec)
conflicts : 116 (16.1k /sec)
dom-updates : 42,750 (5.94M /sec)
=================
Solvers : SAT DiffLog CP Equality Optim
% CPU (propagation) : 43.15 % 52.57 % 1.80 % 0.43 % 0.31 %
# propagation loops : 1,840 1,783 1,724 1,724 1,783
# bound updates : 19,926 22,821 0 0 3
# conflicts : 57 59 0 0 0
=================
Init time : 0.006509 s
Solve time : 0.007193 s
====== SAT =====
DB size : 11985
Num unit propagations: 15496
====== Optim =====
====== DiffLog =====
# nodes: 744
# propagators: 16844
# propagations: 0
# domain updates: 6558
# bounds deactivations: 13288
# theory propagations: 0
# theory deactivations: 0
====== Equality =====
num edge props1 0
num edge props+ 0
num edge props- 0
num edge props1 ++ 0
num edge props1 +- 0
num edge props1 -+ 0
num edge props1 eff 0
num edge props2 ++ 0
num edge props2 +- 0
num edge props2 -+ 0
====== CP =====
# constraints: 0
# propagations: 0
[0.044s] Solved
**** Decomposition ****
==>
37 (navigate rover1 waypoint2 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
18 (sample_rock rover1 rover1store waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 4 8 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
4 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 37
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 47 51
8 (empty-store rover0store rover0) -> m-empty-store-1
17 (empty-store rover1store rover1) -> m-empty-store-1
47 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 32 36
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 44 46
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
32 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
44 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 56 60
56 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.5: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
----------------------------------------------------------------------------------------------
❯ ./aries-plan ../../../Github/ipc2023-domains-main/partial-order/Rover/pfile04.hddl -d ../../../Github/ipc2023-domains-main/partial-order/Rover/domain.hddl --optimize makespan
===== Preprocessing ======
Removed 93 unusable effects
Lifting predicates to state variables:
- have_soil_analysis:at_soil_sample [from: have_soil_analysis(1) -> 0:at_soil_sample(0) -> Bool:]
- have_rock_analysis:at_rock_sample [from: have_rock_analysis(1) -> 0:at_rock_sample(0) -> Bool:]
- full:empty [from: full(0) -> Bool:empty(0) -> Bool:]
- store_of [from: store_of(0) -> 1:]
- on_board [from: on_board(0) -> 1:]
- equipped_for_rock_analysis [from: equipped_for_rock_analysis() -> 0:]
- calibration_target [from: calibration_target(0) -> 1:]
- at_lander [from: at_lander(0) -> 1:]
Transforming static state functions as table constraints:
- can_traverse
- equipped_for_imaging
- equipped_for_soil_analysis
- supports
- visible
- visible_from
- store_of
- on_board
- equipped_for_rock_analysis
- calibration_target
- at_lander
Rolling, rolling, rolling... Rawhide!
==========================
Useful values:
- calibrated(camera, rover):true
- full(store):full
- have_rock_analysis(waypoint):at_rock_sample
- have_rock_analysis(waypoint):rover
- full(store):★any★
- have_soil_analysis(waypoint):rover
- at(rover, waypoint):true
- full(store):empty
- available(rover):true
- have_soil_analysis(waypoint):at_soil_sample
- visited(waypoint):false
- at(rover, waypoint):false
- have_image(rover, objective, mode):true
- channel_free(lander):true
Continuous fluents:
- available
- available(rover):true
single useful: available(rover):true
- channel_free
- channel_free(lander):true
single useful: channel_free(lander):true
- have_soil_analysis:at_soil_sample
- have_soil_analysis(waypoint):rover
- have_soil_analysis(waypoint):at_soil_sample
- have_rock_analysis:at_rock_sample
- have_rock_analysis(waypoint):at_rock_sample
- have_rock_analysis(waypoint):rover
- full:empty
- full(store):empty
single useful: full(store):empty
Fluent hierarchy:
- communicated_image_data
- calibrated have_image
- communicated_soil_data
- communicated_rock_data
- have_soil_analysis full have_rock_analysis
- at
- visited
Action hierarchy:
[0] communicate_image_data
[1] calibrate
[1] take_image
[2] communicate_soil_data
[3] communicate_rock_data
[4] drop
[4] sample_soil
[4] sample_rock
[5] navigate
[6] unvisit
[6] visit
[7] m-empty-store-2
[7] m-navigate_abs-1
[7] m-empty-store-1
[7] m-send_soil_data
[7] m-get_soil_data
[7] m-navigate_abs-3
[7] m-send_rock_data
[7] m-send_image_data
[7] m-calibrate_abs
[7] m-navigate_abs-4
[7] m-get_rock_data
[7] m-get_image_data
[7] m-navigate_abs-2
∞ Solving with depth ∞
[0.000s] Populated
**** Decomposition ****
==>
51 (calibrate rover1 camera0 objective0 waypoint2)
10 (sample_soil rover0 rover0store waypoint3)
37 (navigate rover1 waypoint2 waypoint1)
18 (sample_rock rover1 rover1store waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 5 8 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 13 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 22 25 26
5 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
13 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 37
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 49 51
49 (navigate_abs rover1 waypoint2) -> m-navigate_abs-2
8 (empty-store rover0store rover0) -> m-empty-store-1
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 34 36
17 (empty-store rover1store rover1) -> m-empty-store-1
22 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
34 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 42 46
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 56 60
42 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
56 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.1: (calibrate rover1 camera0 objective0 waypoint2) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.2: (navigate rover1 waypoint2 waypoint1) [0.0]
0.4: (sample_rock rover1 rover1store waypoint1) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.6: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.7: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
0.8: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
**** Decomposition ****
==>
37 (navigate rover1 waypoint2 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
51 (calibrate rover1 camera0 objective0 waypoint1)
18 (sample_rock rover1 rover1store waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 5 8 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 13 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 22 25 26
5 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
13 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 37
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 49 51
8 (empty-store rover0store rover0) -> m-empty-store-1
17 (empty-store rover1store rover1) -> m-empty-store-1
49 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 34 36
22 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
34 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 42 46
42 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 56 60
56 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.3: (sample_rock rover1 rover1store waypoint1) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.5: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
0.7: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
**** Decomposition ****
==>
37 (navigate rover1 waypoint2 waypoint1)
18 (sample_rock rover1 rover1store waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 5 8 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 13 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 22 25 26
5 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
13 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 37
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 49 51
8 (empty-store rover0store rover0) -> m-empty-store-1
17 (empty-store rover1store rover1) -> m-empty-store-1
49 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 42 46
22 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
42 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 34 36
34 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 56 60
56 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.3: (sample_soil rover0 rover0store waypoint3) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.5: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
==== Worker 1
Solver is running
==== Worker 2
Solver is running
==== Worker 3
Solver is running
==== Worker 4
solutions : 3
restarts : 0
decisions : 670 (88.0k /sec)
conflicts : 103 (13.5k /sec)
dom-updates : 44,188 (5.80M /sec)
=================
Solvers : SAT DiffLog CP Equality Optim
% CPU (propagation) : 43.19 % 52.30 % 1.76 % 0.43 % 0.38 %
# propagation loops : 1,960 1,915 1,857 1,857 1,915
# bound updates : 19,872 24,313 0 0 3
# conflicts : 45 58 0 0 0
=================
Init time : 0.006553 s
Solve time : 0.007616 s
====== SAT =====
DB size : 11976
Num unit propagations: 15483
====== Optim =====
====== DiffLog =====
# nodes: 744
# propagators: 16844
# propagations: 0
# domain updates: 6804
# bounds deactivations: 14901
# theory propagations: 0
# theory deactivations: 0
====== Equality =====
num edge props1 0
num edge props+ 0
num edge props- 0
num edge props1 ++ 0
num edge props1 +- 0
num edge props1 -+ 0
num edge props1 eff 0
num edge props2 ++ 0
num edge props2 +- 0
num edge props2 -+ 0
====== CP =====
# constraints: 0
# propagations: 0
[0.045s] Solved
**** Decomposition ****
==>
37 (navigate rover1 waypoint2 waypoint1)
18 (sample_rock rover1 rover1store waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 5 8 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 13 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 22 25 26
5 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
13 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 37
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 49 51
8 (empty-store rover0store rover0) -> m-empty-store-1
17 (empty-store rover1store rover1) -> m-empty-store-1
49 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 42 46
22 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
42 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 34 36
34 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 56 60
56 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.2: (sample_rock rover1 rover1store waypoint1) [0.0]
0.2: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.3: (sample_soil rover0 rover0store waypoint3) [0.0]
0.4: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.5: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
❯ ./aries-plan ../../../Github/ipc2023-domains-main/partial-order/Rover/pfile04.hddl -d ../../../Github/ipc2023-domains-main/partial-order/Rover/domain.hddl --optimize makespan
===== Preprocessing ======
Removed 93 unusable effects
Lifting predicates to state variables:
- have_soil_analysis:at_soil_sample [from: have_soil_analysis(1) -> 0:at_soil_sample(0) -> Bool:]
- have_rock_analysis:at_rock_sample [from: have_rock_analysis(1) -> 0:at_rock_sample(0) -> Bool:]
- full:empty [from: full(0) -> Bool:empty(0) -> Bool:]
- store_of [from: store_of(0) -> 1:]
- on_board [from: on_board(0) -> 1:]
- equipped_for_rock_analysis [from: equipped_for_rock_analysis() -> 0:]
- calibration_target [from: calibration_target(0) -> 1:]
- at_lander [from: at_lander(0) -> 1:]
Transforming static state functions as table constraints:
- can_traverse
- equipped_for_imaging
- equipped_for_soil_analysis
- supports
- visible
- visible_from
- store_of
- on_board
- equipped_for_rock_analysis
- calibration_target
- at_lander
Rolling, rolling, rolling... Rawhide!
==========================
Useful values:
- full(store):★any★
- visited(waypoint):false
- available(rover):true
- full(store):empty
- channel_free(lander):true
- at(rover, waypoint):true
- at(rover, waypoint):false
- have_soil_analysis(waypoint):rover
- have_soil_analysis(waypoint):at_soil_sample
- have_rock_analysis(waypoint):rover
- have_image(rover, objective, mode):true
- calibrated(camera, rover):true
- have_rock_analysis(waypoint):at_rock_sample
- full(store):full
Continuous fluents:
- available
- available(rover):true
single useful: available(rover):true
- channel_free
- channel_free(lander):true
single useful: channel_free(lander):true
- have_soil_analysis:at_soil_sample
- have_soil_analysis(waypoint):at_soil_sample
- have_soil_analysis(waypoint):rover
- have_rock_analysis:at_rock_sample
- have_rock_analysis(waypoint):at_rock_sample
- have_rock_analysis(waypoint):rover
- full:empty
- full(store):empty
single useful: full(store):empty
Fluent hierarchy:
- communicated_soil_data
- communicated_image_data
- communicated_rock_data
- have_soil_analysis full have_rock_analysis
- calibrated have_image
- at
- visited
Action hierarchy:
[0] communicate_soil_data
[1] communicate_image_data
[2] communicate_rock_data
[3] drop
[3] sample_rock
[3] sample_soil
[4] take_image
[4] calibrate
[5] navigate
[6] visit
[6] unvisit
[7] m-calibrate_abs
[7] m-empty-store-1
[7] m-send_image_data
[7] m-navigate_abs-4
[7] m-get_soil_data
[7] m-get_rock_data
[7] m-get_image_data
[7] m-empty-store-2
[7] m-send_rock_data
[7] m-navigate_abs-1
[7] m-navigate_abs-3
[7] m-send_soil_data
[7] m-navigate_abs-2
∞ Solving with depth ∞
[0.000s] Populated
**** Decomposition ****
==>
70 (navigate rover1 waypoint2 waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
18 (sample_rock rover1 rover1store waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 5 9 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
5 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 48 51
48 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 70
9 (empty-store rover0store rover0) -> m-empty-store-1
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
17 (empty-store rover1store rover1) -> m-empty-store-1
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 33 36
33 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 45 46
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 59 60
45 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
59 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.1: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.3: (sample_rock rover1 rover1store waypoint1) [0.0]
0.3: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.5: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
0.7: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
**** Decomposition ****
==>
70 (navigate rover1 waypoint2 waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
18 (sample_rock rover1 rover1store waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 5 9 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
5 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 48 51
48 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 70
9 (empty-store rover0store rover0) -> m-empty-store-1
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
17 (empty-store rover1store rover1) -> m-empty-store-1
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 33 36
33 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 45 46
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 59 60
45 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
59 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.1: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.3: (sample_rock rover1 rover1store waypoint1) [0.0]
0.3: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.5: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]
==== Worker 1
Solver is running
==== Worker 2
solutions : 2
restarts : 0
decisions : 1,339 (532k /sec)
conflicts : 48 (19.1k /sec)
dom-updates : 14,178 (5.63M /sec)
=================
Solvers : SAT DiffLog CP Equality Optim
% CPU (propagation) : 56.83 % 37.04 % 1.95 % 0.65 % 0.52 %
# propagation loops : 1,800 1,785 1,752 1,752 1,785
# bound updates : 6,961 7,216 0 0 1
# conflicts : 15 33 0 0 0
=================
Init time : 0.006704 s
Solve time : 0.002519 s
====== SAT =====
DB size : 11870
Num unit propagations: 5152
====== Optim =====
====== DiffLog =====
# nodes: 744
# propagators: 16844
# propagations: 0
# domain updates: 3271
# bounds deactivations: 3026
# theory propagations: 0
# theory deactivations: 0
====== Equality =====
num edge props1 0
num edge props+ 0
num edge props- 0
num edge props1 ++ 0
num edge props1 +- 0
num edge props1 -+ 0
num edge props1 eff 0
num edge props2 ++ 0
num edge props2 +- 0
num edge props2 -+ 0
====== CP =====
# constraints: 0
# propagations: 0
==== Worker 3
Solver is running
==== Worker 4
Solver is running
[0.041s] Solved
**** Decomposition ****
==>
70 (navigate rover1 waypoint2 waypoint1)
51 (calibrate rover1 camera0 objective0 waypoint1)
10 (sample_soil rover0 rover0store waypoint3)
18 (sample_rock rover1 rover1store waypoint1)
25 (take_image rover1 waypoint1 objective0 camera0 high_res)
36 (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2)
46 (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2)
60 (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2)
root 1 2 3
1 (get_soil_data waypoint3) -> m-get_soil_data 5 9 10 11
2 (get_rock_data waypoint1) -> m-get_rock_data 15 17 18 19
3 (get_image_data objective0 high_res) -> m-get_image_data 20 21 25 26
5 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
20 (calibrate_abs rover1 camera0) -> m-calibrate_abs 48 51
48 (navigate_abs rover1 waypoint1) -> m-navigate_abs-3 70
9 (empty-store rover0store rover0) -> m-empty-store-1
15 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
17 (empty-store rover1store rover1) -> m-empty-store-1
21 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
11 (send_soil_data rover0 waypoint3) -> m-send_soil_data 33 36
33 (navigate_abs rover0 waypoint3) -> m-navigate_abs-2
19 (send_rock_data rover1 waypoint1) -> m-send_rock_data 45 46
26 (send_image_data rover1 objective0 high_res) -> m-send_image_data 59 60
45 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
59 (navigate_abs rover1 waypoint1) -> m-navigate_abs-2
<==
**** Plan ****
0.0: (navigate rover1 waypoint2 waypoint1) [0.0]
0.1: (calibrate rover1 camera0 objective0 waypoint1) [0.0]
0.2: (sample_soil rover0 rover0store waypoint3) [0.0]
0.3: (sample_rock rover1 rover1store waypoint1) [0.0]
0.3: (take_image rover1 waypoint1 objective0 camera0 high_res) [0.0]
0.4: (communicate_soil_data rover0 general waypoint3 waypoint3 waypoint2) [0.0]
0.5: (communicate_rock_data rover1 general waypoint1 waypoint1 waypoint2) [0.0]
0.6: (communicate_image_data rover1 general objective0 high_res waypoint1 waypoint2) [0.0]`
Hi there, I have a question about the semantics of
--optimize makespanon non-temporal HDDL problems. Across runs of Rover pfile04 (IPC 2023), the maximum printed timestamp in the final plan is the same (0.6 in all cases), however, the number of distinct timestamps differs. This is unusual behaviour, as in non-temporal HTN settings makespan is typically defined as the minimum number of parallel execution layers (e.g Cavrel, Pellier and Fiorino, ICTAI 2023).For example, running the latest version of Aries three times yields the following three plans:
Is this the intended behaviour, or should
--optimize makespanminimize the number of distinct timestamps in non-temporal settings?Full Planner Output