FlashPlanner 1.2.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package FlashPlanner --version 1.2.2
                    
NuGet\Install-Package FlashPlanner -Version 1.2.2
                    
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.2.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FlashPlanner" Version="1.2.2" />
                    
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.2.2
                    
#r "nuget: FlashPlanner, 1.2.2"
                    
#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.2.2
                    
#: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.2.2
                    
Install as a Cake Addin
#tool nuget:?package=FlashPlanner&version=1.2.2
                    
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. This project is also available as a package on the NuGet Package Manager.

Planner Usage

You can use this planner as code, or more likely by the CLI tool. The tool is heavily inspired by Fast Downward, where there is seperate string arguments for the translator and the search engine. This is a dotnet project, so you can run it by typing the following into your terminal:

dotnet run

It should give you a set of different arguments that it needs. Generally, it needs a domain and problem file in the PDDL format as well as a search engine. The search engine, and translation, arguments is given as a string, e.g.:

--search "greedy(hFF())"

The translator also have optional arguments, howevery they are usually not needed. Below are the different Search Engines and Heuristics that can be combined to run FlashPlanner. There is also the option to use an alias, instead of a combination of search and translator arguments.

Search Engines

The available search engines are:

Heuristics

The available heuristics are:

  • hConstant(n): Returns a given constant all the time. N being the constant.
  • 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(): Is the Additive Heuristic that returns the sum of actions needed to achive every goal fact.
  • hMax(): Is the Max Heuristic that 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. H is the heuristic and W is the weight.
  • hColMax([h1,...,hn]): Takes a set of other heuristics and returns the highest value from any of the heuristics.
  • hColSum([h1,...,hn]): Same as the previous one, but takes the sum of all the heuristics.

Aliases

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.

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);
var greedyBFS = new GreedyBFS(new hFF());
ar plan = greedyBFS.Solve(sas);

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 with the configuration --evaluator \"hff=ff()\" --search \"lazy_greedy([hff], preferred=[hff])\". 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 9
gripper 20 20 20
logistics00 20 20 20
satellite 20 20 18
miconic 20 20 20
mystery 20 12 5
rovers 20 20 15
tpp 20 20 13
zenotravel 20 20 17
Total 200 187 157
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