From d02ecd5cef551bf45bdde58a847cdc7b00d402b7 Mon Sep 17 00:00:00 2001
From: BrunoDatoMeneses <bruno.dato.meneses@gmail.com>
Date: Mon, 23 Sep 2019 09:50:21 +0200
Subject: [PATCH] ENH: multiUI reinforcement 1D

---
 .../smac/amak/ui/drawables/DrawablePoint.java | 130 +++++++++---------
 AMOEBAonAMAK/src/agents/head/Head.java        |   2 +-
 .../reinforcement/ReinforcementMultiUI.java   |  57 ++++----
 3 files changed, 96 insertions(+), 93 deletions(-)

diff --git a/AMAKFX/src/fr/irit/smac/amak/ui/drawables/DrawablePoint.java b/AMAKFX/src/fr/irit/smac/amak/ui/drawables/DrawablePoint.java
index f17758a8..13145dff 100644
--- a/AMAKFX/src/fr/irit/smac/amak/ui/drawables/DrawablePoint.java
+++ b/AMAKFX/src/fr/irit/smac/amak/ui/drawables/DrawablePoint.java
@@ -1,65 +1,65 @@
-package fr.irit.smac.amak.ui.drawables;
-
-import javafx.event.EventHandler;
-import javafx.scene.Node;
-import javafx.scene.input.MouseEvent;
-import javafx.scene.shape.SVGPath;
-
-/**
- * Drawable to point things on the VUI, use a '+' icon as graphical representation.
- * @author Hugo
- *
- */
-public class DrawablePoint extends Drawable {
-
-	private SVGPath svg = new SVGPath();
-	
-	public DrawablePoint(double dx, double dy) {
-		super(dx, dy, 0.5, 0.5);
-		svg.setContent("M24 10h-10v-10h-4v10h-10v4h10v10h4v-10h10z");
-		getNode().addEventHandler(MouseEvent.ANY, new EventHandler<MouseEvent>() {
-			@Override
-			public void handle(MouseEvent event) {
-				dispatchEvent(event);
-			}
-		});
-	}
-
-	@Override
-	public void _onDraw() {
-		svg.setFill(color);
-		svg.setScaleX(getRenderedWidth());
-		svg.setScaleY(getRenderedHeight());
-		// the render has an offset, 10 look like a good value 
-		svg.setTranslateX(left()-10);
-		svg.setTranslateY(top()-10);
-	}
-
-	@Override
-	protected void _hide() {
-		svg.setVisible(false);
-	}
-
-	@Override
-	public void _show() {
-		svg.setVisible(true);
-	}
-
-	@Override
-	public Node getNode() {
-		return svg;
-	}
-	
-	@Override
-	protected void onMouseExited(MouseEvent event) {
-		svg.setScaleX(getRenderedWidth());
-		svg.setScaleY(getRenderedHeight());
-	}
-
-	@Override
-	protected void onMouseEntered(MouseEvent event) {
-		svg.setScaleX(getRenderedWidth()*1.5);
-		svg.setScaleY(getRenderedHeight()*1.5);
-	}
-
-}
+package fr.irit.smac.amak.ui.drawables;
+
+import javafx.event.EventHandler;
+import javafx.scene.Node;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.shape.SVGPath;
+
+/**
+ * Drawable to point things on the VUI, use a '+' icon as graphical representation.
+ * @author Hugo
+ *
+ */
+public class DrawablePoint extends Drawable {
+
+	private SVGPath svg = new SVGPath();
+	
+	public DrawablePoint(double dx, double dy) {
+		super(dx, dy, 0.1, 0.1);
+		svg.setContent("M24 10h-10v-10h-4v10h-10v4h10v10h4v-10h10z");
+		getNode().addEventHandler(MouseEvent.ANY, new EventHandler<MouseEvent>() {
+			@Override
+			public void handle(MouseEvent event) {
+				dispatchEvent(event);
+			}
+		});
+	}
+
+	@Override
+	public void _onDraw() {
+		svg.setFill(color);
+		svg.setScaleX(getRenderedWidth());
+		svg.setScaleY(getRenderedHeight());
+		// the render has an offset, 10 look like a good value 
+		svg.setTranslateX(left()-10);
+		svg.setTranslateY(top()-10);
+	}
+
+	@Override
+	protected void _hide() {
+		svg.setVisible(false);
+	}
+
+	@Override
+	public void _show() {
+		svg.setVisible(true);
+	}
+
+	@Override
+	public Node getNode() {
+		return svg;
+	}
+	
+	@Override
+	protected void onMouseExited(MouseEvent event) {
+		svg.setScaleX(getRenderedWidth());
+		svg.setScaleY(getRenderedHeight());
+	}
+
+	@Override
+	protected void onMouseEntered(MouseEvent event) {
+		svg.setScaleX(getRenderedWidth()*1.5);
+		svg.setScaleY(getRenderedHeight()*1.5);
+	}
+
+}
diff --git a/AMOEBAonAMAK/src/agents/head/Head.java b/AMOEBAonAMAK/src/agents/head/Head.java
index 261df1a1..329778a5 100644
--- a/AMOEBAonAMAK/src/agents/head/Head.java
+++ b/AMOEBAonAMAK/src/agents/head/Head.java
@@ -171,7 +171,7 @@ public class Head extends AmoebaAgent {
 		getAmas().data.executionTimes[5]=System.currentTimeMillis()- getAmas().data.executionTimes[5];
 
 		getAmas().data.executionTimes[6]=System.currentTimeMillis();
-		NCSDetection_Context_Overmapping();
+		//NCSDetection_Context_Overmapping();
 		getAmas().data.executionTimes[6]=System.currentTimeMillis()- getAmas().data.executionTimes[6];
 
 
diff --git a/AMOEBAonAMAK/src/experiments/reinforcement/ReinforcementMultiUI.java b/AMOEBAonAMAK/src/experiments/reinforcement/ReinforcementMultiUI.java
index 94edba42..36caa486 100644
--- a/AMOEBAonAMAK/src/experiments/reinforcement/ReinforcementMultiUI.java
+++ b/AMOEBAonAMAK/src/experiments/reinforcement/ReinforcementMultiUI.java
@@ -110,6 +110,7 @@ public class ReinforcementMultiUI extends Application implements Serializable {
 		amoebaSpatialRewardVUI = new VUIMulti("2D");
 		amoebaSpatialRewardUI = new AmoebaMultiUIWindow("SPATIAL REWARD", amoebaSpatialRewardVUI);
 		
+		
 		amoebaControlModelVUI = new VUIMulti("2D");
 		amoebaControlModelUI = new AmoebaMultiUIWindow("CONTROL MODEL", amoebaControlModelVUI);
 		
@@ -141,27 +142,31 @@ public class ReinforcementMultiUI extends Application implements Serializable {
 	public void runTask(long wait, int cycles) 
     {
 		
-		try
-        {
-             
-            // Update the Label on the JavaFx Application Thread        
-            Platform.runLater(new Runnable() 
-            {
-                @Override
-                public void run() 
-                {
-                	agent = new AmoebaRewardAndControl();
-                	env = new OneDimensionEnv(10);
-                }
-            });
-     
-            Thread.sleep(wait);
-        }
-        catch (InterruptedException e) 
-        {
-            e.printStackTrace();
-        }
-		
+//		try
+//        {
+//             
+//            // Update the Label on the JavaFx Application Thread        
+//            Platform.runLater(new Runnable() 
+//            {
+//                @Override
+//                public void run() 
+//                {
+//                	agent = new AmoebaRewardAndControl();
+//                	env = new OneDimensionEnv(10);
+//                }
+//            });
+//     
+//            Thread.sleep(wait);
+//        }
+//        catch (InterruptedException e) 
+//        {
+//            e.printStackTrace();
+//        }
+		
+		
+		
+		agent = new AmoebaRewardAndControl();
+    	env = new OneDimensionEnv(10);
 		
 		state = env.reset(); // BUG LAAAAAAAAAAAAAAAA
 		double explo = EXPLO_RATE_BASE;
@@ -311,15 +316,13 @@ public class ReinforcementMultiUI extends Application implements Serializable {
 	}
 	
 	public class AmoebaRewardAndControl implements LearningAgent {
-		public AMOEBA amoebaSpatialReward;
-		//public AMOEBA amoebaControlModel;
 		public double lr = 0.8;
 		public double gamma = 0.9;
 		private Random rand = new Random();
 		
 		public AmoebaRewardAndControl() {
 			amoebaSpatialReward = setupSpatialReward();
-			//amoebaControlModel = setupControlModel();
+			amoebaControlModel = setupControlModel();
 		}
 		
 		@Override
@@ -366,7 +369,7 @@ public class ReinforcementMultiUI extends Application implements Serializable {
 			//System.out.println("SpatialReward " + positionAndReward + "                  ---------------- SIMPLE REIN XP 149");
 			
 			amoebaSpatialReward.learn(positionAndReward);
-			//amoebaControlModel.learn(previousStateCurrentStateAction);
+			amoebaControlModel.learn(previousStateCurrentStateAction);
 			
 		}
 
@@ -497,7 +500,7 @@ public class ReinforcementMultiUI extends Application implements Serializable {
 	}
 	
 
-	private static AMOEBA setupControlModel() {
+	private AMOEBA setupControlModel() {
 		ArrayList<Pair<String, Boolean>> sensors = new ArrayList<>();
 		sensors.add(new Pair<String, Boolean>("pCurrent", false));
 		sensors.add(new Pair<String, Boolean>("pGoal", false));
@@ -514,7 +517,7 @@ public class ReinforcementMultiUI extends Application implements Serializable {
 		
 		Log.defaultMinLevel = Log.Level.INFORM;
 		World.minLevel = TRACE_LEVEL.ERROR;
-		AMOEBA amoeba = new AMOEBA(null, null, config.getAbsolutePath(), null);
+		AMOEBA amoeba = new AMOEBA(amoebaControlModelUI, amoebaControlModelVUI, config.getAbsolutePath(), null);
 		amoeba.saver = new SaveHelperDummy();
 		
 		
-- 
GitLab