Skip to main content

TamerLite

TamerLite is a heuristic search-based temporal planner designed to address planning problems with rich temporal dynamics. It is capable of handling Intermediate Conditions and Effects (ICE), allowing it to model actions that have requirements and consequences not only at their start or end, but also at intermediate points during their execution. This makes TamerLite suitable for complex real-world scenarios where temporal expressiveness is crucial.

Installation

pip install "tamerlite[rust]"   # pure-Python wrapper + Rust acceleration wheel
# or
pip install tamerlite           # pure-Python only (slower; no Rust toolchain needed)

To try the latest unreleased build, install a wheel directly from the rolling dev pre-release:

pip install --pre <url-of-wheel-on-dev-release>

Install from source

git clone https://github.com/fbk-pso/tamerlite.git
cd tamerlite
pip install ./crates/rustamer   # builds the Rust acceleration wheel (requires a Rust toolchain + maturin)
pip install .                   # installs the tamerlite Python wheel

For a contributor setup (uv + just + pre-commit + dev tools), see CONTRIBUTING.md instead.

Note: the Rust acceleration is optional. If rustamer is not installed, or if you set the environment variable DISABLE_RUSTAMER=1, TamerLite transparently falls back to a slower pure-Python implementation.

Usage

TamerLite is fully integrated with the Unified Planning framework. Register the planner engine with the Unified Planning environment:

from unified_planning.shortcuts import *

env = get_environment()
env.factory.add_engine("tamerlite", "tamerlite.engine", "TamerLite")

problem = ...  # your temporal planning problem

with OneshotPlanner(name="tamerlite") as planner:
    result = planner.solve(problem)
    print(result.plan)

Parameters

TamerLite supports configurable search strategies via structured parameter classes. The main options are SearchParams for a single search configuration, and MultiqueueParams for combining multiple strategies.

SearchParams

Defines parameters for a single search strategy.

Field Type Description
search Optional[str] Search algorithm to use. Supported values: "astar", "wastar", "gbfs", "bfs", "dfs", "ehc". Default: "wastar".
heuristic Optional[str] Heuristic used by heuristic search algorithms. Supported values: "hff", "hadd", "hmax", "hmax_explicit", "blind", "custom". Default: "hff".
weight Optional[float] Heuristic weight used by weighted search variants like wastar. Must be between 0 and 1. Default: 0.8.
internal_heuristic_cache bool Enable internal caching within the heuristic. Default: True.
inadmissible_numeric_heuristic_variant bool Enable the inadmissible numeric variant for hff, hadd, hmax heuristics. Default: False.
early_termination bool Stop as soon as a generated successor state satisfies the goal, instead of waiting until the state is selected for expansion. Default: False.
weak_equality bool Use weaker state equality on temporal problems. If no plan is found, retry with weak equality disabled. Default: False.
symmetry_breaking bool Prune equivalent symmetric states during search. Default: True.
compression_safe_actions bool Enable contiguous expansion of compression-safe temporal actions. Default: True.
relevance_analysis bool Filter out actions that cannot contribute to the goal. Default: True.
incomplete_memory_bounded_search bool Use incomplete memory-bounded variants of "wastar", "astar", and "gbfs". Default: False.

MultiqueueParams

Defines a multi-queue search strategy composed of multiple SearchParams.

Field Type Description
queues List[HeuristicParams] A list of independent heuristic configurations.
internal_heuristic_cache bool Enable internal caching within the heuristic. Default: True.
inadmissible_numeric_heuristic_variant bool Enable the inadmissible numeric variant for hff, hadd, hmax heuristics. Default: False.
early_termination bool Stop as soon as a generated successor state satisfies the goal, instead of waiting until the state is selected for expansion. Default: False.
weak_equality bool Use weaker state equality on temporal problems. If no plan is found, retry with weak equality disabled. Default: False.
symmetry_breaking bool Prune equivalent symmetric states during search. Default: True.
compression_safe_actions bool Enable contiguous expansion of compression-safe temporal actions. Default: True.
relevance_analysis bool Filter out actions that cannot contribute to the goal. Default: True.

Example

params = SearchParams(
    search="wastar",
    heuristic="hadd",
    weight=0.8,
)

with OneshotPlanner(name="tamerlite", params={"search": params}) as planner:
    result = planner.solve(problem)
    print(result.plan)

Or using multiple queues:

multi_params = MultiqueueParams(queues=[
    SearchParams(heuristic="hadd", weight=0.8),
    SearchParams(heuristic="hmax", weight=0.5),
])

with OneshotPlanner(name="tamerlite", params={"search": multi_params}) as planner:
    result = planner.solve(problem)
    print(result.plan)

Tutorial

An end-to-end runnable tutorial covering classical, numeric, temporal and temporal-numeric planning lives at tamerlite_tutorial.ipynb.

References

TamerLite is based on the following research paper:

  • Valentini, A., Micheli, A., & Cimatti, A. (2020). Temporal planning with intermediate conditions and effects. AAAI 2020

License

TamerLite is released under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for full details.

Contributing

See CONTRIBUTING.md for the contribution workflow, dev setup, the just task runner, and the release flow. All contributors must sign our Contributor License Agreement on their first pull request and agree to follow our Code of Conduct.

Contact

For questions, bug reports, or contributions, please open an issue on GitHub or contact the authors at pso-tools@fbk.eu.

Release files for tamerlite 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tamerlite 0.1.1
File Size Uploaded
tamerlite-0.1.1.tar.gz 67.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tamerlite 0.1.1
File Interpreter ABI Platform
tamerlite-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 128.2 kB

Release files / tamerlite-0.1.1.tar.gz

Download URL tamerlite-0.1.1.tar.gz
Size 67.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d998f5443d742c4d6af35c02eaeb0adeeefc81d037a50677409ca8ae466c24d2
BLAKE2b-256 checksum
How to use checksums
173e8cc07c3cbd10da4a2c20d9f4e1b271a884407b8fa7d57f772208fd457683
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.

Transparency log

Release files / tamerlite-0.1.1-py3-none-any.whl

Download URL tamerlite-0.1.1-py3-none-any.whl
Size 60.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
083a6fe3c64bf33be5ef7007c1e42b52efe93765c307b17f05cfc42466a5d4eb
BLAKE2b-256 checksum
How to use checksums
70ed9b86f3d15678db599772c238a60be1045fbf73c8d145e5044cb1baaa6913
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page