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