diff --git a/AMOEBAonAMAK/src/agents/context/Range.java b/AMOEBAonAMAK/src/agents/context/Range.java
index 25ba066f5946f869d072bfa6add9f886df1f0011..5f48de97a246b5b257caae938623f4d95c9e4878 100644
--- a/AMOEBAonAMAK/src/agents/context/Range.java
+++ b/AMOEBAonAMAK/src/agents/context/Range.java
@@ -1508,18 +1508,18 @@ public class Range implements Serializable, Comparable, Cloneable {
 			////// " + (Math.abs(newStartValue-this.start)));
 		}
 
-//		if ((Double) newStartValue != null) {
-//			if (newStartValue < percept.getMin()) {
-//				this.start = percept.getMin();
-//
-//			} else {
-//				this.start = newStartValue;
-//			}
-//		} else {
-//			this.start = newStartValue;
-//		}
+		if ((Double) newStartValue != null) {
+			if (newStartValue < percept.getMin()) {
+				this.start = percept.getMin();
+
+			} else {
+				this.start = newStartValue;
+			}
+		} else {
+			this.start = newStartValue;
+		}
 		
-		this.start = newStartValue;
+		//this.start = newStartValue;
 		
 		
 
@@ -1547,17 +1547,17 @@ public class Range implements Serializable, Comparable, Cloneable {
 			////// System.out.println(context.getName() + " " + percept.getName() + " END "
 			////// + (Math.abs(newEndValue-this.end)));
 		}
-//		if ((Double) newEndValue != null) {
-//			if (newEndValue > percept.getMax()) {
-//				this.end = percept.getMax();
-//			} else {
-//				this.end = newEndValue;
-//			}
-//		} else {
-//			this.end = newEndValue;
-//		}
+		if ((Double) newEndValue != null) {
+			if (newEndValue > percept.getMax()) {
+				this.end = percept.getMax();
+			} else {
+				this.end = newEndValue;
+			}
+		} else {
+			this.end = newEndValue;
+		}
 		
-		this.end = newEndValue;
+		//this.end = newEndValue;
 		
 
 		if (this.context != null) {
diff --git a/AMOEBAonAMAK/src/agents/head/Head.java b/AMOEBAonAMAK/src/agents/head/Head.java
index a80074d1b6098690289e812ba3f48efa27bc7ac8..16684af32c6acc73ad196913333007522d806e18 100644
--- a/AMOEBAonAMAK/src/agents/head/Head.java
+++ b/AMOEBAonAMAK/src/agents/head/Head.java
@@ -152,7 +152,10 @@ public class Head extends AmoebaAgent {
 		
 		if(activatedNeighborsContexts.size()>0) {
 			
-			System.out.println(activatedNeighborsContexts);
+			getAmas().getEnvironment()
+			.trace(TRACE_LEVEL.INFORM, new ArrayList<String>(Arrays.asList("NEIGHBORDBOOD", ""+activatedNeighborsContexts)));
+			
+			
 			
 			for (Context ctxt : activatedNeighborsContexts) {
 				
diff --git a/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Launcher.java b/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Launcher.java
index 1ccc5f4400297de7b84acce64882dc97d9aa2954..2f5c64163ebf134e1df6f05d9827411049e2eee0 100644
--- a/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Launcher.java
+++ b/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Launcher.java
@@ -42,7 +42,7 @@ public class F_N_Launcher  extends Application implements Serializable {
 	public static final double explorationIncrement = 1.0	;
 	public static final double explorationWidht = 0.5	;
 	public static final boolean setActiveLearning = true	;
-	public static final boolean setSelfLearning = false	;
+	public static final boolean setSelfLearning = true	;
 	public static final int nbCycle = 1000;
 	
 
diff --git a/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Manager.java b/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Manager.java
index 9ce57be50be4fa1e073e8db6d8b4e8503ea3fa1b..b0dba480054498eff35623f4579419d662bdf8e2 100644
--- a/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Manager.java
+++ b/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Manager.java
@@ -155,14 +155,14 @@ public class F_N_Manager implements StudiedSystem{
 			nonRandomExplorationStep();
 			
 		}
+		else if(selfLearning) {
+					
+			for(int i = 0 ; i < dimension ; i++) {
+				x[i] = selfRequest.get("px" + i);
+			}
+		}
 		else if(activeLearning) {
 			
-			
-			
-			activeLearning = false;
-			
-			
-			
 			for(int i = 0 ; i < dimension ; i++) {
 				x[i] = selfRequest.get("px" + i);
 			}
@@ -176,6 +176,8 @@ public class F_N_Manager implements StudiedSystem{
 			}
 		}
 		
+		System.out.println("[PLAY ONE STEP] " + "selfLearning " + selfLearning + " activeLearning " + activeLearning);
+		
 		return null;
 	}
 	
@@ -280,37 +282,20 @@ public class F_N_Manager implements StudiedSystem{
 		int subzone = subzone2D(xRequest);
 		
 		/* Multi */
-		if(subzone == 1) {
-			/* Disques */
-			return modelN(xRequest) ;
-		}else if (subzone == 2) {
-			/* Gaussian model */
-			return gaussianModel(xRequest, subZoneCenter3D(2), gaussianCoef, gaussianVariance);
-			
-		}else if (subzone == 3) {
-			/* Square */
-			return square2DModel(xRequest, subZoneCenter3D(3));
-			
-		}else if (subzone == 4) {
-			/* Exp */
-			return gaussianMapping2D(xRequest);
-		}
-		
-		return model1();
+		//return multiModel(xRequest, subzone);
 		
 		
 		/* Disc */
-		//return (y*y + x*x < spaceSize*spaceSize ) ? 2*x + y : 5*x - 8*y;
+		//return (xRequest[0]*xRequest[0] + xRequest[1]*xRequest[1] < spaceSize*spaceSize ) ? model1(xRequest[0],xRequest[1]) : model2(xRequest[0],xRequest[1]);
 		
 		/* Square */
-		//return (xRequest[0] > -spaceSize && xRequest[0] < spaceSize && xRequest[1] < spaceSize && xRequest[1] > -spaceSize) ? model1(xRequest[0],xRequest[1]) : model2(xRequest[0],xRequest[1]) ;
-		//return model1();
+		//return (xRequest[0] > -spaceSize && xRequest[0] < spaceSize && xRequest[0] < spaceSize && xRequest[1] > -spaceSize) ? model1(xRequest[0],xRequest[1]) : model2(xRequest[0],xRequest[1]) ;
 		
 		/* Triangle */
-		//return (xRequest[0] > xRequest[1]) ? model1(xRequest[0],xRequest[1]) : model2(xRequest[0],xRequest[1]);
+		return (xRequest[0] > xRequest[1]) ? model1(xRequest[0],xRequest[1]) : model2(xRequest[0],xRequest[1]);
 		
 		/* Split */
-		//return ( x <= 0 ) ? 2*x + y : 5*x - 8*y;
+		//return ( xRequest[0] <= 0 ) ? model1(xRequest[0],xRequest[1]) : model2(xRequest[0],xRequest[1]);
 		
 		
 		
@@ -324,6 +309,27 @@ public class F_N_Manager implements StudiedSystem{
 		
 		
 		
+	}
+
+
+	private double multiModel(Double[] xRequest, int subzone) {
+		if(subzone == 1) {
+			/* Disques */
+			return modelN(xRequest) ;
+		}else if (subzone == 2) {
+			/* Gaussian model */
+			return gaussianModel(xRequest, subZoneCenter3D(2), gaussianCoef, gaussianVariance);
+			
+		}else if (subzone == 3) {
+			/* Square */
+			return square2DModel(xRequest, subZoneCenter3D(3));
+			
+		}else if (subzone == 4) {
+			/* Exp */
+			return gaussianMapping2D(xRequest);
+		}
+		
+		return model1();
 	}
 	
 	
@@ -574,8 +580,11 @@ private double[] subZoneCenter3D(int nb) {
 		}else {
 			out.put("oracle",result);
 		}
+		if(activeLearning) {
+			activeLearning=false;
+		}
 		//out.put("oracle",result);
-		System.out.println(out);
+		System.out.println("[GET OUTPUT] " +out);
 		
 		return out;
 	}
@@ -709,6 +718,8 @@ private double[] subZoneCenter3D(int nb) {
 	public void setSelfRequest(HashMap<Percept, Double> request){
 		HashMap<String,Double> newRequest = new HashMap<String,Double>();
 		
+		System.out.println("[SET SELF REQUEST] " +request);
+		
 		for(Percept pct : request.keySet()) {
 			newRequest.put(pct.getName(), request.get(pct));
 		}