This library is a collection of tools for planning-like action model acquisition from state trace data. It contains a reimplementation from many existing works, and generalizes some of them to new settings.
from macq import generate, extract
from macq.observation import IdentityObservation, AtomicPartialObservation
# get a domain-specific generator: uses api.planning.domains problem_id/
# generate 100 traces of length 20 using vanilla sampling
traces = generate.pddl.VanillaSampling(problem_id = 123, plan_len = 20, num_traces = 100).traces
traces.generate_more(10)
action = traces[0][0].action
traces.get_usage(action)
# [0.05, 0.05, ..., 0.05]
trace = traces[0]
len(trace)
# 20
trace.fluents
trace.actions
trace.get_pre_states(action) # get the state before each occurance of action
trace.get_post_states(action) # state after each occurance of action
trace.get_total_cost()
You can find the full scope of papers considered in the survey (implemented and otherwise) at http://macq.planning.domains . This repository of model acquisition techniques will be added to over time.
- A Review of Machine Learning for Automated Planning (see Fig 2)
- A Review of Learning Planning Action Models (see Tbl 3)
@inproceedings{macq-keps-2022,
author = {Ethan Callanan and Rebecca De Venezia and Victoria Armstrong and Alison Paredes and Tathagata Chakraborti and Christian Muise},
title = {MACQ: A Holistic View of Model Acquisition Techniques},
booktitle = {The ICAPS Workshop on Knowledge Engineering for Planning and Scheduling (KEPS)},
year = {2022}
}