bdi-network-resilience

Details

diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/GoalRequestPlan.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/GoalRequestPlan.java
index b1fdd25..7d37d87 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/GoalRequestPlan.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/GoalRequestPlan.java
@@ -42,6 +42,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 import bdi4jade.belief.Predicate;
+import bdi4jade.belief.TransientPredicate;
 import bdi4jade.core.BDIAgent;
 import bdi4jade.core.Capability;
 import bdi4jade.goal.BeliefGoal;
@@ -82,14 +83,9 @@ public class GoalRequestPlan extends DefaultPlan {
 						GoalResponse<?> response = (GoalResponse<?>) myAgent
 								.getContentManager().extractContent(reply);
 
-						Predicate<?> predicate = requestDescription.capability
-								.belief(response.getPredicate(),
-										response.getValue());
-
-						BeliefGoal goal = (BeliefGoal<?>) getGoal();
-						goal.setOutputBelief(predicate);
-						assert goal.isAchieved(requestDescription.capability
-								.getBeliefBase());
+						Predicate<?> predicate = new TransientPredicate(
+								response.getPredicate(), response.getValue());
+						((BeliefGoal) getGoal()).setOutputBelief(predicate);
 
 						if (requestDescription.subscribe) {
 							myAgent.addBehaviour(new ReceiveUpdatesBehavior(
@@ -177,9 +173,11 @@ public class GoalRequestPlan extends DefaultPlan {
 			}
 			long timeElapsed = System.currentTimeMillis() - requestTime;
 			if (answers >= requests || timeElapsed >= ANSWER_TIME_OUT) {
+				log.debug("Received answers: " + answers + " (of " + requests
+						+ ")");
 				this.state = State.Selecting;
 			} else {
-				log.info("Waiting for more answers...");
+				log.debug("Waiting for more answers...");
 			}
 		}
 
@@ -336,9 +334,9 @@ public class GoalRequestPlan extends DefaultPlan {
 		AchievingGoal, Ended, ReceivingResponses, Resquesting, Selecting;
 	}
 
-	public static final int ANSWER_TIME_OUT = 60000;
+	public static final int ANSWER_TIME_OUT = 5000;
 	private static final Log log = LogFactory.getLog(GoalRequestPlan.class);
-	public static final int MSG_TIME_OUT = 10000;
+	public static final int MSG_TIME_OUT = 1000;
 	private Map<GoalTemplate, RequestDescription> requestDescriptions;
 
 	public GoalRequestPlan() {
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/GoalResponsePlan.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/GoalResponsePlan.java
index 197dbd2..66bfc81 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/GoalResponsePlan.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/GoalResponsePlan.java
@@ -68,8 +68,8 @@ public class GoalResponsePlan extends DefaultPlan {
 		private Capability partCapability;
 		private Predicate<?> predicate;
 		private GoalRequest<?> request;
-		private State state;
 		private long responseTime;
+		private State state;
 
 		private void achieveBeliefGoal() throws Exception {
 			GoalEvent event = getGoalEvent();
@@ -237,25 +237,35 @@ public class GoalResponsePlan extends DefaultPlan {
 				}
 			}
 
-			ACLMessage reply = beliefGoalMsg.createReply();
-			reply.setPerformative(canAchieve ? ACLMessage.PROPOSE
-					: ACLMessage.REFUSE);
-			reply.setReplyWith("per" + responseTime);
+			if (canAchieve) {
+				ACLMessage reply = beliefGoalMsg.createReply();
+				reply.setPerformative(ACLMessage.PROPOSE);
+				reply.setReplyWith("per" + responseTime);
+				// TODO set proposal cost
+				Random r = new Random(System.currentTimeMillis());
+				GoalProposal proposal = new GoalProposal(r.nextDouble());
+				myAgent.getContentManager().fillContent(reply, proposal);
+				myAgent.send(reply);
 
-			// TODO set proposal cost
-			Random r = new Random(System.currentTimeMillis());
-			GoalProposal proposal = new GoalProposal(r.nextDouble());
-			myAgent.getContentManager().fillContent(reply, proposal);
+				log.debug("Agent " + myAgent.getLocalName() + " CAN achieve "
+						+ goal);
 
-			myAgent.send(reply);
+				this.mt = MessageTemplate.and(MessageTemplate
+						.MatchConversationId(reply.getConversationId()),
+						MessageTemplate.MatchInReplyTo(reply.getReplyWith()));
+				this.state = State.ReceivingReply;
+			} else {
+				ACLMessage reply = beliefGoalMsg.createReply();
+				reply.setPerformative(ACLMessage.REFUSE);
+				reply.setReplyWith("per" + responseTime);
+				myAgent.send(reply);
 
-			log.debug("Agent " + myAgent.getLocalName() + " can achieve "
-					+ goal + ": " + canAchieve);
+				log.debug("Agent " + myAgent.getLocalName()
+						+ " CANNOT achieve " + goal);
 
-			this.mt = MessageTemplate.and(MessageTemplate
-					.MatchConversationId(reply.getConversationId()),
-					MessageTemplate.MatchInReplyTo(reply.getReplyWith()));
-			this.state = State.ReceivingReply;
+				setEndState(EndState.SUCCESSFUL);
+				this.state = State.Ended;
+			}
 		}
 
 		@Parameter(direction = Direction.IN)
@@ -269,8 +279,8 @@ public class GoalResponsePlan extends DefaultPlan {
 		AchievingBeliefGoal, Ended, ReceivingReply, SendingResponse, SendingUpdates;
 	}
 
+	public static final int ANSWER_TIME_OUT = 5000;
 	private static final Log log = LogFactory.getLog(GoalResponsePlan.class);
-	public static final int ANSWER_TIME_OUT = 60000;
 
 	public GoalResponsePlan() {
 		super(new MessageTemplate(new MatchExpression() {
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgentCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgentCapability.java
index 1e3ecf9..8337217 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgentCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgentCapability.java
@@ -60,18 +60,18 @@ public abstract class RouterAgentCapability extends Capability implements
 
 	protected void addBelief(Belief<?, ?> belief) {
 		getBeliefBase().addOrUpdateBelief(belief);
-		log.debug("belief added or updated: " + belief);
+		log.info("belief added or updated: " + belief);
 	}
 
 	protected Predicate<?> belief(Object proposition, Boolean value) {
 		if (value == null) {
 			getBeliefBase().removeBelief(proposition);
-			log.debug("belief(~" + proposition + "))");
+			log.info("belief(~" + proposition + "))");
 			return null;
 		} else {
 			Predicate<?> predicate = new TransientPredicate(proposition, value);
 			getBeliefBase().addOrUpdateBelief(predicate);
-			log.debug("belief(" + (value ? "" : "not ") + proposition + ")");
+			log.info("belief(" + (value ? "" : "not ") + proposition + ")");
 			return predicate;
 		}
 	}
@@ -127,9 +127,9 @@ public abstract class RouterAgentCapability extends Capability implements
 		}
 		if (!getMyAgent().hasGoal(goal)) {
 			if (value == null) {
-				log.debug("goal(~" + proposition + "))");
+				log.info("goal(~" + proposition + "))");
 			} else {
-				log.debug("goal(" + (value ? "" : "not ") + proposition + "))");
+				log.info("goal(" + (value ? "" : "not ") + proposition + "))");
 			}
 			goalUpdateSet.generateGoal(goal, this, listener);
 		}
@@ -139,7 +139,7 @@ public abstract class RouterAgentCapability extends Capability implements
 			GoalListener listener) {
 		Goal goal = new BeliefPresentGoal(proposition);
 		if (!getMyAgent().hasGoal(goal)) {
-			log.debug("goal(?" + proposition + "))");
+			log.info("goal(?" + proposition + "))");
 			goalUpdateSet.generateGoal(goal, this, listener);
 		}
 	}
@@ -157,7 +157,7 @@ public abstract class RouterAgentCapability extends Capability implements
 
 	protected void removeBelief(Belief<?, ?> belief) {
 		getBeliefBase().removeBelief(belief.getName());
-		log.debug("belief removed: " + belief);
+		log.info("belief removed: " + belief);
 	}
 
 	@Override
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/log4j.properties b/network-resilience/src/br/ufrgs/inf/bdinetr/log4j.properties
index 4e28233..ad39f61 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/log4j.properties
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/log4j.properties
@@ -30,5 +30,5 @@ log4j.logger.org.apache.struts2=FATAL
 log4j.logger.org.springframework=FATAL
 
 log4j.logger.bdi4jade=WARN
-log4j.logger.br.ufrgs.inf.bdinetr=DEBUG
+log4j.logger.br.ufrgs.inf.bdinetr=INFO