Skip to content

aiplan4eu/up-fmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FMAP Unified Planning integrator

The aim of this project is to make the FMAP planning engine available in the unified_planning library by the AIPlan4EU project.

FMAP uses a distributed heuristic search strategy. Each planning agent in the platform features an embedded search engine based on a forward partial-order planning scheme FMAP leverages a forward-chaining partial-order planner (POP) that allows agents to plan their actions in parallel whenever possible, which largely improves the quality of the resulting solution plans. Moreover, the forward-chaining approach relies on the frontier state (state that results from executing the actions of a node) to compute accurate state-based estimates.

Installation

We recommend the installation from PyPi because it has pre-built wheels for all common operating systems.

Installation from Python Package Index PyPi

To automatically get a version that works with your version of the unified planning framework, you can list it as a solver in the pip installation of unified_planning:

pip install unified-planning[fmap]

If you need several solvers, you can list them all within the brackets.

You can also install the FMAP integration separately (in case the current version of unified_planning does not include FMAP or you want to add it later to your unified planning installation). With

pip install up-fmap

you get the latest version. If you need an older version, you can install it with:

pip install up-fmap==<version number>

Usage

Solving a planning problem

You can use fmap to solve a Multi-Agent problem. It allows the specification of a specific heuristic function used to evaluate the quality of the plans. The name of the custom parameter is heuristic and the following values are supported:

  • 0 - FF heuristic: guides the search through the well-known h_FF heuristic function. This option is available for single-agent planning tasks only.
  • 1 - DTG heuristic: evaluates plans via the heuristic h_DTG.
  • 2 - default option - DTG + Landmarks: this option applies the multi-heuristic search scheme of the MH-FMAP solver by combining the h_DTG and h_Land heuristics to guide the search.
  • 3 - Inc. DTG + Landmarks: incremental multi-heuristic mode that makes use of h_DTG and h_Land. You can for example call it as follows:
from unified_planning.shortcuts import *
from unified_planning.engines import PlanGenerationResultStatus

problem = MultiAgentProblem('myproblem')
# specify the problem (e.g. agents, agent public fluents, agent private fluents, environment fluents, initial state, agent actions, goal)
...

planner = OneshotPlanner(name="fmap")
result = planner.solve(problem)
if result.status == PlanGenerationResultStatus.SOLVED_SATISFICING:
    print(f'{Found a plan.\nThe plan is: {result.plan}')
else:
    print("No plan found.")

Notebooks:

Multi-Agent Plan Simple Example

Multi-Agent Plan Example

Planning approaches of UP supported

Multi-agent planning

Default configuration

DTG + Landmarks: this option applies the multi-heuristic search scheme of the MH-FMAP solver (described in this paper) by combining the h_DTG and h_Land heuristics to guide the search.

Operative modes of UP currently supported

Oneshot planning UP Documentation

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •