More tweaks.

This commit is contained in:
Naveen Sundar Govindarajulu 2017-01-22 11:29:26 -08:00
parent 8d5f2464a1
commit 5cc43e4b00
3 changed files with 19 additions and 15 deletions

View file

@ -6,6 +6,7 @@ import com.naveensundarg.shadow.prover.representations.value.Compound;
import com.naveensundarg.shadow.prover.representations.value.Value; import com.naveensundarg.shadow.prover.representations.value.Value;
import com.naveensundarg.shadow.prover.representations.value.Variable; import com.naveensundarg.shadow.prover.representations.value.Variable;
import com.naveensundarg.shadow.prover.utils.CollectionUtils; import com.naveensundarg.shadow.prover.utils.CollectionUtils;
import com.naveensundarg.shadow.prover.utils.Logic;
import com.naveensundarg.shadow.prover.utils.Sets; import com.naveensundarg.shadow.prover.utils.Sets;
import java.util.List; import java.util.List;
@ -27,6 +28,7 @@ public class Action {
private final Formula precondition; private final Formula precondition;
private int weight; private int weight;
private final boolean trivial;
private final Compound shorthand; private final Compound shorthand;
@ -52,6 +54,8 @@ public class Action {
List<Value> valuesList = freeVariables.stream().collect(Collectors.toList());; List<Value> valuesList = freeVariables.stream().collect(Collectors.toList());;
this.shorthand = new Compound(name, valuesList); this.shorthand = new Compound(name, valuesList);
this.trivial = computeTrivialOrNot();
} }
private Action(String name, Set<Formula> preconditions, Set<Formula> additions, private Action(String name, Set<Formula> preconditions, Set<Formula> additions,
@ -78,6 +82,8 @@ public class Action {
deletions.stream().mapToInt(Formula::getWeight).sum(); deletions.stream().mapToInt(Formula::getWeight).sum();
this.shorthand = shorthand; this.shorthand = shorthand;
this.trivial = computeTrivialOrNot();
} }
@ -139,12 +145,19 @@ public class Action {
return name; return name;
} }
public boolean isNonTrivial() {
return !trivial;
}
public boolean isNonTrivial(){ public boolean computeTrivialOrNot(){
boolean case1Trivial = Sets.subset(additions, preconditions) && deletions.isEmpty(); boolean case1Trivial = Sets.subset(additions, preconditions) && deletions.isEmpty();
return !case1Trivial; boolean case2Trivial = additions.isEmpty() && deletions.stream().allMatch(x->preconditions.stream().anyMatch(y->y.equals(Logic.negated(x))));
boolean trivial = case1Trivial || case2Trivial;
return trivial;
} }
@Override @Override
public String toString() { public String toString() {

View file

@ -1,11 +1,9 @@
package edu.rpi.rair; package edu.rpi.rair;
import com.naveensundarg.shadow.prover.representations.formula.Formula; import com.naveensundarg.shadow.prover.representations.formula.Formula;
import com.naveensundarg.shadow.prover.utils.CollectionUtils;
import com.naveensundarg.shadow.prover.utils.Pair; import com.naveensundarg.shadow.prover.utils.Pair;
import com.naveensundarg.shadow.prover.utils.Sets; import com.naveensundarg.shadow.prover.utils.Sets;
import javax.swing.text.html.Option;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View file

@ -32,13 +32,13 @@ public class RunDemo {
List<Problem> problems = ProblemReader.readFrom(Sandbox.class.getResourceAsStream("firstorder-completness-tests.clj")); List<Problem> problems = ProblemReader.readFrom(Sandbox.class.getResourceAsStream("firstorder-completness-tests.clj"));
problems.forEach(problem -> { problems.forEach(problem -> {
for (int i = 0; i < 5; i++) { for (int i = 0; i < 10; i++) {
prover.prove(problem.getAssumptions(), problem.getGoal()); prover.prove(problem.getAssumptions(), problem.getGoal());
} }
}); });
planningProblemWarmUp(); planningProblemWarmUp();
System.out.println("\nWARM UP DONE"); System.out.println("\nWARM UP DONE");
} catch (Reader.ParsingException e) { } catch (Reader.ParsingException e) {
e.printStackTrace(); e.printStackTrace();
@ -88,7 +88,7 @@ public class RunDemo {
cp.clear(); cp.clear();
cp.print(" "); cp.print(" ");
cp.setAttribute(Ansi.Attribute.BOLD); cp.setAttribute(Ansi.Attribute.BOLD);
cp.print((end - start) / 1000 + "s"); cp.print((end - start) / 1000.0 + "s");
@ -97,9 +97,8 @@ public class RunDemo {
public static void planningProblemWarmUp() throws Reader.ParsingException { public static void planningProblemWarmUp() throws Reader.ParsingException {
for (int i = 0; i < 5; i++) { for (int i = 0; i < 10; i++) {
System.out.println();
List<GoalTrackingProblem> goalTrackingProblemList = (GoalTrackingProblem.readFromFile(Planner.class.getResourceAsStream("goal_management_1.clj"))); List<GoalTrackingProblem> goalTrackingProblemList = (GoalTrackingProblem.readFromFile(Planner.class.getResourceAsStream("goal_management_1.clj")));
@ -121,20 +120,14 @@ public class RunDemo {
goalTracker.adoptGoal(g1); goalTracker.adoptGoal(g1);
System.out.print(".");
goalTracker.adoptGoal(g2); goalTracker.adoptGoal(g2);
System.out.print(".");
goalTracker.adoptGoal(g3); goalTracker.adoptGoal(g3);
System.out.print(".");
goalTracker.adoptGoal(g4); goalTracker.adoptGoal(g4);
System.out.print(".");
goalTracker.adoptGoal(g5); goalTracker.adoptGoal(g5);