bdi4jade

Bug Fix.

3/7/2018 3:50:06 PM

Details

diff --git a/bdi-jade-extensions/src/bdi4jade/extension/remediation/reasoning/RemediationOptionGenerationFunction.java b/bdi-jade-extensions/src/bdi4jade/extension/remediation/reasoning/RemediationOptionGenerationFunction.java
index c36b6d5..a530329 100644
--- a/bdi-jade-extensions/src/bdi4jade/extension/remediation/reasoning/RemediationOptionGenerationFunction.java
+++ b/bdi-jade-extensions/src/bdi4jade/extension/remediation/reasoning/RemediationOptionGenerationFunction.java
@@ -14,6 +14,7 @@ import bdi4jade.core.GoalUpdateSet.GoalDescription;
 import bdi4jade.core.Intention;
 import bdi4jade.event.GoalEvent;
 import bdi4jade.event.GoalListener;
+import bdi4jade.extension.remediation.RemediationCapability;
 import bdi4jade.extension.remediation.goal.CauseEffectProblem;
 import bdi4jade.extension.remediation.goal.CauseEffectProblem.CauseEffectProblemStatus;
 import bdi4jade.extension.remediation.goal.CauseFactorStatus;
@@ -87,10 +88,10 @@ public class RemediationOptionGenerationFunction extends RevertingOptionGenerati
 				causeEffectProblems.put(cep.getEffectGoal(), cep);
 
 				// Here a new goal achievement metadata is created
-				if (this.capability instanceof RevertingCapability) {
+				if (this.capability instanceof RemediationCapability) {
 					for (Intention intention : this.capability.getIntentions()) {
 						if (intention.getGoal().equals(goal)) {
-							((RevertingCapability) this.capability)
+							((RemediationCapability) this.capability)
 									.createGoalAchievementMetadata((PredicateGoal<?>) goal, intention);
 						}
 					}
@@ -108,6 +109,7 @@ public class RemediationOptionGenerationFunction extends RevertingOptionGenerati
 
 			// Algorithm 1 - lines 18-35
 			if (cep.getEffectGoalStatus() != null) {
+				System.out.println("Effect Status not null: " + cep.getEffectGoalStatus());
 				if (knownCause(cep, cep.getCauseEffectRelationship())) {
 
 					// Reversion trigger is updated with current cause factor predicates
@@ -264,9 +266,18 @@ public class RemediationOptionGenerationFunction extends RevertingOptionGenerati
 		for (CauseFactorStatus causeFactor : cep.getCauseFactorStatus()) {
 			reversionTrigger.add(causeFactor.getFact().getPredicate());
 		}
-		GoalAchievementMetadata gam = ((RevertingCapability) this.capability).getGoalAchievementMetadata()
-				.get(cep.getEffectGoal());
-		gam.setReversionTrigger(reversionTrigger);
+
+		Map<Goal, GoalAchievementMetadata> gams = ((RemediationCapability) this.capability)
+				.getGoalAchievementMetadata();
+		GoalAchievementMetadata gam = gams.get(cep.getEffectGoal());
+
+		// TODO Remove Sysouts
+		if (gam != null) {
+			gam.setReversionTrigger(reversionTrigger);
+		} else {
+			System.out.println("GAM Nulo!");
+		}
+
 	}
 
 }
diff --git a/bdi-jade-extensions/src/bdi4jade/extension/undo/GoalAchievementMetadata.java b/bdi-jade-extensions/src/bdi4jade/extension/undo/GoalAchievementMetadata.java
index 7984c2c..04cda3b 100644
--- a/bdi-jade-extensions/src/bdi4jade/extension/undo/GoalAchievementMetadata.java
+++ b/bdi-jade-extensions/src/bdi4jade/extension/undo/GoalAchievementMetadata.java
@@ -352,4 +352,13 @@ public class GoalAchievementMetadata {
 		LinkedList<Pair<Boolean, Long>> trace = (LinkedList<Pair<Boolean, Long>>) this.beliefChangeTrace.get(predicate);
 		trace.add(new Pair<Boolean, Long>(value, System.currentTimeMillis()));
 	}
+	
+	@Override
+	public String toString() {
+		StringBuffer sb = new StringBuffer();
+		sb.append("< ").append(goal);
+		sb.append(", maxExecutedPlans = ").append(maxExecutedPlans);
+		sb.append(", rollback = ").append(rollback).append(" >");
+		return sb.toString();
+	}
 }
diff --git a/bdi-jade-extensions/src/bdi4jade/extension/undo/RevertingCapability.java b/bdi-jade-extensions/src/bdi4jade/extension/undo/RevertingCapability.java
index 0c01ff7..235b773 100644
--- a/bdi-jade-extensions/src/bdi4jade/extension/undo/RevertingCapability.java
+++ b/bdi-jade-extensions/src/bdi4jade/extension/undo/RevertingCapability.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import bdi4jade.annotation.Belief;
 import bdi4jade.belief.PredicateBelief;
 import bdi4jade.core.BDIAgent;
 import bdi4jade.core.Capability;
@@ -35,6 +36,7 @@ import bdi4jade.event.BeliefEvent.Action;
 import bdi4jade.event.BeliefListener;
 import bdi4jade.event.GoalEvent;
 import bdi4jade.event.GoalListener;
+import bdi4jade.extension.remediation.graph.CauseEffectKnowledgeModel;
 import bdi4jade.extension.remediation.logics.Predicate;
 import bdi4jade.extension.undo.reasoning.RevertingOptionGenerationFunction;
 import bdi4jade.goal.Goal;
@@ -55,9 +57,9 @@ import bdi4jade.goal.PredicateGoal;
 public class RevertingCapability extends Capability implements BeliefListener, GoalListener {
 
 	private static final long serialVersionUID = -5556551069331273755L;
-
-	private final Map<Goal, GoalAchievementMetadata> gams;
-	private final Map<Goal, Goal> parentGoals;
+	protected Map<Goal, GoalAchievementMetadata> gams;
+	
+	protected Map<Goal, Goal> parentGoals;
 
 	/**
 	 * Creates a new capability and sets {@link RevertingOptionGenerationFunction}
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/domain/CO.java b/bdi-jade-test/src/bdi4jade/examples/undo/domain/CO.java
index 7d8434a..dad1432 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/domain/CO.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/domain/CO.java
@@ -88,7 +88,7 @@ public class CO implements Serializable, Concept, ContentElement, Runnable {
 		while (true) {
 			updateGasConcentration();
 			log.info(this.gasConcentration);
-			System.out.println("CO Concentration:" + this.gasConcentration);
+			//System.out.println("CO Concentration:" + this.gasConcentration);
 			try {
 				Thread.sleep(2000);
 			} catch (InterruptedException e) {
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/ManagementCapability.java b/bdi-jade-test/src/bdi4jade/examples/undo/ManagementCapability.java
index d41ba8f..26262f0 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/ManagementCapability.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/ManagementCapability.java
@@ -61,14 +61,14 @@ public class ManagementCapability extends RemediationCapability {
 	private String windowsAgent;
 
 	// Device Predicates
-	private PredicateBelief<TakeOff> alarmTakeOff;
-	private PredicateBelief<Locked> doorsUnlock;
-	private PredicateBelief<On> fansOn;
-	private PredicateBelief<Leak> leakingWaterHeater;
-	private PredicateBelief<On> lightsOn;
-	private PredicateBelief<Open> valveOpen;
-	private PredicateBelief<Open> windowsOpen;
-	private PredicateBelief<Abnormal> abnormalCO;
+	private TransientPredicate<TakeOff> alarmTakeOff;
+	private TransientPredicate<Locked> doorsUnlock;
+	private TransientPredicate<On> fansOn;
+	private TransientPredicate<Leak> leakingWaterHeater;
+	private TransientPredicate<On> lightsOn;
+	private TransientPredicate<Open> valveOpen;
+	private TransientPredicate<Open> windowsOpen;
+	private TransientPredicate<Abnormal> abnormalCO;
 
 	// Plans
 	@bdi4jade.annotation.Plan
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/EvacuateAndVentilatePlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/EvacuateAndVentilatePlanBody.java
index 3969bcf..a4f8aa9 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/EvacuateAndVentilatePlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/EvacuateAndVentilatePlanBody.java
@@ -23,5 +23,6 @@ public class EvacuateAndVentilatePlanBody extends RevertingPlanBody {
 		dispatchSubgoal(new PredicateGoal<Locked>(new Locked(House.DOORS), false));
 		dispatchSubgoal(new PredicateGoal<Open>(new Open(House.WINDOWS), true));
 		dispatchSubgoal(new PredicateGoal<On>(new On(House.FANS), true));
+		block();
 	}
-}
+}
\ No newline at end of file
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceClosePlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceClosePlanBody.java
index c679773..35a4ea3 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceClosePlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceClosePlanBody.java
@@ -67,8 +67,7 @@ public class RequestDeviceClosePlanBody extends RevertingPlanBody {
 		msg.addReceiver(new AID(agentName, false));
 		msg.setConversationId("cin" + System.currentTimeMillis());
 		myAgent.send(msg);
-		this.mt = MessageTemplate.and(MessageTemplate.MatchConversationId(msg.getConversationId()),
-				MessageTemplate.MatchInReplyTo(msg.getReplyWith()));
+		this.mt = MessageTemplate.MatchConversationId(msg.getConversationId());
 		this.sent = true;
 		log.info("Request sent to agent " + agentName + "!");
 	}
@@ -78,7 +77,7 @@ public class RequestDeviceClosePlanBody extends RevertingPlanBody {
 		if (reply != null) {
 			if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
 				belief.setValue(false, this.getGoal());
-				log.info(reply.getSender() + ": " + reply.getContent());
+				log.info(reply.getSender().getName() + ": " + reply.getContent());
 				setEndState(EndState.SUCCESSFUL);
 			} else {
 				this.sent = false;
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceLockPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceLockPlanBody.java
index 0f8bdbe..4b9fcf7 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceLockPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceLockPlanBody.java
@@ -63,8 +63,7 @@ public class RequestDeviceLockPlanBody extends RevertingPlanBody {
 			msg.addReceiver(new AID(doorsAgent.getValue(), false));
 			msg.setConversationId("cin" + System.currentTimeMillis());
 			myAgent.send(msg);
-			this.mt = MessageTemplate.and(MessageTemplate.MatchConversationId(msg.getConversationId()),
-					MessageTemplate.MatchInReplyTo(msg.getReplyWith()));
+			this.mt = MessageTemplate.MatchConversationId(msg.getConversationId());
 			this.sent = true;
 			log.info("Request sent to agent " + doorsAgent.getValue() + "!");
 		} else {
@@ -73,8 +72,8 @@ public class RequestDeviceLockPlanBody extends RevertingPlanBody {
 				if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
 					TransientPredicate<Locked> doorsUnlock = (TransientPredicate<Locked>) this.getCapability()
 							.getBeliefBase().getBelief(new Locked(House.DOORS));
-					doorsUnlock.setValue(false, this.getGoal());
-					log.info(reply.getSender() + ": " + reply.getContent());
+					doorsUnlock.setValue(true, this.getGoal());
+					log.info(reply.getSender().getName() + ": " + reply.getContent());
 					setEndState(EndState.SUCCESSFUL);
 				} else {
 					this.sent = false;
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOffPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOffPlanBody.java
index 6bdddc1..47a1053 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOffPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOffPlanBody.java
@@ -72,7 +72,7 @@ public class RequestDeviceOffPlanBody extends RevertingPlanBody {
 		if (reply != null) {
 			if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
 				belief.setValue(false, this.getGoal());
-				log.info(reply.getSender() + ": " + reply.getContent());
+				log.info(reply.getSender().getName() + ": " + reply.getContent());
 				setEndState(EndState.SUCCESSFUL);
 			} else {
 				this.sent = false;
@@ -88,8 +88,7 @@ public class RequestDeviceOffPlanBody extends RevertingPlanBody {
 		msg.addReceiver(new AID(agentName, false));
 		msg.setConversationId("cin" + System.currentTimeMillis());
 		myAgent.send(msg);
-		this.mt = MessageTemplate.and(MessageTemplate.MatchConversationId(msg.getConversationId()),
-				MessageTemplate.MatchInReplyTo(msg.getReplyWith()));
+		this.mt = MessageTemplate.MatchConversationId(msg.getConversationId());
 		this.sent = true;
 		log.info("Request sent to agent " + agentName + "!");
 	}
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOnPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOnPlanBody.java
index 67342c1..5e9590a 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOnPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOnPlanBody.java
@@ -72,7 +72,7 @@ public class RequestDeviceOnPlanBody extends RevertingPlanBody {
 		if (reply != null) {
 			if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
 				belief.setValue(true, this.getGoal());
-				log.info(reply.getSender() + ": " + reply.getContent());
+				log.info(reply.getSender().getName() + ": " + reply.getContent());
 				setEndState(EndState.SUCCESSFUL);
 			} else {
 				this.sent = false;
@@ -88,8 +88,7 @@ public class RequestDeviceOnPlanBody extends RevertingPlanBody {
 		msg.addReceiver(new AID(agentName, false));
 		msg.setConversationId("cin" + System.currentTimeMillis());
 		myAgent.send(msg);
-		this.mt = MessageTemplate.and(MessageTemplate.MatchConversationId(msg.getConversationId()),
-				MessageTemplate.MatchInReplyTo(msg.getReplyWith()));
+		this.mt = MessageTemplate.MatchConversationId(msg.getConversationId());
 		this.sent = true;
 		log.info("Request sent to agent " + agentName + "!");
 	}
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOpenPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOpenPlanBody.java
index c3d27d6..ffcaf9b 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOpenPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOpenPlanBody.java
@@ -67,8 +67,7 @@ public class RequestDeviceOpenPlanBody extends RevertingPlanBody {
 		msg.addReceiver(new AID(agentName, false));
 		msg.setConversationId("cin" + System.currentTimeMillis());
 		myAgent.send(msg);
-		this.mt = MessageTemplate.and(MessageTemplate.MatchConversationId(msg.getConversationId()),
-				MessageTemplate.MatchInReplyTo(msg.getReplyWith()));
+		this.mt = MessageTemplate.MatchConversationId(msg.getConversationId());
 		this.sent = true;
 		log.info("Request sent to agent " + agentName + "!");
 	}
@@ -78,7 +77,7 @@ public class RequestDeviceOpenPlanBody extends RevertingPlanBody {
 		if (reply != null) {
 			if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
 				belief.setValue(true, this.getGoal());
-				log.info(reply.getSender() + ": " + reply.getContent());
+				log.info(reply.getSender().getName() + ": " + reply.getContent());
 				setEndState(EndState.SUCCESSFUL);
 			} else {
 				this.sent = false;
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceShutdownPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceShutdownPlanBody.java
index 1518590..d4567da 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceShutdownPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceShutdownPlanBody.java
@@ -63,8 +63,7 @@ public class RequestDeviceShutdownPlanBody extends RevertingPlanBody {
 			msg.addReceiver(new AID(alarmAgent.getValue(), false));
 			msg.setConversationId("cin" + System.currentTimeMillis());
 			myAgent.send(msg);
-			this.mt = MessageTemplate.and(MessageTemplate.MatchConversationId(msg.getConversationId()),
-					MessageTemplate.MatchInReplyTo(msg.getReplyWith()));
+			this.mt = MessageTemplate.MatchConversationId(msg.getConversationId());
 			this.sent = true;
 			log.info("Request sent to agent " + alarmAgent.getValue() + "!");
 		} else {
@@ -74,7 +73,7 @@ public class RequestDeviceShutdownPlanBody extends RevertingPlanBody {
 					TransientPredicate<TakeOff> alarmTakeOff = (TransientPredicate<TakeOff>) this.getCapability()
 							.getBeliefBase().getBelief(new TakeOff(House.ALARM));
 					alarmTakeOff.setValue(false, this.getGoal());
-					log.info(reply.getSender() + ": " + reply.getContent());
+					log.info(reply.getSender().getName() + ": " + reply.getContent());
 					setEndState(EndState.SUCCESSFUL);
 				} else {
 					this.sent = false;
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceTakeOffPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceTakeOffPlanBody.java
index ad259fe..47cadfa 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceTakeOffPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceTakeOffPlanBody.java
@@ -44,8 +44,7 @@ public class RequestDeviceTakeOffPlanBody extends RevertingPlanBody {
 			msg.addReceiver(new AID(alarmAgent.getValue(), false));
 			msg.setConversationId("cin" + System.currentTimeMillis());
 			myAgent.send(msg);
-			this.mt = MessageTemplate.and(MessageTemplate.MatchConversationId(msg.getConversationId()),
-					MessageTemplate.MatchInReplyTo(msg.getReplyWith()));
+			this.mt = MessageTemplate.MatchConversationId(msg.getConversationId());
 			this.sent = true;
 			log.info("Request sent to agent " + alarmAgent.getValue() + "!");
 		} else {
@@ -55,7 +54,7 @@ public class RequestDeviceTakeOffPlanBody extends RevertingPlanBody {
 					TransientPredicate<TakeOff> alarmTakeOff = (TransientPredicate<TakeOff>) this.getCapability()
 							.getBeliefBase().getBelief(new TakeOff(House.ALARM));
 					alarmTakeOff.setValue(true, this.getGoal());
-					log.info(reply.getSender() + ": " + reply.getContent());
+					log.info(reply.getSender().getName() + ": " + reply.getContent());
 					setEndState(EndState.SUCCESSFUL);
 				} else {
 					this.sent = false;
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceUnlockPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceUnlockPlanBody.java
index 835a5ad..b63e708 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceUnlockPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceUnlockPlanBody.java
@@ -41,8 +41,7 @@ public class RequestDeviceUnlockPlanBody extends RevertingPlanBody {
 			msg.addReceiver(new AID(doorsAgent.getValue(), false));
 			msg.setConversationId("cin" + System.currentTimeMillis());
 			myAgent.send(msg);
-			this.mt = MessageTemplate.and(MessageTemplate.MatchConversationId(msg.getConversationId()),
-					MessageTemplate.MatchInReplyTo(msg.getReplyWith()));
+			this.mt = MessageTemplate.MatchConversationId(msg.getConversationId());
 			this.sent = true;
 			log.info("Request sent to agent " + doorsAgent.getValue() + "!");
 		} else {
@@ -51,8 +50,8 @@ public class RequestDeviceUnlockPlanBody extends RevertingPlanBody {
 				if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
 					TransientPredicate<Locked> doorsUnlock = (TransientPredicate<Locked>) this.getCapability()
 							.getBeliefBase().getBelief(new Locked(House.DOORS));
-					doorsUnlock.setValue(true, this.getGoal());
-					log.info(reply.getSender() + ": " + reply.getContent());
+					doorsUnlock.setValue(false, this.getGoal());
+					log.info(reply.getSender().getName() + ": " + reply.getContent());
 					setEndState(EndState.SUCCESSFUL);
 				} else {
 					this.sent = false;
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/Runner.java b/bdi-jade-test/src/bdi4jade/examples/undo/Runner.java
index e76fb6e..1a8af53 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/Runner.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/Runner.java
@@ -153,9 +153,10 @@ public class Runner {
 						AnswerRequestPlanBody.class));
 
 		this.managerAgent = new SmartHomeAgent("MANAGER");
-		this.managerAgent.setCapability(new ManagementCapability(managerAgent, alarmAgent.getCustomName(), detectorAgent.getCustomName(),
-						doorsAgent.getCustomName(), fansAgent.getCustomName(), lightsAgent.getCustomName(),
-						valveAgent.getCustomName(), windowsAgent.getCustomName()));
+		ManagementCapability managementCapability = new ManagementCapability(managerAgent, alarmAgent.getCustomName(), detectorAgent.getCustomName(),
+				doorsAgent.getCustomName(), fansAgent.getCustomName(), lightsAgent.getCustomName(),
+				valveAgent.getCustomName(), windowsAgent.getCustomName());
+		this.managerAgent.setCapability(managementCapability);
 
 	}