FlashPlanner 1.1.3

There is a newer version of this package available.
See the version list below for details.
dotnet add package FlashPlanner --version 1.1.3
                    
NuGet\Install-Package FlashPlanner -Version 1.1.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FlashPlanner" Version="1.1.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FlashPlanner" Version="1.1.3" />
                    
Directory.Packages.props
<PackageReference Include="FlashPlanner" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FlashPlanner --version 1.1.3
                    
#r "nuget: FlashPlanner, 1.1.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FlashPlanner@1.1.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FlashPlanner&version=1.1.3
                    
Install as a Cake Addin
#tool nuget:?package=FlashPlanner&version=1.1.3
                    
Install as a Cake Tool

<p align="center"> <img src="https://github.com/kris701/FlashPlanner/assets/22596587/d3f387a6-e0b5-4118-9801-c125a4e64100" width="200" height="200" /> </p>

Build and Publish Nuget Nuget GitHub last commit (branch) GitHub commit activity (branch) Static Badge Static Badge Static Badge

Flash Planner

This is a project that contains a simple planner, operating on a grounded representation. You can either use the planner as the C# code or use the CLI interface to get plans. The planner expects a grounded representation of a PDDL domain+problem, that can be obtained from the Translator.

The following is an example of how to use the CLI interface:

dotnet run -- --domain domain.pddl --problem p01.pddl --search "greedy(hGoal())"

The available search engines are:

Do note that the black box planners only support the hGoal heuristic.

The available heuristics are:

  • hConstant(n): Returns a given constant all the time
  • hDepth(): Simply returns a cost that is 1 lower than its parent
  • hFF(): Returns a cost based on a solution to the relaxed planning graph for the problem
  • hAdd(): Retuns the sum of actions needed to achive every goal fact
  • hMax(): Returns the highest amount of actions needed to achive a goal fact.
  • hGoal(): Returns the amount of goals that are achived in the given state, i.e. h = allGoals - achivedGoals
  • hPath(): Returns the cost of the current branch being evaluated
  • hWeighted(h,w): Takes one of the previously given heuristics, and weights its result from a constant.
  • hColMax(h): Takes a set of other heuristics and returns the highest value from any of the heuristics.
  • hColSum(h): Same as the previous one, but takes the sum of all the heuristics.

There is also a set of aliases, that can be used as a single value to setup both the search and the translator. The options are:

  • fast(): Normal translator configuration with Greedy Best First search and the heuristic hFF.

This project is also available as a package on the NuGet Package Manager.

Examples

To find a plan using the Greedy Best First Search engine:

var decl = new PDDLDecl(...);
var translator = new PDDLToSASTranslator(true);
var sas = translator.Translate(decl);
using (var greedyBFS = new GreedyBFS(sas, new hFF(decl)))
{
   var plan = greedyBFS.Solve();
}

Supported PDDL Requirements

Here is the set of requirements that the planner supports.

  • STRIPS (:strips)
  • Typing (:typing)
  • Disjunctive Preconditions (:disjunctive-preconditions)
  • Equality (:equality)
  • Quantified Preconditions (:quantified-preconditions)
    • Existential Preconditions (:existential-preconditions)
    • Universal Preconditions (:universal-preconditions)
  • Conditional Effects (:conditional-effects)
  • Domain Axioms (:domain-axioms)
    • Subgoals Through Axioms (:subgoals-through-axioms)
    • Expression Evaluation (:expression-evaluation)
  • ADL (:adl)
  • Fluents (:fluents)
  • Durative Actions (:durative-actions)
    • Durative Inequalities (:durative-inequalities)
    • Continuous Effects (:continuous-effects)
  • Negative Preconditions (:negative-preconditions)
  • Derived Predicates (:derived-predicates)
  • Timed Initial Literals (:timed-initial-literals)
  • Action Expansions (:action-expansions)
  • Foreach Expansions (:forach-expansions)
  • DAG Expansions (:dag-expansions)
  • Safety Constraints (:safety-constraints)
  • Open World (:open-world)
  • True Negation (:true-negation)
  • UCPOP (:ucpop)
  • Constraints (:constraints)
  • Preferences (:preferences)

Performance

Here are some simple coverage benchmarks to get an idea of the performance of this planner. It is compared against Fast Downward. Both are run with greedy best first search with hFF. Benchmarks are only run on the first 20 problems. The planners have a time limit of 60 seconds and a memory limit of 4GB.

Domain Problems Fast Downward Flash Planner
blocks 20 20 20
depot 20 15 10
gripper 20 20 20
logistics00 20 20 20
satellite 20 20 17
miconic 20 20 20
mystery 20 12 6
rovers 20 20 14
tpp 20 20 13
zenotravel 20 20 15
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.21 141 6/14/2024
1.2.20 137 6/13/2024
1.2.19 145 6/13/2024
1.2.18 134 6/13/2024
1.2.17 122 6/12/2024
1.2.16 123 6/12/2024
1.2.15 133 6/12/2024
1.2.14 114 6/11/2024
1.2.13 126 6/10/2024
1.2.12 130 6/9/2024
1.2.11 137 6/9/2024
1.2.10 138 6/9/2024
1.2.9 127 6/9/2024
1.2.8 124 6/9/2024
1.2.7 125 6/9/2024
1.2.6 126 6/8/2024
1.2.5 117 6/8/2024
1.2.4 132 6/7/2024
1.2.3 123 6/7/2024
1.2.2 120 6/7/2024
1.2.1 123 6/7/2024
1.2.0 129 6/6/2024
1.1.15 120 6/6/2024
1.1.14 114 6/6/2024
1.1.13 138 5/30/2024
1.1.12 138 5/30/2024
1.1.11 131 5/29/2024
1.1.10 141 5/28/2024
1.1.9 117 5/28/2024
1.1.8 121 5/28/2024
1.1.7 136 5/28/2024
1.1.6 145 5/24/2024
1.1.5 157 5/24/2024
1.1.4 144 5/24/2024
1.1.3 138 5/24/2024
1.1.2 142 5/24/2024
1.1.1 136 5/23/2024
1.1.0 132 5/23/2024
1.0.21 134 5/23/2024
1.0.20 131 5/14/2024
1.0.19 118 5/14/2024
1.0.18 99 5/14/2024
1.0.17 103 5/14/2024
1.0.16 108 5/13/2024
1.0.15 111 5/13/2024
1.0.14 134 5/13/2024
1.0.13 99 5/13/2024
1.0.12 128 5/11/2024
1.0.11 128 5/11/2024
1.0.10 115 5/11/2024
1.0.9 127 5/11/2024
1.0.8 126 5/11/2024
1.0.7 140 5/10/2024
1.0.6 121 5/10/2024
1.0.5 109 5/10/2024
1.0.4 127 5/10/2024
1.0.3 122 5/10/2024
1.0.2 123 5/9/2024
1.0.1 117 5/9/2024