bdi-network-resilience

Details

diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSCapability.java
index f665bd2..a04206f 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSCapability.java
@@ -17,6 +17,7 @@ import bdi4jade.core.GoalUpdateSet;
 import bdi4jade.event.GoalEvent;
 import bdi4jade.event.GoalListener;
 import bdi4jade.extension.palliative.PlanRequiredResource;
+import bdi4jade.extension.palliative.Resource;
 import bdi4jade.extension.palliative.ResourcePreferences;
 import bdi4jade.extension.palliative.goal.ConstrainedGoal;
 import bdi4jade.extension.palliative.goal.ObjectiveFunction;
@@ -24,6 +25,8 @@ import bdi4jade.extension.palliative.graph.AlternativeCauseSet;
 import bdi4jade.extension.palliative.graph.CauseEffectKnowledgeModel;
 import bdi4jade.extension.palliative.graph.CauseEffectRelationship;
 import bdi4jade.extension.palliative.logics.Fact;
+import bdi4jade.extension.palliative.logics.MathExpression;
+import bdi4jade.extension.palliative.logics.MathExpression.Operator;
 import bdi4jade.extension.palliative.logics.UnaryPredicate;
 import bdi4jade.extension.palliative.reasoning.PalliativeOptionGenerationFunction;
 import bdi4jade.extension.palliative.reasoning.PalliativePlanSelectionStrategy;
@@ -73,8 +76,12 @@ public class BDI2DoSCapability extends RouterAgentCapability implements BeliefRe
 
 		public OverUsageGoal(Link link, Boolean value) {
 			super(new PredicateGoal<OverUsage>(new OverUsage(link), false));
+
+			this.addOperationConstraint(new MathExpression<Resource>(Resources.VULNERABILITY, Operator.LESS_THAN, 0.5));
+
 			this.addObjectiveFunction(Resources.TIME, ObjectiveFunction.MINIMIZE);
 			this.addObjectiveFunction(Resources.NETWORK_AVAILABILITY, ObjectiveFunction.MAXIMIZE);
+			this.addObjectiveFunction(Resources.VULNERABILITY, ObjectiveFunction.MINIMIZE);
 		}
 
 	}
@@ -416,6 +423,7 @@ public class BDI2DoSCapability extends RouterAgentCapability implements BeliefRe
 		PlanRequiredResource prr = new PlanRequiredResource();
 		prr.setRequiredResource(Resources.TIME, 5.0);
 		prr.setRequiredResource(Resources.NETWORK_AVAILABILITY, 0.6);
+		prr.setRequiredResource(Resources.VULNERABILITY, 0.3);
 		this.limitLinkRate.putMetadata(PlanRequiredResource.METADATA_NAME, prr);
 		this.restoreLinkRate = new DefaultPlan(
 				GoalTemplateFactory.hasBeliefOfTypeWithValue(AttackPrevented.class, Boolean.FALSE),
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/Resources.java b/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/Resources.java
index 7952133..9a689a8 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/Resources.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/Resources.java
@@ -7,7 +7,8 @@ public interface Resources {
 
 	public static final Resource TIME = new NamedResource("TIME");
 	public static final Resource NETWORK_AVAILABILITY = new NamedResource("NETWORK_AVAILABILITY");
+	public static final Resource VULNERABILITY = new NamedResource("VULNERABILITY");
 
-	public static final Resource RESOURCES[] = { TIME, NETWORK_AVAILABILITY };
+	public static final Resource RESOURCES[] = { TIME, NETWORK_AVAILABILITY, VULNERABILITY };
 
 }