Temporal Planner via Encoding into Satisfiability Testing
Project description
TemPEST
TemPEST (Temporal Planner via Encoding into Satisfiability Testing) is a temporal planner that encodes temporal planning problems into SAT/SMT formulations, using modern SMT/OMT solvers to solve them efficiently.
TemPEST supports both satisficing and optimal temporal planning, with the ability to minimize makespan and action costs.
Installation
TemPEST is distributed on PyPI under the name up-tempest (the import
package is still tempest). It builds on
PySMT and ships with Z3 as the default
SMT/OMT solver, so it works out of the box:
pip3 install up-tempest
To use a different solver (e.g. OptiMathSAT), install it via PySMT:
pysmt-install --optimsat # or --msat, ...
Alternatively, install the latest development version from source:
pip3 install git+https://github.com/fbk-pso/tempest.git
Usage
TemPEST is fully integrated with the Unified Planning framework. You must register the planner engines with the Unified Planning environment:
from unified_planning.shortcuts import *
# Register TemPEST engines
env = get_environment()
env.factory.add_engine("tempest", "tempest.engine", "TempestEngine")
env.factory.add_engine("tempest-opt", "tempest.engine", "TempestOptimal")
# Define your temporal planning problem
problem = ...
# Solve with TemPEST
with OneshotPlanner(name="tempest", params={'incremental': False}) as planner:
result = planner.solve(problem)
print(result.plan)
Parameters
TemPEST has different parameters to configure its behavior. Some parameters are used by all engines, while most are specific to the optimal engines.
Common to All Engines
-
incremental(bool): Use incremental solver calls, reusing solver state across planning steps.Trueenables incremental solving;Falsemakes separate, independent calls. -
horizon(int | None): Maximum number of steps in the final plan. IfNone, the search continues indefinitely. -
solver_name(str): The name of the SMT or OMT solver used by PySMT (e.g.,"z3"or"optimathsat").
Specific to Optimal Engines
-
ground_abstract_step(bool): Whether the abstract step is grounded (i.e., fully instantiated on objects). This typically increases the number of actions. -
grounder_name(str | None): The name of the grounder used from theunified_planninglibrary. IfNone, the default grounder is selected. -
sat_before_opt(bool): Try satisficing steps before attempting optimization.Truemakes the planner search for feasible (SAT) plans before optimizing. -
secondary_objective(str | None): Guides the optimization beyond the main objective. Accepted values:"weighted","lexicographic", orNone.
References
TemPEST is based on the following research papers:
-
Panjkovic, S., & Micheli, A. (2024). Abstract action scheduling for optimal temporal planning via OMT. AAAI 2024
-
Panjkovic, S., & Micheli, A. (2023). Expressive optimal temporal planning via optimization modulo theory. AAAI 2023
Contributing
Contributions are welcome! See CONTRIBUTING.md for the developer setup (uv + just + ruff + mypy), the contribution workflow, and the Contributor License Agreement (CLA). All participation is subject to our Code of Conduct.
License
TemPEST is released under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for full details.
Contact
For questions, bug reports, or contributions, please open an issue on GitHub or contact the authors at pso-tools@fbk.eu.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file up_tempest-0.1.0.tar.gz.
File metadata
- Download URL: up_tempest-0.1.0.tar.gz
- Upload date:
- Size: 36.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47a47ea0b1b874d45fec594e59a57b41a725736b49c5b918aada036d2c92eef6
|
|
| MD5 |
e7a09712f0bbcd8a4b37a927dc9190e1
|
|
| BLAKE2b-256 |
f55d2eb180a37c02e410ce52d840c80d9bfaa85ea67dc50d0ac6d63e31819f94
|
Provenance
The following attestation bundles were made for up_tempest-0.1.0.tar.gz:
Publisher:
build-and-release.yml on fbk-pso/tempest
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
up_tempest-0.1.0.tar.gz -
Subject digest:
47a47ea0b1b874d45fec594e59a57b41a725736b49c5b918aada036d2c92eef6 - Sigstore transparency entry: 2168033334
- Sigstore integration time:
-
Permalink:
fbk-pso/tempest@de70d31f11f73db381c5f18062836d556d17e82b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/fbk-pso
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-and-release.yml@de70d31f11f73db381c5f18062836d556d17e82b -
Trigger Event:
push
-
Statement type:
File details
Details for the file up_tempest-0.1.0-py3-none-any.whl.
File metadata
- Download URL: up_tempest-0.1.0-py3-none-any.whl
- Upload date:
- Size: 41.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74591928368eaabc55e446ddfa0e0a2b20710576973ab29ad0ff53c02883c88e
|
|
| MD5 |
bf74401642bad620621730db7688796e
|
|
| BLAKE2b-256 |
b2ec5bc6afeb5b9497450bffea34668e3eaa0399241f6a34e0c5f83be21d9e08
|
Provenance
The following attestation bundles were made for up_tempest-0.1.0-py3-none-any.whl:
Publisher:
build-and-release.yml on fbk-pso/tempest
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
up_tempest-0.1.0-py3-none-any.whl -
Subject digest:
74591928368eaabc55e446ddfa0e0a2b20710576973ab29ad0ff53c02883c88e - Sigstore transparency entry: 2168033345
- Sigstore integration time:
-
Permalink:
fbk-pso/tempest@de70d31f11f73db381c5f18062836d556d17e82b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/fbk-pso
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-and-release.yml@de70d31f11f73db381c5f18062836d556d17e82b -
Trigger Event:
push
-
Statement type: