From a747b382336717478cd77f50bbd55e0a101d05c6 Mon Sep 17 00:00:00 2001 From: Brandon Rozek Date: Mon, 20 Nov 2023 17:20:48 -0500 Subject: [PATCH] Handling edge cases in precondition -> formula --- src/main/java/org/rairlab/planner/Action.java | 9 ++++++++- src/main/java/org/rairlab/planner/State.java | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/rairlab/planner/Action.java b/src/main/java/org/rairlab/planner/Action.java index 7d4d0f0..057de89 100644 --- a/src/main/java/org/rairlab/planner/Action.java +++ b/src/main/java/org/rairlab/planner/Action.java @@ -49,7 +49,14 @@ public class Action { this.freeVariables = freeVariables; - this.precondition = new And(preconditions.stream().collect(Collectors.toList())); + if (preconditions.size() > 1) { + this.precondition = new And(preconditions.stream().collect(Collectors.toList())); + } else if (preconditions.size() == 1) { + this.precondition = preconditions.iterator().next(); + } else { + this.precondition = State.TRUE; + } + this.weight = preconditions.stream().mapToInt(Formula::getWeight).sum() + additions.stream().mapToInt(Formula::getWeight).sum() + diff --git a/src/main/java/org/rairlab/planner/State.java b/src/main/java/org/rairlab/planner/State.java index 38de048..cbc9697 100644 --- a/src/main/java/org/rairlab/planner/State.java +++ b/src/main/java/org/rairlab/planner/State.java @@ -12,14 +12,17 @@ import java.util.Set; public class State { final Set formulae; + static Formula TRUE; static Formula FALSE; static{ try { + TRUE = Reader.readFormulaFromString("(or P (not P))"); FALSE = Reader.readFormulaFromString("(and P (not P))"); } catch (Reader.ParsingException e) { e.printStackTrace(); + TRUE = null; FALSE = null; }