diff --git a/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Launcher.java b/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Launcher.java
index 3ad417d9047d5f288dfcfabd0b6e156b1a3faac2..0acf3b0eeaac5901ee2879c2c5718035f33f095d 100644
--- a/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Launcher.java
+++ b/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Launcher.java
@@ -45,14 +45,20 @@ public class F_XY_Launcher implements Serializable {
 			//System.out.println("Running :" + amoeba.isRunning());
 			try        
 			{
-			    Thread.sleep(1);
+			    Thread.sleep(amoeba.temporisation);
 			} 
 			catch(InterruptedException ex) 
 			{
 			    Thread.currentThread().interrupt();
 			}
 			
-			if(amoeba.isRunning()) {
+			
+			if(amoeba.getScheduler().requestAsked()) {
+				amoeba.manual = true;
+				amoeba.learn(new HashMap<String, Double>(f_XY_Manager.getOutputRequest(amoeba.getScheduler().getManualRequest())));
+				amoeba.manual = false;
+				
+			}else if(amoeba.isRunning()) {
 				
 				/*Random samples of the studied system */
 				f_XY_Manager.playOneStep(0);
@@ -75,6 +81,7 @@ public class F_XY_Launcher implements Serializable {
 				
 				
 			}
+ 
 			
 		}
 		
diff --git a/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Manager.java b/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Manager.java
index 54f055bf2a58cab987ce25b7940ec4c84e22b609..99aa1564aabff07f9de0c665691f4a6846924ac4 100644
--- a/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Manager.java
+++ b/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Manager.java
@@ -65,6 +65,27 @@ public class F_XY_Manager implements StudiedSystem, Serializable{
 		out.put("oracle",result);
 		return out;
 	}
+	
+	
+	public HashMap<String, Double> getOutputRequest(HashMap<String, Double> values) {
+		HashMap<String, Double> out = new HashMap<String, Double>();
+
+		double xValue = values.get("px");
+		double yValue = values.get("py");
+		
+		//result = (y*y + x*x < spaceSize*spaceSize ) ? 2*x + y : 5*x - 8*y;
+		result = (yValue > -spaceSize && yValue < spaceSize && xValue < spaceSize && xValue > -spaceSize) ? 2*xValue + yValue : 5*xValue - 8*yValue;
+		if(Math.abs(yValue) > 3 * spaceSize && Math.abs(xValue) > 3 * spaceSize) {
+			result = 1000*xValue + 500*yValue;
+		}
+		//	result = (2*x) + (4*y) + x*y;
+		//	result = (x > 2*y) ? 0.0 : 1.0;
+		
+		out.put("px",xValue);
+		out.put("py",yValue);
+		out.put("oracle",result);
+		return out;
+	}
 
 	/* (non-Javadoc)
 	 * @see kernel.StudiedSystem#switchControlMode()
diff --git a/AMOEBA3/src/mas/agents/context/Context.java b/AMOEBA3/src/mas/agents/context/Context.java
index a4bf7bbb2afda25b2e7137cb547f2eea2db96826..6bc2fa69f196a232942f7a589990c3d6742e04ac 100644
--- a/AMOEBA3/src/mas/agents/context/Context.java
+++ b/AMOEBA3/src/mas/agents/context/Context.java
@@ -2,6 +2,7 @@ package mas.agents.context;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -98,9 +99,9 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	public Context(World world, Head head, Context bestNearestContext) {
 		super(world);
 		buildContext(head, bestNearestContext);
-		//System.out.println("=======================================================================" +this.getName() + " <-- " + bestNearestContext.getName());
-		//System.out.println(this.toStringFull());
-		//System.out.println(bestNearestContext.toStringFull());
+		////System.out.println("=======================================================================" +this.getName() + " <-- " + bestNearestContext.getName());
+		////System.out.println(this.toStringFull());
+		////System.out.println(bestNearestContext.toStringFull());
 	}
 	
 	private void buildContext (Head headAgent, Context bestNearestContext) {
@@ -126,9 +127,14 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 			Range r;
 			
 			
-			Double radius = getMaxRadiusForContextCreation(v);
+			////System.out.println("MAX RADIUS FOR CONTEXT CREATION AFTER TEST"  + v.getName() + " " + radius + " / " + (radius/v.getRadiusContextForCreation()));
+
+			AbstractPair<Double, Double> radiuses = world.getScheduler().getHeadAgent().getMaxRadiusesForContextCreation(v);
 			
-			r = new Range(this, v.getValue() - radius, v.getValue() + radius, 0, true, true, v, world);
+			//System.out.println("MAX RADIUS FOR CONTEXT CREATION "  + v.getName() + " < " + radiuses.getA() + " , "  + radiuses.getB() + " > / < " + (radiuses.getA()/v.getRadiusContextForCreation()) + " , " + (radiuses.getB()/v.getRadiusContextForCreation()) + " >");
+			
+			r = new Range(this, v.getValue() - radiuses.getA(), v.getValue() + radiuses.getB(), 0, true, true, v, world);
+					
 			ranges.put(v, r);
 			ranges.get(v).setValue(v.getValue());
 			sendExpressMessage(null, MessageType.REGISTER, v);
@@ -138,7 +144,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 			v.addContextSortedRanges(this);
 		}
 
-
+		expand();
 		
 		this.confidence = bestNearestContext.confidence;	
 		if (bestNearestContext.world.getLocalModel() == TypeLocalModel.MILLER_REGRESSION) {
@@ -212,7 +218,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	
 	Double getMaxRadiusForContextCreation(Percept pct) {
 		Double maxRadius = world.getScheduler().getHeadAgent().getMaxRadiusForContextCreation(pct);
-		//System.out.println("MAX RADIUS FOR CONTEXT CREATION "  + pct.getName() + " " + maxRadius + " / " + (maxRadius/pct.getRadiusContextForCreation()));
+		////System.out.println("MAX RADIUS FOR CONTEXT CREATION "  + pct.getName() + " " + maxRadius + " / " + (maxRadius/pct.getRadiusContextForCreation()));
 		return maxRadius;
 		
 		//return Math.abs(pct.getMinMaxDistance()) * world.contextCreationPercentage;
@@ -290,11 +296,11 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 			}
 
 
-			//System.out.println("MAX RADIUS FOR CONTEXT CREATION AFTER TEST"  + v.getName() + " " + radius + " / " + (radius/v.getRadiusContextForCreation()));
+			////System.out.println("MAX RADIUS FOR CONTEXT CREATION AFTER TEST"  + v.getName() + " " + radius + " / " + (radius/v.getRadiusContextForCreation()));
 
 			AbstractPair<Double, Double> radiuses = world.getScheduler().getHeadAgent().getMaxRadiusesForContextCreation(v);
 			
-			System.out.println("MAX RADIUS FOR CONTEXT CREATION "  + v.getName() + " < " + radiuses.getA() + " , "  + radiuses.getB() + " > / < " + (radiuses.getA()/v.getRadiusContextForCreation()) + " , " + (radiuses.getB()/v.getRadiusContextForCreation()) + " >");
+			//System.out.println("MAX RADIUS FOR CONTEXT CREATION "  + v.getName() + " < " + radiuses.getA() + " , "  + radiuses.getB() + " > / < " + (radiuses.getA()/v.getRadiusContextForCreation()) + " , " + (radiuses.getB()/v.getRadiusContextForCreation()) + " >");
 			
 			r = new Range(this, v.getValue() - radiuses.getA(), v.getValue() + radiuses.getB(), 0, true, true, v, world);
 			
@@ -346,14 +352,14 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		
 		overlaps =  new HashMap<Context,String>();
 		
-		System.out.println("NEW CONTEXT " + this.getName());
+		//System.out.println("NEW CONTEXT " + this.getName());
 		displayRanges();
 		
 	}
 	
 	public void displayRanges() {
 		for(Percept pct : ranges.keySet()) {
-			System.out.println(pct.getName() + " [ " + ranges.get(pct).getStart() + " , " + ranges.get(pct).getEnd() + " ]");
+			//System.out.println(pct.getName() + " [ " + ranges.get(pct).getStart() + " , " + ranges.get(pct).getEnd() + " ]");
 		}
 	}
 	
@@ -385,7 +391,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		for(Context ctxtNeigbor: contextNeighbors) {
 			for(Percept pct : ranges.keySet()) {
 				if(pct!=pctDirection) {
-					System.out.println("DISTANCE " + ctxtNeigbor.getName()+ " " + pct.getName()+ " " +  expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct)) + " " + ( expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct))<0)) ;
+					//System.out.println("DISTANCE " + ctxtNeigbor.getName()+ " " + pct.getName()+ " " +  expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct)) + " " + ( expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct))<0)) ;
 					test = test && ( expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct))<-0.0001);
 				}
 				
@@ -413,31 +419,31 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		for(Percept fixedPct: ranges.keySet()) {
 			alternativeContexts.put(fixedPct, new SpatialContext(this));
 
-			System.out.println("FIXED PERCEPT :"  + fixedPct.getName());
+			//System.out.println("FIXED PERCEPT :"  + fixedPct.getName());
 			
 			for(Percept pctDirectionForExpanding: ranges.keySet()) {
 
 				
 				if(pctDirectionForExpanding != fixedPct) {
 					
-					System.out.println("DIRECTION PERCEPT :"  + pctDirectionForExpanding.getName());
+					//System.out.println("DIRECTION PERCEPT :"  + pctDirectionForExpanding.getName());
 					
-					System.out.println("ALL NEIGHBORS");
+					//System.out.println("ALL NEIGHBORS");
 					for(Context ct : world.getScheduler().getHeadAgent().getActivatedNeighborsContexts()) {
-						System.out.println(ct.getName());
+						//System.out.println(ct.getName());
 					}
 					
 					neighborsOnOneDirection = getContextsOnAPerceptDirectionFromContextsNeighbors(world.getScheduler().getHeadAgent().getActivatedNeighborsContexts(), pctDirectionForExpanding, alternativeContexts.get(fixedPct));
 					
 					
-					System.out.println("NEIGHBORS THROUGH " + pctDirectionForExpanding.getName());
+					//System.out.println("NEIGHBORS THROUGH " + pctDirectionForExpanding.getName());
 					for(Context ct : neighborsOnOneDirection) {
-						System.out.println(ct.getName());
+						//System.out.println(ct.getName());
 					}
 					
 					
 					AbstractPair<Double,Double> expandingRadiuses = getMaxExpansionsForContextExpansionAfterCreation(neighborsOnOneDirection, pctDirectionForExpanding);
-					System.out.println("START : " + expandingRadiuses.getA() + " END " + expandingRadiuses.getB());
+					//System.out.println("START : " + expandingRadiuses.getA() + " END " + expandingRadiuses.getB());
 					alternativeContexts.get(fixedPct).expandEnd(pctDirectionForExpanding, expandingRadiuses.getB());
 					alternativeContexts.get(fixedPct).expandStart(pctDirectionForExpanding, expandingRadiuses.getA());
 				}
@@ -463,7 +469,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 			
 			double startExpansion = Math.abs(ranges.get(pct).getStart()-biggerContextForCreation.getStart(pct));
 			double endExpansion = Math.abs(ranges.get(pct).getEnd()-biggerContextForCreation.getEnd(pct));
-			System.out.println("EXPANSION "  + pct.getName() +" < " + startExpansion + " , "  + endExpansion + " > / < " +pct.getMin() + " , " +pct.getMax() + " >");
+			//System.out.println("EXPANSION "  + pct.getName() +" < " + startExpansion + " , "  + endExpansion + " > / < " +pct.getMin() + " , " +pct.getMax() + " >");
 			
 			ranges.get(pct).setStart(biggerContextForCreation.getStart(pct));
 			ranges.get(pct).setEnd(biggerContextForCreation.getEnd(pct));
@@ -473,10 +479,10 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	}
 	
 	public AbstractPair<Double,Double> getMaxExpansionsForContextExpansionAfterCreation(ArrayList<Context> contextNeighborsInOneDirection, Percept pct) {
-		//AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(pct.getRadiusContextForCreation(),pct.getRadiusContextForCreation());
-		AbstractPair<Double,Double> maxExpansions = new AbstractPair<Double,Double>(Math.abs(pct.getMin()- ranges.get(pct).getStart()),Math.abs(pct.getMax()-ranges.get(pct).getEnd()));
+		AbstractPair<Double,Double> maxExpansions = new AbstractPair<Double,Double>(pct.getRadiusContextForCreation(),pct.getRadiusContextForCreation());
+		//AbstractPair<Double,Double> maxExpansions = new AbstractPair<Double,Double>(Math.abs(pct.getMin()- ranges.get(pct).getStart()),Math.abs(pct.getMax()-ranges.get(pct).getEnd()));
 
-		//System.out.println("EXPANSION MIN MAX "  + pct.getName() +" " + pct.getValue() + " < " + pct.getMin() + " , "  + pct.getMax() + " > / < " + Math.abs(pct.getMin()- pct.getValue()) + " , " + Math.abs(pct.getMax()-pct.getValue()) + " >");
+		////System.out.println("EXPANSION MIN MAX "  + pct.getName() +" " + pct.getValue() + " < " + pct.getMin() + " , "  + pct.getMax() + " > / < " + Math.abs(pct.getMin()- pct.getValue()) + " , " + Math.abs(pct.getMax()-pct.getValue()) + " >");
 		
 		double currentStartExpansion;
 		double currentEndExpansion;
@@ -485,13 +491,13 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		//for(Context ctxt:partialNeighborContexts.get(pct)) {
 		for(Context ctxt: contextNeighborsInOneDirection) {			
 			
-			System.out.println("DISTANCE " + pct.getName() + " " + ctxt.getRanges().get(pct).centerDistance(pct.getValue()));
+			//System.out.println("DISTANCE " + pct.getName() + " " + ctxt.getRanges().get(pct).centerDistance(pct.getValue()));
 			if(ctxt.getRanges().get(pct).centerDistance(pct.getValue()) < 0) {
 				// End radius
 				
 				currentEndExpansion = ctxt.getRanges().get(pct).distance(ranges.get(pct));
-				System.out.println("DISTANCE 2 " + pct.getName() + " " + ctxt.getRanges().get(pct).distance(ranges.get(pct)));
-				//System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
+				//System.out.println("DISTANCE 2 " + pct.getName() + " " + ctxt.getRanges().get(pct).distance(ranges.get(pct)));
+				////System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
 				if(currentEndExpansion < maxExpansions.getB() && currentEndExpansion >= -0.00001 ) {
 					if(Math.abs(currentEndExpansion)<0.0001) {
 						currentEndExpansion = 0.0;
@@ -503,7 +509,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 			if(ctxt.getRanges().get(pct).centerDistance(pct.getValue()) > 0) {
 				// Start radius
 				currentStartExpansion = ctxt.getRanges().get(pct).distance(ranges.get(pct));
-				//System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
+				////System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
 				if(currentStartExpansion < maxExpansions.getA() && currentStartExpansion >= -0.00001 ) {
 					if(Math.abs(currentStartExpansion)<0.0001) {
 						currentEndExpansion = 0.0;
@@ -623,7 +629,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 				activations--;
 
 				if (activations < 0)  {
-					////System.out.println("Activation lower than 0 : exit");
+					//////System.out.println("Activation lower than 0 : exit");
 					System.exit(-2);
 				}
 				if (valid) {
@@ -655,16 +661,17 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		
 		super.play();
 		
-		System.out.println("}}}}}}}}}}}}}}}}}}}}}}}}}}} NON VALIDITY");
+		
+		world.trace(new ArrayList<String>(Arrays.asList(this.getName(), "NON VALID PERCEPTS")));
 		for(Percept pct : nonValidPercepts) {
-			System.out.println(pct.getName());
+			System.out.println("--> " + pct.getName());
 		}
 		
 		if(nonValidPercepts.size() == 0) {
 
 			sendMessage(getActionProposal(), MessageType.PROPOSAL, headAgent);
 			Config.print("Message envoy�", 4);
-			//////System.out.println("Valid context by Percepts "+this.name);
+			System.out.println(world.getScheduler().getTick() + " " + this.name + " VALID");
 		}
 		else if(nonValidPercepts.size() == 1){
 			world.getScheduler().getHeadAgent().addPartiallyActivatedContext(nonValidPercepts.get(0), this);
@@ -673,14 +680,14 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		
 		if(nonValidNeightborPercepts.size() == 0) {
 			
-			//System.out.println("VALID NEIGHBOR : " + this.getName());
+			////System.out.println("VALID NEIGHBOR : " + this.getName());
 
-			System.out.println(world.getScheduler().getTick() + " " + this.getName() + " " + "VALID");
+			//System.out.println(world.getScheduler().getTick() + " " + this.getName() + " " + "VALID");
 			world.getScheduler().getHeadAgent().addRequestNeighbor(this);
 		}
 		else if(nonValidNeightborPercepts.size() == 1){
 			world.getScheduler().getHeadAgent().addPartialRequestNeighborContext(nonValidNeightborPercepts.get(0),this);
-			System.out.println(world.getScheduler().getTick() + " " + this.getName() + " " + "PARTIALLY VALID" + " " + nonValidNeightborPercepts.get(0).getName());
+			//System.out.println(world.getScheduler().getTick() + " " + this.getName() + " " + "PARTIALLY VALID" + " " + nonValidNeightborPercepts.get(0).getName());
 		}
 		
 		
@@ -706,7 +713,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		
 		
 		
-		nonValidPercepts.clear();
+//		nonValidPercepts.clear();
 		//nonValidNeightborPercepts.clear();
 		
 		//ENDO
@@ -731,7 +738,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		Random rand = new Random();
 		
 //		if( this.getConfidence()  <= 0 && tickCreation + 125 < world.getScheduler().getTick() ) {
-//			//System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Uselessness");
+//			////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Uselessness");
 //			world.raiseNCS(NCS.CONTEXT_USELESSNESS);
 //			this.die();
 //		}
@@ -743,7 +750,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		
 		if(nonValidNeightborPercepts.size() == 0) {
 			
-			//System.out.println("VALID NEIGHBOR : " + this.getName());
+			////System.out.println("VALID NEIGHBOR : " + this.getName());
 
 			
 			world.getScheduler().getHeadAgent().addRequestNeighbor(this);
@@ -758,7 +765,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		
 		if(nonValidPercepts.size() == 0) {
 			
-			//System.out.println("VALID NEIGHBOR : " + this.getName());
+			////System.out.println("VALID NEIGHBOR : " + this.getName());
 
 			
 			world.getScheduler().getHeadAgent().addActivatedContext(this);
@@ -772,6 +779,10 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	public void clearNonValidPerceptNeighbors() {
 		nonValidNeightborPercepts.clear();
 	}
+	
+	public void clearNonValidPercepts() {
+		nonValidPercepts.clear();
+	}
 
 	private void NCSDetections() {
 		
@@ -781,13 +792,13 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	}
 	
 	public void displayOtherContextsDistances() {
-		////System.out.println("Other Context Distances : " + this.getName());
+		//////System.out.println("Other Context Distances : " + this.getName());
 		for(Context ctxt :otherContextsDistancesByPercept.keySet()) {
 			//system.out.print(ctxt.getName() + " ");
 			for(Percept pct : otherContextsDistancesByPercept.get(ctxt).keySet()) {
 				//system.out.print(pct.getName() + " " + otherContextsDistancesByPercept.get(ctxt).get(pct).getFirst() + " " + otherContextsDistancesByPercept.get(ctxt).get(pct).getSecond() + " ");
 			}
-			////System.out.println(" ");
+			//////System.out.println(" ");
 		}
 	}
 	
@@ -820,7 +831,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	 * @param head the head
 	 */
 	public void solveNCS_IncompetentHead(Head head) {
-		//System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " +"solveNCS_IncompetentHead");
+		////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " +"solveNCS_IncompetentHead");
 		world.raiseNCS(NCS.HEAD_INCOMPETENT);
 		growRanges();
 	}
@@ -831,7 +842,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	 * @param head the head
 	 */
 	public void solveNCS_Concurrence(Head head) {
-		//System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Concurrence");
+		////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Concurrence");
 		world.raiseNCS(NCS.CONTEXT_CONCURRENCE);
 		this.shrinkRangesToJoinBorders( head.getBestContext());
 	}
@@ -842,7 +853,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	 * @param head the head
 	 */
 	private void solveNCS_Uselessness(Head head) {
-		//System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Uselessness");
+		////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Uselessness");
 		world.raiseNCS(NCS.CONTEXT_USELESSNESS);
 		this.die();
 	}
@@ -853,7 +864,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	 * @param head the head
 	 */
 	private void solveNCS_ConflictInexact(Head head) {
-		//System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_ConflictInexact");
+		////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_ConflictInexact");
 		world.raiseNCS(NCS.CONTEXT_CONFLICT_INEXACT);
 		if(true) {
 			confidence--;
@@ -869,7 +880,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 	 */
 	private void solveNCS_Conflict(Head head) {
 
-		//System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Conflict");
+		////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Conflict");
 		world.raiseNCS(NCS.CONTEXT_CONFLICT_FALSE);		
 		
 		if (head.getNewContext() == this) {
@@ -887,19 +898,19 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 			//Percept p = getPerceptWithLargerImpactOnAVT(percepts);
 			//Percept p = getPerceptWithLesserImpactOnAVT(percepts);
 			Percept p;
-			////System.out.println((head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()) + "head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()");
+			//////System.out.println((head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()) + "head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()");
 			if (head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()){
 				
 					p = this.getPerceptWithLesserImpactOnVolumeNotIncludedIn2(percepts, head.getBestContext());
 
 				
-				////System.out.println((p == null) + "p == null");
+				//////System.out.println((p == null) + "p == null");
 					
 				if (p == null) {
-					//System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_ConflictAndDie");
+					////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_ConflictAndDie");
 					this.die();
 				}else {	
-					////System.out.println(p.getName());
+					//////System.out.println(p.getName());
 					//ranges.get(p).matchBorderWith(head.getBestContext());
 					ranges.get(p).adaptTowardsBorder(head.getBestContext());
 				}
@@ -943,7 +954,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		double volumeLost = Double.MAX_VALUE;
 		double vol = 1.0;
 		
-		//System.out.println("PerceptWithLesserImpactOnVolumeNotIncludedIn ...");
+		////System.out.println("PerceptWithLesserImpactOnVolumeNotIncludedIn ...");
 		for (Percept percept : containingRanges) {
 			
 
@@ -952,28 +963,28 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 				
 				if (!(otherRanges.getStart() <= ranges.get(percept).getStart() &&   ranges.get(percept).getEnd() <= otherRanges.getEnd())) {
 					
-					//System.out.println(percept.getName());
+					////System.out.println(percept.getName());
 					
 					
 					if (ranges.get(percept).getNearestLimit(percept.getValue()) == false) {
-						//System.out.println("end simu : " + ranges.get(percept).simulateNegativeAVTFeedbackEnd(percept.getValue()) + " start : " + ranges.get(percept).getStart());
+						////System.out.println("end simu : " + ranges.get(percept).simulateNegativeAVTFeedbackEnd(percept.getValue()) + " start : " + ranges.get(percept).getStart());
 						vol = ranges.get(percept).simulateNegativeAVTFeedbackEnd(percept.getValue()) - ranges.get(percept).getStart();
 					} else {
-						//System.out.println("end : " + ranges.get(percept).getEnd() + " start simu : " + ranges.get(percept).simulateNegativeAVTFeedbackStart(percept.getValue()));
+						////System.out.println("end : " + ranges.get(percept).getEnd() + " start simu : " + ranges.get(percept).simulateNegativeAVTFeedbackStart(percept.getValue()));
 						vol = ranges.get(percept).getEnd() - ranges.get(percept).simulateNegativeAVTFeedbackStart(percept.getValue());
 					}
 					
 					
-					//System.out.println("Vol1 : " + vol);
+					////System.out.println("Vol1 : " + vol);
 					
 					for (Percept p2 : ranges.keySet()) {
 						if (!ranges.get(p2).isPerceptEnum() && p2 != percept) {
-							//System.out.println(p2.getName());
+							////System.out.println(p2.getName());
 							vol *= ranges.get(p2).getLenght();
-							//System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName());
+							////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName());
 						}
 					}
-					//System.out.println("Vol2 : " + vol);
+					////System.out.println("Vol2 : " + vol);
 					
 					
 					if (vol < volumeLost) {
@@ -982,7 +993,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 					}
 					
 					
-					//System.out.println("Vol lost : " + volumeLost + "percept " + p.getName());
+					////System.out.println("Vol lost : " + volumeLost + "percept " + p.getName());
 					
 				}
 				
@@ -1001,7 +1012,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		double volumeLost = Double.MAX_VALUE;
 		double vol = 1.0;
 		
-		////System.out.println("LESSER ...");
+		//////System.out.println("LESSER ...");
 		for (Percept percept : containingRanges) {
 			
 
@@ -1010,29 +1021,29 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 				
 				if (!(otherRanges.getStart() <= ranges.get(percept).getStart() &&   ranges.get(percept).getEnd() <= otherRanges.getEnd())) {
 					
-					////System.out.println(percept.getName());
+					//////System.out.println(percept.getName());
 					
 					
 					vol = Math.abs( Math.abs(otherRanges.getCenter() - ranges.get(percept).getCenter()) - otherRanges.getRadius() - ranges.get(percept).getRadius());
 //					if (ranges.get(percept).getNearestLimit(percept.getValue()) == false) {
-//						////System.out.println("end simu : " + ranges.get(percept).simulateNegativeAVTFeedbackMax(percept.getValue()) + " start : " + ranges.get(percept).getStart());
+//						//////System.out.println("end simu : " + ranges.get(percept).simulateNegativeAVTFeedbackMax(percept.getValue()) + " start : " + ranges.get(percept).getStart());
 //						vol = percept.getValue() - ranges.get(percept).getStart();
 //					} else {
-//						////System.out.println("end : " + ranges.get(percept).getEnd() + " start simu : " + ranges.get(percept).simulateNegativeAVTFeedbackMin(percept.getValue()));
+//						//////System.out.println("end : " + ranges.get(percept).getEnd() + " start simu : " + ranges.get(percept).simulateNegativeAVTFeedbackMin(percept.getValue()));
 //						vol = ranges.get(percept).getEnd() - percept.getValue();
 //					}
 					
 					
-					////System.out.println("Vol1 : " + vol);
+					//////System.out.println("Vol1 : " + vol);
 					
 					for (Percept p2 : ranges.keySet()) {
 						if (!ranges.get(p2).isPerceptEnum() && p2 != percept) {
-							////System.out.println(p2.getName());
+							//////System.out.println(p2.getName());
 							vol *= ranges.get(p2).getLenght();
-							////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName());
+							//////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName());
 						}
 					}
-					////System.out.println("Vol2 : " + vol);
+					//////System.out.println("Vol2 : " + vol);
 					
 					
 					if (vol < volumeLost) {
@@ -1041,7 +1052,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 					}
 					
 					
-					////System.out.println("Vol lost : " + volumeLost);
+					//////System.out.println("Vol lost : " + volumeLost);
 					
 				}
 				
@@ -1060,7 +1071,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 		double volumeLost3 = Double.MAX_VALUE;
 		double vol3 = 1.0;
 		
-		//System.out.println("LESSER ...");
+		////System.out.println("LESSER ...");
 		for (Percept percept : containingRanges) {
 			
 
@@ -1069,7 +1080,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 				
 				if (!(otherRanges.getStart() <= ranges.get(percept).getStart() &&   ranges.get(percept).getEnd() <= otherRanges.getEnd())) {
 					
-					//System.out.println(percept.getName());
+					////System.out.println(percept.getName());
 					
 					
 					if(percept.contextOrder(this, otherContext)) {
@@ -1078,17 +1089,17 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 					else if(percept.contextOrder(otherContext, this)) {
 						vol3 = Math.abs(percept.getEndRangeProjection(otherContext) - percept.getStartRangeProjection(this));
 					}
-					//System.out.println("vol3 : " + vol3);
+					////System.out.println("vol3 : " + vol3);
 					
 					
 					for (Percept p2 : ranges.keySet()) {
 						if (!ranges.get(p2).isPerceptEnum() && p2 != percept) {
-							////System.out.println(p2.getName());
+							//////System.out.println(p2.getName());
 							vol3 *= ranges.get(p2).getLenght();
-							////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName());
+							//////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName());
 						}
 					}
-					////System.out.println("vol3 : " + vol3);
+					//////System.out.println("vol3 : " + vol3);
 					
 					
 					if (vol3 < volumeLost3) {
@@ -1096,7 +1107,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 						p3 = percept;
 					}
 					
-					////System.out.println("Vol3 lost : " + volumeLost3);
+					//////System.out.println("Vol3 lost : " + volumeLost3);
 					
 				}
 				
@@ -1105,7 +1116,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 			
 			
 		}
-		if(p3 != null) {//System.out.println("p3 : " + p3.getName());
+		if(p3 != null) {////System.out.println("p3 : " + p3.getName());
 
 		}
 		
@@ -1175,7 +1186,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{
 				}
 			}
 		}
-		////System.out.println("percept " + p.getName());
+		//////System.out.println("percept " + p.getName());
 		return p;
 	}
 	
@@ -1214,7 +1225,7 @@ private Percept getPerceptWithLesserImpactOnVolume(ArrayList<Percept> containing
 	}
 
 }
-	////System.out.println("percept " + p.getName());
+	//////System.out.println("percept " + p.getName());
 	return p;
 }
 
@@ -1236,7 +1247,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 	}
 
 }
-	////System.out.println("percept " + p.getName());
+	//////System.out.println("percept " + p.getName());
 	return p;
 }
 
@@ -1693,7 +1704,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 		Double influence = 1.0;
 		
 		for(Percept pct : situation.keySet()) {
-			//////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct)));
+			////////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct)));
 			influence *= getInfluenceByPerceptSituationWithConfidence(pct, situation.get(pct));
 		}
 		
@@ -1708,7 +1719,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 		Double influence = 1.0;
 		
 		for(Percept pct : situation.keySet()) {
-			//////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct)));
+			////////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct)));
 			influence *= getInfluenceByPerceptSituation(pct, situation.get(pct));
 		}
 		
@@ -1720,7 +1731,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 		Double currentInfluence = 0.0;
 		
 		for(Percept pct : situation.keySet()) {
-			//////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct)));
+			////////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct)));
 			currentInfluence = getInfluenceByPerceptSituationWithConfidence(pct, situation.get(pct));
 			if(currentInfluence < worstInfluence) {
 				worstInfluence = currentInfluence;
@@ -1735,7 +1746,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 		Double currentInfluence = 0.0;
 		
 		for(Percept pct : situation.keySet()) {
-			//////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct)));
+			////////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct)));
 			currentInfluence = getInfluenceByPerceptSituation(pct, situation.get(pct));
 			if(currentInfluence < worstInfluence) {
 				worstInfluence = currentInfluence;
@@ -1812,7 +1823,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 	 * Update experiments.
 	 */
 	private void updateExperiments() {
-	//	////System.out.println("Update experiments");
+	//	//////System.out.println("Update experiments");
 		ArrayList<Percept> var = world.getAllPercept();
 		maxActivationsRequired = var.size();
 		Experiment exp = new Experiment();
@@ -1886,11 +1897,11 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 	 * @param head the head
 	 */
 	public void growRanges() {
-		////System.out.println("Grow " + this.getName() );
+		//////System.out.println("Grow " + this.getName() );
 		ArrayList<Percept> allPercepts = world.getAllPercept();
 		for (Percept pct : allPercepts) {
 			boolean contain = ranges.get(pct).contains(pct.getValue()) == 0 ;
-			////System.out.println(pct.getName() + " " + contain);
+			//////System.out.println(pct.getName() + " " + contain);
 			if (!contain) {
 				ranges.get(pct).adapt(pct.getValue());
 				//ranges.get(pct).extend(pct.getValue(), pct);
@@ -1920,7 +1931,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 		Percept perceptWithLesserImpact = getPerceptWithLesserImpactOnVolumeNotIncludedIn2(containingRanges,bestContext);
 		//Percept perceptWithLesserImpact = getPerceptWithLesserImpactOnVolumeNotIncludedIn2(containingRanges,bestContext);
 		if (perceptWithLesserImpact == null) {
-			//System.out.println(world.getScheduler().getTick() + "shrinkRangesToJoinBordersAndDie");
+			////System.out.println(world.getScheduler().getTick() + "shrinkRangesToJoinBordersAndDie");
 			this.die();
 		}else {
 			//ranges.get(perceptWithLesserImpact).matchBorderWithBestContext(bestContext);
@@ -1951,7 +1962,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 			ctxt.removeContext(this);
 		}
 		
-		//////System.out.println("DIED : " + this.getName());
+		////////System.out.println("DIED : " + this.getName());
 		localModel.die();
 		super.die();
 		
@@ -1988,7 +1999,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 	public Boolean computeValidityByPercepts() {
 		Boolean test = true;
 		for(Percept percept : perceptValidities.keySet()) {
-			//////System.out.println(percept.getName()+"--->"+perceptValidities.get(percept));
+			////////System.out.println(percept.getName()+"--->"+perceptValidities.get(percept));
 			test = test && perceptValidities.get(percept);
 		}
 		return test;
@@ -2000,7 +2011,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 	public Boolean computeNeighborhoodValidityByPercepts() {
 		Boolean test = true;
 		for(Percept percept : perceptNeighborhoodValidities.keySet()) {
-			//////System.out.println(percept.getName()+"--->"+perceptNeighborhoodValidities.get(percept));
+			////////System.out.println(percept.getName()+"--->"+perceptNeighborhoodValidities.get(percept));
 			test = test && perceptNeighborhoodValidities.get(percept);
 		}
 		return test;
@@ -2008,6 +2019,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 	
 	
 	public void addNonValidPercept(Percept pct) {
+		world.trace(new ArrayList<String>(Arrays.asList(this.getName(),pct.getName(), "NON VALID")));
 		nonValidPercepts.add(pct);
 	}
 	
@@ -2058,7 +2070,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 				HashMap<Percept,HashMap<String,Double>> overlapRanges = new HashMap<Percept,HashMap<String,Double>>();
 				for(Percept percept : ranges.keySet()) {
 					overlapRanges.put(percept, new HashMap<String,Double>());
-					////System.out.println("CONTEXT 1" + context.getName() + " CONTEXT2" + this.getName());
+					//////System.out.println("CONTEXT 1" + context.getName() + " CONTEXT2" + this.getName());
 					double startRange = percept.getOverlapRangesBetweenContexts(this, context).get("start");
 					double endRange = percept.getOverlapRangesBetweenContexts(this, context).get("end");
 					overlapRanges.get(percept).put("start", startRange);
@@ -2175,7 +2187,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 	
 	public void computeNearestNeighbour() {
 		
-		//////System.out.println("VOISINS : " + neighbours.size());
+		////////System.out.println("VOISINS : " + neighbours.size());
 		for(Context neighbourContext : neighbours) {
 			
 			
@@ -2212,7 +2224,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 			double perceptPosition = 0d; 
 			double perceptWidth = 0d;
 			
-			//////System.out.println(context.getName() + "\n" +contextOverlapsByPerceptSave);
+			////////System.out.println(context.getName() + "\n" +contextOverlapsByPerceptSave);
 			if(contextOverlapsByPerceptSave.get(context).get(percept)) {
 	
 				
@@ -2236,7 +2248,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 					perceptWidth = ctxtEnd - thisStart;
 				}
 				else {
-					////System.out.println("PROBLEM !!!!!!!!!!!!!!!!! Void detection" );
+					//////System.out.println("PROBLEM !!!!!!!!!!!!!!!!! Void detection" );
 				}
 				
 
@@ -2261,7 +2273,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin
 					voidWidth.put(percept, perceptWidth);
 				}
 				else {
-					////System.out.println("NO VOID !");
+					//////System.out.println("NO VOID !");
 					noVoid = true;
 				}
 			}
diff --git a/AMOEBA3/src/mas/agents/context/Range.java b/AMOEBA3/src/mas/agents/context/Range.java
index 149cdf6da8caeddbf1a5c12366efdfab26235e1b..3aa8c068add401f5d1b6e3f2a96550476c1c8191 100644
--- a/AMOEBA3/src/mas/agents/context/Range.java
+++ b/AMOEBA3/src/mas/agents/context/Range.java
@@ -112,8 +112,8 @@ public class Range implements Serializable, Comparable, Cloneable {
 //		this.AVT_deltaEnd = (end - start) * AVT_minRatio + 0.0001;
 		this.AVT_deltaStart = getLenght() * 0.2 + 0.0001;
 		this.AVT_deltaEnd = getLenght() * 0.2 + 0.0001;
-		//System.out.println(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" + "Creation" + "\t" + "START" + "\t" + AVT_deltaStart);
-		//System.out.println(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" + "Creation" + "\t" + "END" + "\t" + AVT_deltaEnd);
+		////System.out.println(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" + "Creation" + "\t" + "START" + "\t" + AVT_deltaStart);
+		////System.out.println(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" + "Creation" + "\t" + "END" + "\t" + AVT_deltaEnd);
 		
 
 	}
@@ -449,10 +449,10 @@ public class Range implements Serializable, Comparable, Cloneable {
 		
 		//System.out.print(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" );
 		if (AVT_lastFeedbackStart == 1) {
-			//System.out.println("simulateNegativeAVTFeedbackStart :" + Math.abs(AVT_deltaStart * AVT_deceleration) + "\t" + "AVT_deltaStart : " + "\t" +  AVT_deltaStart);
+			////System.out.println("simulateNegativeAVTFeedbackStart :" + Math.abs(AVT_deltaStart * AVT_deceleration) + "\t" + "AVT_deltaStart : " + "\t" +  AVT_deltaStart);
 			return start + (AVT_deltaStart * AVT_deceleration);
 		} else {
-			//System.out.println("simulateNegativeAVTFeedbackStart :" + Math.abs(AVT_deltaStart * AVT_acceleration) + "\t" + "AVT_deltaStart : " + "\t" +  AVT_deltaStart);
+			////System.out.println("simulateNegativeAVTFeedbackStart :" + Math.abs(AVT_deltaStart * AVT_acceleration) + "\t" + "AVT_deltaStart : " + "\t" +  AVT_deltaStart);
 			return start + (AVT_deltaStart * AVT_acceleration);
 		}
 
@@ -468,10 +468,10 @@ public class Range implements Serializable, Comparable, Cloneable {
 		
 		//System.out.print(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" );
 		if (AVT_lastFeedbackEnd == 1) {
-			//System.out.println("simulateNegativeAVTFeedbackEnd :" + Math.abs(AVT_deltaEnd * AVT_deceleration) + "\t" + "AVT_deltaEnd : " + "\t" +  AVT_deltaEnd);
+			////System.out.println("simulateNegativeAVTFeedbackEnd :" + Math.abs(AVT_deltaEnd * AVT_deceleration) + "\t" + "AVT_deltaEnd : " + "\t" +  AVT_deltaEnd);
 			return end - (AVT_deltaEnd * AVT_deceleration);
 		} else {
-			//System.out.println("simulateNegativeAVTFeedbackEnd :" + Math.abs(AVT_deltaEnd * AVT_acceleration) + "\t" + "AVT_deltaEnd : " + "\t" +  AVT_deltaEnd);
+			////System.out.println("simulateNegativeAVTFeedbackEnd :" + Math.abs(AVT_deltaEnd * AVT_acceleration) + "\t" + "AVT_deltaEnd : " + "\t" +  AVT_deltaEnd);
 			return end - (AVT_deltaEnd * AVT_acceleration);
 		}
 
@@ -487,7 +487,7 @@ public class Range implements Serializable, Comparable, Cloneable {
 	 */
 	public boolean isTooSmall() {
 		if((end - start) < mininimalRange && (end - start)>0) {
-			//System.out.println("����������������������������� mininimalRange :" + mininimalRange + " ~~~ " + (end - start));
+			////System.out.println("����������������������������� mininimalRange :" + mininimalRange + " ~~~ " + (end - start));
 		}
 		
 		return (end - start) < mininimalRange && !this.isPerceptEnum();
@@ -582,13 +582,13 @@ public class Range implements Serializable, Comparable, Cloneable {
 	}
 	
 	public void matchBorderWithBestContext(Context bestContext) {
-		//System.out.println("Match border " + percept.getName());
+		////System.out.println("Match border " + percept.getName());
 		
 		Range bestContextRanges = bestContext.getRanges().get(percept);
 		
 		if (bestContextRanges.getStart() <= this.start &&  this.end <= bestContextRanges.getEnd() ) {
 			
-			//System.out.println(context.getName() + " DIES");
+			////System.out.println(context.getName() + " DIES");
 			this.context.die();
 			
 		} else {
@@ -605,13 +605,13 @@ public class Range implements Serializable, Comparable, Cloneable {
 	
 	public void adaptTowardsBorder(Context bestContext) {
 		
-		//System.out.println("Adapt towards border " + percept.getName());
+		////System.out.println("Adapt towards border " + percept.getName());
 		
 		Range bestContextRanges = bestContext.getRanges().get(percept);
 		
 		if (bestContextRanges.getStart() <= this.start &&  this.end <= bestContextRanges.getEnd() ) {
 			
-			//System.out.println(context.getName() + " DIES");
+			////System.out.println(context.getName() + " DIES");
 			this.context.die();
 			
 		} else {
@@ -880,7 +880,7 @@ public class Range implements Serializable, Comparable, Cloneable {
 	
 	public void setStart(double newStartValue) {
 		if(context !=null && percept !=null) {
-			//System.out.println(context.getName() + " " + percept.getName() + " START " + (Math.abs(newStartValue-this.start)));
+			////System.out.println(context.getName() + " " + percept.getName() + " START " + (Math.abs(newStartValue-this.start)));
 		}
 		this.start = newStartValue;
 		if(world != null) {
@@ -927,7 +927,7 @@ public class Range implements Serializable, Comparable, Cloneable {
 	
 	public void setEnd(double newEndValue) {
 		if(context !=null && percept !=null ) {
-			//System.out.println(context.getName() + " " + percept.getName() + " END " + (Math.abs(newEndValue-this.end)));
+			////System.out.println(context.getName() + " " + percept.getName() + " END " + (Math.abs(newEndValue-this.end)));
 		}
 		
 		this.end = newEndValue;
@@ -967,12 +967,12 @@ public class Range implements Serializable, Comparable, Cloneable {
 				}
 			}
 		
-		this.context.updateActivatedContexts();
+			this.context.updateActivatedContexts();
 		}
 	}
 	
 	public boolean contains(Double value, Double neighborhood) {
-		System.out.println(context.getName() +" "+ percept.getName() + " " + value + " " + (start - neighborhood) + " " + start + " " + end + " " + (end + neighborhood));
+		//System.out.println(context.getName() +" "+ percept.getName() + " " + value + " " + (start - neighborhood) + " " + start + " " + end + " " + (end + neighborhood));
 		return Math.abs(value - getCenter()) < (getRadius() + neighborhood );
 	}
 	
diff --git a/AMOEBA3/src/mas/agents/head/Head.java b/AMOEBA3/src/mas/agents/head/Head.java
index 2d39d63c6e7dac040d6ff7080d04a069d391302c..205aca9489fd58482c8b047b2e8548d9d21cde04 100644
--- a/AMOEBA3/src/mas/agents/head/Head.java
+++ b/AMOEBA3/src/mas/agents/head/Head.java
@@ -201,12 +201,12 @@ public class Head extends AbstractHead implements Cloneable{
 	
 	public void addPartiallyActivatedContext(Percept nonValidPercept,Context validContextExecptOnTheNonValidPercept) {
 		partiallyActivatedContexts.get(nonValidPercept).add(validContextExecptOnTheNonValidPercept);
-		//////System.out.println(pct.getName() + " " + partialyActivatedContexts.get(pct).size());
+		////////System.out.println(pct.getName() + " " + partialyActivatedContexts.get(pct).size());
 	} 
 	
 	public void addPartialRequestNeighborContext(Percept nonValidPercept,Context validContextNeighborExecptOnTheNonValidPercept) {
 		partialNeighborContexts.get(nonValidPercept).add(validContextNeighborExecptOnTheNonValidPercept);
-		//////System.out.println(pct.getName() + " " + partialyActivatedContexts.get(pct).size());
+		////////System.out.println(pct.getName() + " " + partialyActivatedContexts.get(pct).size());
 	} 
 
 	/**
@@ -223,7 +223,7 @@ public class Head extends AbstractHead implements Cloneable{
 			currentSituation.put(pct, pct.getValue());
 		}
 		
-		////System.out.println("HEAD ACTIVATED CONTEXT :" + activatedContexts.size());
+		//////System.out.println("HEAD ACTIVATED CONTEXT :" + activatedContexts.size());
 		nPropositionsReceived = activatedContexts.size();
 		newContextWasCreated = false;
 		setContextFromPropositionWasSelected(false);		
@@ -258,15 +258,18 @@ public class Head extends AbstractHead implements Cloneable{
 		
 		newContext = null;
 		
-		//////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Error allowded :" + errorAllowed);
-		//////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Inexact allowded :" + inexactAllowed);
+		////////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Error allowded :" + errorAllowed);
+		////////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Inexact allowded :" + inexactAllowed);
 	}
 	
 	
 	
 	private void playWithOracle() {
 		
-		//System.out.println("Activated neighbors " + activatedNeighborsContexts.size());
+		System.out.println(world.getScheduler().getTick() + " ACTIVATED CONTEXTS");
+		for(Context ctxt : activatedContexts) {
+			System.out.println("--> " + ctxt.getName());
+		}
 			
 		if (activatedContexts.size() > 0) {
 			selectBestContext(); //using highest confidence 
@@ -320,7 +323,7 @@ public class Head extends AbstractHead implements Cloneable{
 			noBestContext = false;
 			prediction = bestContext.getActionProposal();
 		} else {
-			////System.out.println("NO BEST ...");
+			//////System.out.println("NO BEST ...");
 			noBestContext = true;
 			ArrayList<Agent> allContexts = world.getScheduler().getContexts();
 			Context nearestContext = this.getNearestContext(allContexts);
@@ -396,17 +399,17 @@ public class Head extends AbstractHead implements Cloneable{
 		
 		Double endogenousSumTerm = 0.0;
 		Double endogenousNormalizationTerm = 0.0;
-		////System.out.println("NEIGHBORS : " + activatedNeighborsContexts.size());
+		//////System.out.println("NEIGHBORS : " + activatedNeighborsContexts.size());
 		for(Context ctxt :activatedNeighborsContexts) {
 			endogenousSumTerm += ctxt.getInfluenceWithConfidence(currentSituation)*ctxt.getActionProposal();
 			endogenousNormalizationTerm += ctxt.getInfluenceWithConfidence(currentSituation);
 		}
 		endogenousPredictionNContexts = endogenousSumTerm/endogenousNormalizationTerm;
-		////System.out.println("ENDO PRED N CTXT : " + endogenousPredictionNContexts);
+		//////System.out.println("ENDO PRED N CTXT : " + endogenousPredictionNContexts);
 		
 		// Endogenous prediction N contexts by influence //
 		
-		////System.out.println("�~~�~~�~~�~~�~~�~~�~~�~~�~~�~~�~~~ INFLUENCES" + currentSituation);
+		//////System.out.println("�~~�~~�~~�~~�~~�~~�~~�~~�~~�~~�~~~ INFLUENCES" + currentSituation);
 		
 		maxConfidence = Double.NEGATIVE_INFINITY;
 		minConfidence = Double.POSITIVE_INFINITY;
@@ -422,10 +425,10 @@ public class Head extends AbstractHead implements Cloneable{
 			
 			if(ctxt.getInfluenceWithConfidence(currentSituation)> 0.5) {
 				contextsNeighborsByInfluence.add(ctxt);
-				////System.out.println(ctxt);
+				//////System.out.println(ctxt);
 			}
 		}
-		////System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" + minConfidence + " ; " + maxConfidence + ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
+		//////System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" + minConfidence + " ; " + maxConfidence + ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
 		
 		endogenousSumTerm = 0.0;
 		endogenousNormalizationTerm = 0.0;
@@ -491,7 +494,7 @@ public class Head extends AbstractHead implements Cloneable{
 		//Test if there are surrounding contexts
 		boolean testSurroudingContext = false;
 		
-		//////System.out.println("SURROUNDING CONTEXTS ...");
+		////////System.out.println("SURROUNDING CONTEXTS ...");
 		for(Percept pct : this.world.getScheduler().getPercepts()) {
 			
 			computeNearestContextsByPercept(pct);			
@@ -514,7 +517,7 @@ public class Head extends AbstractHead implements Cloneable{
 			
 		}
 		
-		//////System.out.println("TEST SURROUNDING CONTEXTS ..." + testSurroudingContext);
+		////////System.out.println("TEST SURROUNDING CONTEXTS ..." + testSurroudingContext);
 		return testSurroudingContext;
 	}
 	
@@ -527,7 +530,7 @@ public class Head extends AbstractHead implements Cloneable{
 		for(Context ctxt : list) {
 			//system.out.print(ctxt.getRanges().get(prct).getRange(range) + "  ");
 		}
-		////System.out.println(" ");
+		//////System.out.println(" ");
 		
 	}
 	
@@ -545,8 +548,8 @@ public class Head extends AbstractHead implements Cloneable{
 		if(activatedContextInOtherPercepts.size()>0) {
 			
 				
-			//////System.out.println("Partially activated on other percepts than " + pct.getName() + " : " + activatedContextInOtherPercepts.size());			
-			//////System.out.println("Value " + pct.getValue());		 
+			////////System.out.println("Partially activated on other percepts than " + pct.getName() + " : " + activatedContextInOtherPercepts.size());			
+			////////System.out.println("Value " + pct.getValue());		 
 			
 			CustomComparator rangeStartComparator =  new CustomComparator(pct, "start");
 			Collections.sort(activatedContextInOtherPercepts, rangeStartComparator);
@@ -584,7 +587,7 @@ public class Head extends AbstractHead implements Cloneable{
 			}
 		}
 		else {
-			//////System.out.println("=====================================================");
+			////////System.out.println("=====================================================");
 		}
 		
 			
@@ -608,23 +611,23 @@ public class Head extends AbstractHead implements Cloneable{
 	
 	
 	public void displayPartiallyActivatedContexts() {
-		////System.out.println("PARTIALLY ACTIVATED CONTEXTS");
+		//////System.out.println("PARTIALLY ACTIVATED CONTEXTS");
 		for(Percept pct : partiallyActivatedContexts.keySet()) {
 			//system.out.print(pct.getName() + " : ");
 			if(partiallyActivatedContexts.get(pct).size()>0)
 			for(Context ctxt : partiallyActivatedContexts.get(pct)) {
 				//system.out.print(ctxt.getName() + " ; ");
 			}
-			////System.out.println(" ");
+			//////System.out.println(" ");
 		}
 	}
 	
 	public void displayContexts() {
-		////System.out.println("CONTEXTS");
+		//////System.out.println("CONTEXTS");
 		for(Context ctxt : this.world.getScheduler().getContextsAsContext()) {
 			//system.out.print(ctxt.getName() + " ; ");
 		}
-		////System.out.println(" ");
+		//////System.out.println(" ");
 	}
 	
 	private Percept getDifferentPercept(Percept p) {
@@ -647,7 +650,7 @@ public class Head extends AbstractHead implements Cloneable{
 	}
 	
 	private void NCS_EndogenousCompetition() {
-		////System.out.println("NCS Comptetition " + world.getScheduler().getTick());
+		//////System.out.println("NCS Comptetition " + world.getScheduler().getTick());
 		// Creation of twin contexts to give the endogenous prediction
 
 		
@@ -767,7 +770,7 @@ public class Head extends AbstractHead implements Cloneable{
 		double contextInfluenceL = closestContexts.getL().getInfluenceWithConfidence(currentSituation);
 		double contextInfluenceR = closestContexts.getR().getInfluenceWithConfidence(currentSituation);
 		
-		////System.out.println("--------------------------------------------------DIFFERENCE :" + compareClosestContextPairModels(closestContexts));
+		//////System.out.println("--------------------------------------------------DIFFERENCE :" + compareClosestContextPairModels(closestContexts));
 		
 		if(compareClosestContextPairModels(closestContexts)<10) {
 			endogenousPredictionActivatedContextsSharedIncompetence = (contextInfluenceL*closestContexts.getL().getActionProposal() + contextInfluenceR*closestContexts.getR().getActionProposal()) / (contextInfluenceL + contextInfluenceR);
@@ -822,9 +825,9 @@ public class Head extends AbstractHead implements Cloneable{
 	private void NCSDetection_Create_New_Context() {
 		/*Finally, head agent check the need for a new context agent*/
 		
-		System.out.println("activatedNeighborsContexts");
+		//System.out.println("activatedNeighborsContexts");
 		for(Context ctxt : activatedNeighborsContexts) {
-			System.out.println(ctxt.getName());
+			//System.out.println(ctxt.getName());
 		}
 		
 		boolean newContextCreated = false;
@@ -834,17 +837,17 @@ public class Head extends AbstractHead implements Cloneable{
 			
 		}
 		
-		System.out.println(">>>>>>> " + world.getScheduler().getTick() + " " + activatedContexts.size());
+		//System.out.println(">>>>>>> " + world.getScheduler().getTick() + " " + activatedContexts.size());
 		if(activatedContexts.size() == 0) {
-			System.out.println(world.getScheduler().getTick() + " Create_New_Context");
+			//System.out.println(world.getScheduler().getTick() + " Create_New_Context");
 			
 			Context context;
-//			if(nearestGoodContext.getA() != null) {
-//				context = createNewContext(nearestGoodContext.getA());
-//			}else {
-//				context = createNewContext();
-//			}
-			context = createNewContext();
+			if(nearestGoodContext.getA() != null) {
+				context = createNewContext(nearestGoodContext.getA());
+			}else {
+				context = createNewContext();
+			}
+			//context = createNewContext();
 			
 
 			bestContext = context;
@@ -863,7 +866,7 @@ public class Head extends AbstractHead implements Cloneable{
 		if (bestContext != null && criticity <= this.errorAllowed) {
 			for (int i = 0 ; i < activatedContexts.size() ; i++) {
 				if (activatedContexts.get(i) != bestContext && !activatedContexts.get(i).isDying() && this.getCriticity(activatedContexts.get(i)) <= this.errorAllowed) {
-			//		////System.out.println("Shrink context " + contexts.get(i).getName());
+			//		//////System.out.println("Shrink context " + contexts.get(i).getName());
 					activatedContexts.get(i).solveNCS_Concurrence(this);
 				}
 			}
@@ -877,10 +880,10 @@ public class Head extends AbstractHead implements Cloneable{
 			
 			Context c = getNearestGoodContext(allContexts);
 			if(c!=null) {
-				////System.out.println("Nearest good context : " + c.getName());
+				//////System.out.println("Nearest good context : " + c.getName());
 			}
 			else {
-				////System.out.println("Nearest good context : null");
+				//////System.out.println("Nearest good context : null");
 			}
 			if (c!=null) c.solveNCS_IncompetentHead(this);;
 			bestContext = c;
@@ -898,10 +901,10 @@ public class Head extends AbstractHead implements Cloneable{
 	}
 	
 	private void selfAnalysationOfContexts() {
-		////System.out.println(world.getScheduler().getTick());
+		//////System.out.println(world.getScheduler().getTick());
 		/*All context which proposed itself must analyze its proposition*/
 		for (int i = 0 ; i < activatedContexts.size() ; i++) {
-			////System.out.println(activatedContexts.get(i).getName());
+			//////System.out.println(activatedContexts.get(i).getName());
 			activatedContexts.get(i).analyzeResults(this);
 		}
 	}
@@ -1070,7 +1073,7 @@ public class Head extends AbstractHead implements Cloneable{
 	 * @return the context
 	 */
 	private Context createNewContext() {
-	//	////System.out.println("Creation d'un nouveau contexte : " + contexts.size());
+	//	//////System.out.println("Creation d'un nouveau contexte : " + contexts.size());
 		newContextWasCreated = true;
 //		if (contexts.size() != 0) {
 //			System.exit(0);
@@ -1090,7 +1093,7 @@ public class Head extends AbstractHead implements Cloneable{
 	}
 	
 	private Context createNewContext(Context bestNearestCtxt) {
-		//	////System.out.println("Creation d'un nouveau contexte : " + contexts.size());
+		//	//////System.out.println("Creation d'un nouveau contexte : " + contexts.size());
 			newContextWasCreated = true;
 //			if (contexts.size() != 0) {
 //				System.exit(0);
@@ -1098,7 +1101,7 @@ public class Head extends AbstractHead implements Cloneable{
 			world.raiseNCS(NCS.CREATE_NEW_CONTEXT);
 			Context context;
 			if (firstContext) {
-				//System.out.println(bestNearestCtxt.toStringFull());
+				////System.out.println(bestNearestCtxt.toStringFull());
 				context = new Context(world, this, bestNearestCtxt);
 				Config.print("new context agent", 3);
 			}
@@ -1203,7 +1206,7 @@ public class Head extends AbstractHead implements Cloneable{
 		
 		
 		
-		//////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Average Prediction Criticity :" + averagePredictionCriticity);
+		////////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Average Prediction Criticity :" + averagePredictionCriticity);
 		
 		if (averagePredictionCriticity > errorAllowed) {
 			perfIndicator--;
@@ -1220,27 +1223,27 @@ public class Head extends AbstractHead implements Cloneable{
 		if (perfIndicator <= nConflictBeforeAugmentation * (-1)) {
 			perfIndicator = 0;
 			errorAllowed *= augmentationFactorError;
-			//////System.out.println("����������������������  augmentationFactorError :" + augmentationFactorError);
+			////////System.out.println("����������������������  augmentationFactorError :" + augmentationFactorError);
 		}
 		
 		if (perfIndicator >= nSuccessBeforeDiminution) {
 			perfIndicator = 0;
 			errorAllowed *= diminutionFactorError;
-			//////System.out.println("����������������������  diminutionFactorError :" + diminutionFactorError);
+			////////System.out.println("����������������������  diminutionFactorError :" + diminutionFactorError);
 			errorAllowed = Math.max(minErrorAllowed, errorAllowed);
 		}
 		
 		if (perfIndicatorInexact <= nConflictBeforeInexactAugmentation * (-1)) {
 			perfIndicatorInexact = 0;
 			inexactAllowed *= augmentationInexactError;
-			//////System.out.println("����������������������  augmentationInexactError :" + augmentationInexactError);
+			////////System.out.println("����������������������  augmentationInexactError :" + augmentationInexactError);
 		}
 		
 		if (perfIndicatorInexact >= nSuccessBeforeInexactDiminution) {
 			perfIndicatorInexact = 0;
 			inexactAllowed *= diminutionInexactError;
 			inexactAllowed = Math.max(minInexactAllowed, inexactAllowed);
-			//////System.out.println("����������������������  diminutionInexactError :" + diminutionInexactError);
+			////////System.out.println("����������������������  diminutionInexactError :" + diminutionInexactError);
 
 		}
 		
@@ -1881,7 +1884,7 @@ public class Head extends AbstractHead implements Cloneable{
 		
 
 		for(Percept pct : requestSurroundings.keySet()) {
-			//////System.out.println("REQUEST SURROUNDINGS " +  requestSurroundings.get(pct).getL().getName() +  " ; " + requestSurroundings.get(pct).getR().getName());
+			////////System.out.println("REQUEST SURROUNDINGS " +  requestSurroundings.get(pct).getL().getName() +  " ; " + requestSurroundings.get(pct).getR().getName());
 			if(requestSurroundings.get(pct).contains(ctxt)) {
 				return true;
 			}
@@ -1914,7 +1917,7 @@ public class Head extends AbstractHead implements Cloneable{
 	
 	public void addRequestNeighbor(Context ctxt) {
 		if(!activatedNeighborsContexts.contains(ctxt)) {
-			System.out.println(world.getScheduler().getTick() + " " + ctxt.getName() + " " + "VALID NEIGHBOR");
+			//System.out.println(world.getScheduler().getTick() + " " + ctxt.getName() + " " + "VALID NEIGHBOR");
 			activatedNeighborsContexts.add(ctxt);
 		}	
 	}
@@ -1922,6 +1925,11 @@ public class Head extends AbstractHead implements Cloneable{
 	public void addActivatedContext(Context ctxt) {
 		if(!activatedContexts.contains(ctxt)) {
 			activatedContexts.add(ctxt);
+			
+			System.out.println(world.getScheduler().getTick() + " ACTIVATED CONTEXTS");
+			for(Context cxt : activatedContexts) {
+				System.out.println("--> " + cxt.getName());
+			}
 		}	
 	}
 	
@@ -1933,7 +1941,7 @@ public class Head extends AbstractHead implements Cloneable{
 	
 	public void removeRequestNeighbor(Context ctxt) {
 		if(activatedNeighborsContexts.contains(ctxt)) {
-			System.out.println(world.getScheduler().getTick() + " " + ctxt.getName() + " " + "NOT VALID NEIGHBOR ANYMORE");
+			//System.out.println(world.getScheduler().getTick() + " " + ctxt.getName() + " " + "NOT VALID NEIGHBOR ANYMORE");
 			activatedNeighborsContexts.remove(ctxt);
 		}	
 	}
@@ -1948,7 +1956,7 @@ public class Head extends AbstractHead implements Cloneable{
 	
 	public void displayActivatedNeighborsContexts() {
 		for(Context ctxt : activatedNeighborsContexts) {
-			////System.out.println(ctxt.getName());
+			//////System.out.println(ctxt.getName());
 		}
 	}
 	
@@ -1980,7 +1988,7 @@ public class Head extends AbstractHead implements Cloneable{
 		for(Context ctxt:activatedNeighborsContexts) {			
 			
 			currentRadius = ctxt.getRanges().get(pct).distance(pct.getValue());
-			System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
+			//System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
 			if(currentRadius<maxRadius && currentRadius>0 ) {
 				maxRadius = currentRadius;
 			}
@@ -1992,10 +2000,10 @@ public class Head extends AbstractHead implements Cloneable{
 	}
 	
 	public AbstractPair<Double,Double> getMaxRadiusesForContextCreation(Percept pct) {
-		//AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(pct.getRadiusContextForCreation(),pct.getRadiusContextForCreation());
-		AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(Math.abs(pct.getMin()- pct.getValue()),Math.abs(pct.getMax()-pct.getValue()));
+		AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(pct.getRadiusContextForCreation(),pct.getRadiusContextForCreation());
+		//AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(Math.abs(pct.getMin()- pct.getValue()),Math.abs(pct.getMax()-pct.getValue()));
 
-		System.out.println("MIN MAX "  + pct.getName() +" " + pct.getValue() + " < " + pct.getMin() + " , "  + pct.getMax() + " > / < " + Math.abs(pct.getMin()- pct.getValue()) + " , " + Math.abs(pct.getMax()-pct.getValue()) + " >");
+		//System.out.println("MIN MAX "  + pct.getName() +" " + pct.getValue() + " < " + pct.getMin() + " , "  + pct.getMax() + " > / < " + Math.abs(pct.getMin()- pct.getValue()) + " , " + Math.abs(pct.getMax()-pct.getValue()) + " >");
 		
 		double currentStartRadius;
 		double currentEndRadius;
@@ -2007,7 +2015,7 @@ public class Head extends AbstractHead implements Cloneable{
 			if(ctxt.getRanges().get(pct).centerDistance(pct.getValue()) < 0) {
 				// End radius
 				currentEndRadius = ctxt.getRanges().get(pct).distance(pct.getValue());
-				//System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
+				////System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
 				if(currentEndRadius < maxRadiuses.getB() && currentEndRadius > 0 ) {
 					maxRadiuses.setB(currentEndRadius); 
 				}
@@ -2016,7 +2024,7 @@ public class Head extends AbstractHead implements Cloneable{
 			if(ctxt.getRanges().get(pct).centerDistance(pct.getValue()) > 0) {
 				// Start radius
 				currentStartRadius = ctxt.getRanges().get(pct).distance(pct.getValue());
-				//System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
+				////System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius);
 				if(currentStartRadius < maxRadiuses.getA() && currentStartRadius > 0 ) {
 					maxRadiuses.setA(currentStartRadius); 
 				}
diff --git a/AMOEBA3/src/mas/agents/percept/ContextProjection.java b/AMOEBA3/src/mas/agents/percept/ContextProjection.java
index a4e3f871003d0010d087655e62c82e888e4c0b38..8025cbd9be13086f6f23281dbf17ed353b50a21b 100644
--- a/AMOEBA3/src/mas/agents/percept/ContextProjection.java
+++ b/AMOEBA3/src/mas/agents/percept/ContextProjection.java
@@ -1,6 +1,8 @@
 package mas.agents.percept;
 
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
 
 import mas.agents.context.Context;
 import mas.kernel.World;
@@ -8,6 +10,8 @@ import mas.kernel.World;
 public class ContextProjection implements Serializable{
 	
 	
+	World world;
+	
 	private Percept percept;
 	private Context context;
 	
@@ -24,7 +28,8 @@ public class ContextProjection implements Serializable{
 	}
 	
 	
-	public ContextProjection(Percept percept, Context context) {
+	public ContextProjection(World wrld, Percept percept, Context context) {
+		world = wrld;
 		this.percept = percept;
 		this.context = context;
 		this.start = context.getRanges().get(this.percept).getStart();
@@ -69,11 +74,12 @@ public class ContextProjection implements Serializable{
 	}
 	
 	public boolean contains(Double value) {
+		world.trace(new ArrayList<String>(Arrays.asList(context.getName(),percept.getName(), ""+value, ""+(getCenter()-getRadius()), ""+ (getCenter() + getRadius()))));
 		return Math.abs(value - getCenter()) < getRadius() ;
 	}
 	
 	public boolean contains(Double value, Double neighborhood) {
-		System.out.println(context.getName() +" "+ percept.getName() + " " + value + " " + (start - neighborhood) + " " + start + " " + end + " " + (end + neighborhood));
+		//System.out.println(context.getName() +" "+ percept.getName() + " " + value + " " + (start - neighborhood) + " " + start + " " + end + " " + (end + neighborhood));
 		return Math.abs(value - getCenter()) < (getRadius() + neighborhood );
 	}
 	
diff --git a/AMOEBA3/src/mas/agents/percept/Percept.java b/AMOEBA3/src/mas/agents/percept/Percept.java
index f63f6c4d053e65fefe0eded210e8729873d7733c..d6d07a5f822080c2b9adf8330a2a45c4cd1a22c8 100644
--- a/AMOEBA3/src/mas/agents/percept/Percept.java
+++ b/AMOEBA3/src/mas/agents/percept/Percept.java
@@ -171,7 +171,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 				
 		oldValue = value;
 		//value = sensor.getValue();
-		//////System.out.println(this.name);
+		////////System.out.println(this.name);
 		value = this.getWorld().getScheduler().getPerceptionsOrAction(this.name);
 		ajustMinMax(); 
 		computeContextProjectionValidity();
@@ -187,11 +187,11 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 	}	
 	
 	public void displayContextProjections() {
-		////System.out.println("CONTEXT PROJECTIONS " + this.getName());
+		//////System.out.println("CONTEXT PROJECTIONS " + this.getName());
 		for(Context ctxt : contextProjections.keySet()) {
 			//system.out.print(ctxt.getName() + " ; ");
 		}
-		////System.out.println(" ");
+		//////System.out.println(" ");
 	}
 	
 	public void computeContextProjectionValidity() {
@@ -201,7 +201,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 		
 		for(ContextProjection contextProjection : contextProjections.values()) {
 			
-			
+			System.out.println(contextProjection.contains(this.value));
 			if(!contextProjection.contains(this.value)) {
 
 				contextProjection.getContext().addNonValidPercept(this);	
@@ -210,10 +210,10 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 			
 			//if(!contextProjection.contains(this.value, getRadiusContextForCreation())) {
 			if(!contextProjection.contains(this.value, world.getNeighborhood(contextProjection.getContext(), this))) {
-				////System.out.println(contextProjection.getContext().getName() + " " + this.getName() + " non valid");
+				//////System.out.println(contextProjection.getContext().getName() + " " + this.getName() + " non valid");
 				contextProjection.getContext().addNonValidNeighborPercept(this);
 				
-				System.out.println(world.getScheduler().getTick() + " " + contextProjection.getContext().getName() + " " + this.getName() + " " + "NON VALID" + " " + getRadiusContextForCreation());
+				//System.out.println(world.getScheduler().getTick() + " " + contextProjection.getContext().getName() + " " + this.getName() + " " + "NON VALID" + " " + getRadiusContextForCreation());
 			}
 			
 			
@@ -224,7 +224,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 
 				validContextProjection.add(contextProjection.getContext());
 				contextProjection.getContext().setPerceptValidity(this);
-				//////System.out.println("Percept "+this.name+ " Context "+contextProjection.getContex().getName());
+				////////System.out.println("Percept "+this.name+ " Context "+contextProjection.getContex().getName());
 				
 								
 			}
@@ -465,30 +465,30 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 	 */
 	
 	public void displaySortedRanges() {
-		////System.out.println("########### SORTED RANGES DISPLAY " + this.getName() +" ###########");
-		////System.out.println("########### START ###########");
+		//////System.out.println("########### SORTED RANGES DISPLAY " + this.getName() +" ###########");
+		//////System.out.println("########### START ###########");
 		for(Context cntxt : this.sortedRanges.get("start")) {
-			////System.out.println(cntxt.getRanges().get(this).getStart());
+			//////System.out.println(cntxt.getRanges().get(this).getStart());
 		}
 		
-		////System.out.println("########### END ###########");
+		//////System.out.println("########### END ###########");
 		for(Context cntxt : this.sortedRanges.get("end")) {
-			////System.out.println(cntxt.getRanges().get(this).getEnd());
+			//////System.out.println(cntxt.getRanges().get(this).getEnd());
 		}
 	}
 	
 	public void displaySortedRangesTreeSet() {
-		////System.out.println("########### SORTED RANGES DISPLAY TREE " + this.getName() +" ###########");
-		////System.out.println(sortedContextbyStartRanges.size()+ " " + sortedContextbyEndRanges.size());
-		////System.out.println("########### START ###########");
+		//////System.out.println("########### SORTED RANGES DISPLAY TREE " + this.getName() +" ###########");
+		//////System.out.println(sortedContextbyStartRanges.size()+ " " + sortedContextbyEndRanges.size());
+		//////System.out.println("########### START ###########");
 		
 		for(Context ctxt: sortedContextbyStartRanges) {
-			////System.out.println(ctxt.getRanges().get(this).getStart());
+			//////System.out.println(ctxt.getRanges().get(this).getStart());
 		}
 		
-		////System.out.println("########### END ###########");
+		//////System.out.println("########### END ###########");
 		for(Context ctxt: sortedContextbyEndRanges) {
-			////System.out.println(ctxt.getRanges().get(this).getEnd());
+			//////System.out.println(ctxt.getRanges().get(this).getEnd());
 		}
 	}
 	
@@ -572,7 +572,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 	private void swapListElements(ArrayList<Context> list, int indexFirstElement) {
 		try {
 			list.add(indexFirstElement, list.get(indexFirstElement+1));
-			//////System.out.println(list);
+			////////System.out.println(list);
 			list.remove(indexFirstElement+2);
 		} catch (OutOfRangeException e) {
 			// TODO: handle exception
@@ -598,8 +598,8 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 		//displaySortedRanges();
 		//displaySortedRangesTreeSet();
 		
-		//////System.out.println("----------------------AUTO PRINT");
-		//////System.out.println(sortedEndRanges.size()+ " " + sortedStartRanges);
+		////////System.out.println("----------------------AUTO PRINT");
+		////////System.out.println(sortedEndRanges.size()+ " " + sortedStartRanges);
 	}
 	
 	private void insertContextInSortedRanges(Context context, String range) {
@@ -637,7 +637,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 	
 	
 	public void addContextProjection(Context context) {
-		ContextProjection newContextProjection = new ContextProjection(this, context);
+		ContextProjection newContextProjection = new ContextProjection(world, this, context);
 		contextProjections.put(context, newContextProjection);
 		
 
@@ -650,18 +650,18 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 	
 	public void deleteContextProjection(Context context) {
 		contextProjections.remove(context);
-		////System.out.println("DELETION ------------------------------------------------------------------------------------------------------" + world.getScheduler().getTick());
-		////System.out.println(context.getName());
+		//////System.out.println("DELETION ------------------------------------------------------------------------------------------------------" + world.getScheduler().getTick());
+		//////System.out.println(context.getName());
 		displayContextProjections();
-		////System.out.println("----------------------------------------------------------------------------------------------------------------");
+		//////System.out.println("----------------------------------------------------------------------------------------------------------------");
 	}
 	
 	
 	
 	public void updateContextProjectionStart(Context context) {
-		////System.out.println(context.getName());
-		////System.out.println(contextProjections.get(context));
-		////System.out.println(contextProjections.size() + " " + world.getScheduler().getContextsAsContext().size());
+		//////System.out.println(context.getName());
+		//////System.out.println(contextProjections.get(context));
+		//////System.out.println(contextProjections.size() + " " + world.getScheduler().getContextsAsContext().size());
 		if(!context.isDying()) {
 			contextProjections.get(context).updateStart();
 		}
@@ -720,7 +720,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 		double contextStart2 = getStartRangeProjection(context2);
 		double contextEnd1 = getEndRangeProjection(context1);
 		double contextEnd2 = getEndRangeProjection(context2);
-		//////System.out.println(context1.getName() + "  " + contextStart1 + "  " + contextEnd1 + "  " + context2.getName() + "  " + contextStart2 + "  " + contextEnd2);
+		////////System.out.println(context1.getName() + "  " + contextStart1 + "  " + contextEnd1 + "  " + context2.getName() + "  " + contextStart2 + "  " + contextEnd2);
 		return ( (contextStart1< contextStart2 && contextStart2 <contextEnd1) || ((contextStart1< contextEnd2 && contextEnd2 <contextEnd1)) ) || ( (contextStart2< contextStart1 && contextStart1 <contextEnd2) || ((contextStart2< contextEnd1 && contextEnd1 <contextEnd2)) ) ;
 		
 	}
@@ -767,7 +767,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 			overlapRanges.put("end", getEndRangeProjection(context2));
 		}
 		else {
-			//////System.out.println("PROBLEM !!!!!!!!!!!!!!!!! " + context1.getName() + "  " + getStartRangeProjection(context1) + "  " + getEndRangeProjection(context1) + "  " + context2.getName()  + "  " + getStartRangeProjection(context2) + "  " + getEndRangeProjection(context2));
+			////////System.out.println("PROBLEM !!!!!!!!!!!!!!!!! " + context1.getName() + "  " + getStartRangeProjection(context1) + "  " + getEndRangeProjection(context1) + "  " + context2.getName()  + "  " + getStartRangeProjection(context2) + "  " + getEndRangeProjection(context2));
 			overlapRanges.put("start", -1.0);
 			overlapRanges.put("end", 1.0);
 			//return null;
@@ -800,6 +800,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable {
 	}
 	
 	public double getRadiusContextForCreation() {
+		//return 200*world.getContextCreationPercentage();
 		return getMinMaxDistance()*world.getContextCreationPercentage();
 	}
 }
diff --git a/AMOEBA3/src/mas/kernel/AMOEBA.java b/AMOEBA3/src/mas/kernel/AMOEBA.java
index 6caf1c133438096f57acd7020452ee2375c320d7..153b07074fc2dba1285f71b9e36df7d08fb1be4e 100644
--- a/AMOEBA3/src/mas/kernel/AMOEBA.java
+++ b/AMOEBA3/src/mas/kernel/AMOEBA.java
@@ -45,6 +45,9 @@ public class AMOEBA extends Thread {
 	private boolean viewer = true;
 	private boolean csv = true;
 	
+	public int temporisation;
+	public boolean manual = false;
+	
 	//private HashMap<String,Output> perceptionsAndActionState = new HashMap<String,Output>();
 	
 
@@ -499,13 +502,13 @@ public class AMOEBA extends Thread {
 	public void PAUSE(String message) {
 		System.out.println(message);
 		
-		if(!isRunning()) {
+		if(!isRunning() && manual == false) {
 			while(!getPlayOneStep()) {
 				scheduler.scheduledItemsAndView();
 
 				try        
 				{
-				    Thread.sleep(100);
+				    Thread.sleep(200);
 				} 
 				catch(InterruptedException ex) 
 				{
@@ -515,6 +518,16 @@ public class AMOEBA extends Thread {
 			}
 			setPlayOneStep(false);
 		}
+		else {
+//			try        
+//			{
+//			    Thread.sleep(1000);
+//			} 
+//			catch(InterruptedException ex) 
+//			{
+//			    Thread.currentThread().interrupt();
+//			}
+		}
 		
 	}
 
diff --git a/AMOEBA3/src/mas/kernel/Scheduler.java b/AMOEBA3/src/mas/kernel/Scheduler.java
index d5b5327dcb90e41a118589a4750612ee1d28e988..5e4de55a486bae94de19b5917ab9643e4a7d3365 100644
--- a/AMOEBA3/src/mas/kernel/Scheduler.java
+++ b/AMOEBA3/src/mas/kernel/Scheduler.java
@@ -357,6 +357,7 @@ public class Scheduler implements Serializable{
 		
 		for(Context ctxt : getContextsAsContext()) {
 			ctxt.clearNonValidPerceptNeighbors();
+			ctxt.clearNonValidPercepts();
 		}
 
 
diff --git a/AMOEBA3/src/mas/kernel/World.java b/AMOEBA3/src/mas/kernel/World.java
index 8400c2b859b73ec617767b861d95ef09720f67b6..53971867b08e0c650c2552fa727f8c4b1aa4f417 100644
--- a/AMOEBA3/src/mas/kernel/World.java
+++ b/AMOEBA3/src/mas/kernel/World.java
@@ -77,12 +77,12 @@ public class World implements Serializable {
 	
 	
 	//BUREAU
-	private int xGraphSize = 1600;
-	private int yGraphSize = 800;
+//	private int xGraphSize = 1600;
+//	private int yGraphSize = 800;
 	
 	//REUNION
-//	private int xGraphSize = 1200;
-//	private int yGraphSize = 600;
+	private int xGraphSize = 1200;
+	private int yGraphSize = 600;
 	
 	public double increment_up = 0.05;
 	public double increment_down = 0.05;
@@ -99,6 +99,14 @@ public class World implements Serializable {
 		return contextCreationPercentage;
 	}
 	
+	public void trace(ArrayList<String> infos) {
+		String message = "" +this.getScheduler().getTick();
+		for(String info : infos) {
+			message += " " + info;
+		}
+		System.out.println(message);
+	}
+	
 	/**
 	 * Instantiates a new world.
 	 *
@@ -875,8 +883,8 @@ public class World implements Serializable {
 	}
 	
 	public double getNeighborhood(Context ctxt, Percept pct) {
-		return 2*ctxt.getRanges().get(pct).getRadius();
-		
+		//return 2*ctxt.getRanges().get(pct).getRadius();
+		return pct.getRadiusContextForCreation();
 	}
 	
 }
diff --git a/AMOEBA3/src/visualization/view/system/MainPanel.java b/AMOEBA3/src/visualization/view/system/MainPanel.java
index 49b2c9507983c2a69105f1e285f6108022a32ed3..ec57ab1faceb231d83146e0ddaab1de823f69768 100644
--- a/AMOEBA3/src/visualization/view/system/MainPanel.java
+++ b/AMOEBA3/src/visualization/view/system/MainPanel.java
@@ -14,9 +14,12 @@ import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
+import javax.swing.JSlider;
 import javax.swing.JToolBar;
 import javax.swing.UIManager;
 import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
 import javax.swing.filechooser.FileNameExtensionFilter;
 
 import mas.kernel.AMOEBA;
@@ -113,6 +116,14 @@ public class MainPanel extends JPanel{
 	/** The first get value check box. */
 	private boolean firstGetValueCheckBox = false;
 	
+	static final int SPEED_MIN = 0;
+	static final int SPEED_MAX = 2000;
+	static final int SPEED_INIT = 200;    //initial frames per second
+
+	private JSlider simulationSpeedSlider; 
+	
+	public int speed=200;
+	
 	/**
 	 * Instantiates a new main panel.
 	 *
@@ -274,6 +285,32 @@ public class MainPanel extends JPanel{
 		rememberStateCheckBox.setSelected(false);
 		toolBar.add(rememberStateCheckBox);
 		
+		
+		simulationSpeedSlider = new JSlider(JSlider.HORIZONTAL,
+		                                      SPEED_MIN, SPEED_MAX, SPEED_INIT);
+		
+		class SliderListener implements ChangeListener {
+		    public void stateChanged(ChangeEvent e) {
+		        JSlider source = (JSlider)e.getSource();
+		        if (!source.getValueIsAdjusting()) {
+		            speed = (int)source.getValue()+1;
+		            world.getAmoeba().temporisation = (int)source.getValue()+1;
+
+		        }    
+		    }
+		}
+		
+		simulationSpeedSlider.addChangeListener(new SliderListener());
+
+		
+		
+		//Turn on labels at major tick marks.
+		simulationSpeedSlider.setMajorTickSpacing(500);
+		simulationSpeedSlider.setMinorTickSpacing(100);
+		simulationSpeedSlider.setPaintTicks(true);
+		simulationSpeedSlider.setPaintLabels(true);
+		
+		toolBar.add(simulationSpeedSlider);
 	}
 
 	
diff --git a/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelNCSMemories.java b/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelNCSMemories.java
index f52d4a4a85553febd6bc99f45822e4a9b1c36892..b53285c732a7e3cb78e9bc91b9d5d65d86877721 100644
--- a/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelNCSMemories.java
+++ b/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelNCSMemories.java
@@ -407,13 +407,13 @@ public class GrapheTwoDimPanelNCSMemories extends JPanel implements ViewerListen
 		
 		for (Context ctxt : ncsMemory.getContexts()) {
 
-			drawContexts(ctxt, 150);
+			drawContexts(ctxt, 200);
 			
 		}
 		
 		for (Context ctxt : ncsMemory.getPartiallyActivatedContexts()) {
 
-			drawContexts(ctxt, 150);
+			drawContexts(ctxt, 50);
 			
 		}
 	
diff --git a/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelStandard.java b/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelStandard.java
index c4e51abc55cc8d2364e2f059a9c8812872d67380..f5f935496069f9515a2e895e44e081ab6686041d 100644
--- a/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelStandard.java
+++ b/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelStandard.java
@@ -1170,7 +1170,28 @@ private void startPanelController() {
 
 				node.addAttribute("EXIST", true);
 				node.setAttribute("xyz", ((Percept)(world.getAgents().get(comboDimX.getSelectedItem()))).getValue(), ((Percept)(world.getAgents().get(comboDimY.getSelectedItem()))).getValue(), 0);
+				node.addAttribute("ui.style", "size: " + doubleFormat.format(1) + "gu, " + doubleFormat.format(10) +"gu;");
+				node.addAttribute("ui.class","RGBAColor");
+				
+				node.addAttribute("ui.style", "fill-color: rgba(0,255,0,255);");
 				
+				Node node2;
+				if (graph.getNode(name+"2") != null) {
+					node2 = graph.getNode(name+"2");
+					node2.addAttribute("ui.label", ((Percept)(world.getAgents().get(comboDimX.getSelectedItem()))).getValue() + " , " + ((Percept)(world.getAgents().get(comboDimY.getSelectedItem()))).getValue());
+
+				} else {
+					graph.addNode(name+"2");
+					node2 = graph.getNode(name+"2");
+					node2.addAttribute("ui.class", "Center");
+				}
+				
+				node2.addAttribute("EXIST", true);
+				node2.setAttribute("xyz", ((Percept)(world.getAgents().get(comboDimX.getSelectedItem()))).getValue(), ((Percept)(world.getAgents().get(comboDimY.getSelectedItem()))).getValue(), 0);
+				node2.addAttribute("ui.style", "size: " + doubleFormat.format(10) + "gu, " + doubleFormat.format(1) +"gu;");
+				node2.addAttribute("ui.class","RGBAColor");
+				
+				node2.addAttribute("ui.style", "fill-color: rgba(0,255,0,255);");
 			}
 			
 		}
@@ -1343,9 +1364,9 @@ private void startPanelController() {
 					node.addAttribute("ui.style", "fill-color: rgba(255,0,255,200);");
 				}
 //				
-				if(world.getScheduler().getHeadAgent().getActivatedContexts().contains(n)) {
-					node.addAttribute("ui.style", "fill-color: rgba(255,0,0,200);");
-				}
+//				if(world.getScheduler().getHeadAgent().getActivatedContexts().contains(n)) {
+//					node.addAttribute("ui.style", "fill-color: rgba(255,0,127,200);");
+//				}
 
 				
 			}