MetaActionGenerators 1.0.2

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

<p align="center"> <img src="https://github.com/kris701/MetaActionGenerators/assets/22596587/1e293720-ce6e-4db6-a8f1-ecbe115362ce" width="200" height="200" /> </p>

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

Meta Action Generators

This is a project that is a collection of several different meta action generators. Some of the generators have some dependencies they need to work, however they are all described in their respective section. You can either use the NuGet Package to generate meta actions, or use dotnet run on the CLI project.

Generators

Here is a short description of all the different generators that this project includes. All the examples are based on the blocksworld domain. All the generates put a $ as a prefix for the candidates to make it clear its a meta action.

Stripped Meta Actions

This is simply meta actions that consists of taking all actions in the original domain and removing their preconditions.

An example of a meta action from this generator can be seen below:

(:action $putdown
	:parameters (?ob)
	:precondition ()
	:effect (and 
		(clear ?ob) 
		(arm-empty) 
		(on-table ?ob) 
        (not (holding ?ob))
	)
)

Predicate Meta Actions

These are meta actions that consists of a single predicate in the effects, with no preconditions. There is a "true" and a "false" version of all the predicates.

An example of a meta action from this generator can be seen below:

(:action $clear
	:parameters (?ob)
	:precondition ()
	:effect (and 
		(clear ?ob)
	)
)

Flip Meta Actions

These are meta actions that flip the value of a single predicate, i.e. the precondition requires a predicate to be true, and the effect sets it to false.

(:action $clear
	:parameters (?ob)
	:precondition (and
		(not (clear ?ob))
	)
	:effect (and 
		(clear ?ob)
	)
)

PDDLSharp Macro Reduction Meta Actions

These are meta actions that are based on reductions from the paper Can I Really Do That? Verification of Meta-Operators via Stackelberg Planning. The macros are generated by PDDLSharp, so they are usually very long and complex.

An example of a meta action from this generator can be seen below:

(:action $unstack-stack-pickup-stack
	:parameters (?b2 - object ?b4 - object ?b1 - object)
	:precondition (and
		(arm-empty)
		(clear ?b4)
		(clear ?b1)
		(on-table ?b1)
	)
	:effect (and
		(not (clear ?b4))
		(not (on-table ?b1))
		(on ?b1 ?b2)
	)
)

Precondition Permutation Reduction Meta Actions

This one is also based on reducing actions, however it just tries to reduce primitive actions. It makes a meta action candidate for each possible reduction permutation for normal actions, in an attempt to find some reduced precondition that makes the meta action more useful.

An example of a meta action from this generator can be seen below:

(:action unstack
	:parameters (?ob ?underob)
	:precondition (and 
		(on ?ob ?underob) 
		(arm-empty)
	)
	:effect (and 
		(holding ?ob) 
		(clear ?underob)
        (not (on ?ob ?underob)) 
		(not (clear ?ob)) 
		(not (arm-empty))
	)
)

CPDDL Mutex Meta Actions

These are meta actions that is based on Predicate meta actions, however it will force all the candidates to uphold mutex groups in the domain. This generator used CPDDL to find lifted mutex groups, and then fixes the predicate meta actions that violate the groups.

An example of a meta action from this generator can be seen below:

(:action $meta_clear_0
	:parameters (?x - object)
	:precondition (and
		(holding ?x)
		(not (arm-empty))
		(not (on-table ?x))
	)
	:effect (and
		(clear ?x)
		(not (holding ?x))
		(arm-empty)
		(on-table ?x)
	)
)
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.0.11 143 5/20/2024
1.0.10 143 5/15/2024
1.0.8 129 5/15/2024
1.0.7 124 5/13/2024
1.0.6 145 4/30/2024
1.0.5 138 4/29/2024
1.0.4 142 4/29/2024
1.0.3 134 4/29/2024
1.0.2 146 4/26/2024
1.0.1 138 4/25/2024
1.0.0 140 4/25/2024