There is a newer version of the record available.

Published March 2, 2022 | Version v1
Software Open

Code and Benchmarks of the ICAPS'22 Paper "Debugging a Policy: Automatic Action-Policy Testing in AI Planning"

  • 1. Saarland University

Description

# Fast Downward Fuzzing Extension

@InProceedings{steinmetz-et-al-icaps22,
    author={M. Steinmetz and D. Fišer and H. Eniser and P. Ferber and T. Gros and P. Heim and D. Höller and X. Schuler and V. Wüstholz and M. Christakis and and J. Hoffmann},
    title={Debugging a Policy: Automatic Action-Policy Testing in AI Planning},
    booktitle={Proceedings of the 32nd International Conference on Automated Planning and Scheduling ({ICAPS}'22), 2022},
    year={2022}
}

Code is located in: src/search/policy_testing/

# Usage: fuzzing ASNet policies

General parameter structure:

./fast-downward.py domain.pddl problem.pddl \
    --policy "pi=asnet_policy(domain_pddl=domain.pddl, problem_pddl=problem.pddl, snapshot=model.pkl)" \
    --search "pool_fuzzer(eval=hmax(), policy=pi, max_walk_length=5, max_pool_size=200, max_time=36000, bias=plan_length_bias(policy=pi), filter=novelty_filter(2), testing_method=invertible_domain_tester(), seed=1234, pool_file=pool.txt, bugs_file=bugs.txt, random_walks_check_policy_unsolved=true)"

Important parameters: *filter*, *bias*, and *testing_method*

- *filter*: Only states that pass the filter test are added to the pool. Options: (1) If the parameter is omitted, no filter is applied. (2) *filter=novelty_filter(2)* only adds a state to the pool, if the state contains at least one fact pair not contained in any state in the pool, yet.

- *bias*: Controls the random walks of the fuzzer. Options: (1) If parameter is omitted, successor states are sampled uniformly at random. (2) *bias=plan_length_bias(policy=pi)* biases the sampling towards successor states with larger policy plan lengths.

- *testing_method*: Method that checks whether a pool state is a bug. Options: (1) *testing_method=invertible_domain_tester()* assumes domain to be invertible; (2) *testing_method=aras(aras_dir=PATH_TO_ARAS)* uses Aras plan improver; (3) *testing_method=bounded_lookahead_tester(depth=2)* evaluates the policy at all leafs of the *depth*-lookahead-tree; (4) *testing_method=oracle_based_tester(oracle=x)* runs an "oracle" to obtain some plan, and compares that plan to the one given by the policy. *x* can be one of {*external_planner_oracle(downward_path=PATH_TO_FD, params=LIST_OF_PARAMETERS)*, *matching_blocks_qual_oracle()*, *spanner_qual_oracle()*}.

 

Files

aras.zip

Files (37.5 MB)

Name Size Download all
md5:661a526d9be2c6ac0e92ada2232360d7
8.2 MB Preview Download
md5:c7ff470ab26a7fd0934fe87d44485fcf
26.3 MB Preview Download
md5:02402fdc919ad40d4cf63aae9cf26891
1.6 MB Preview Download
md5:d0f24f1f031a386a601eb4af179be8e4
1.4 MB Preview Download