Skip to content
Snippets Groups Projects
Commit d02ecd5c authored by BrunoDatoMeneses's avatar BrunoDatoMeneses
Browse files

ENH: multiUI reinforcement 1D

parent a72fe9e2
Branches
No related tags found
1 merge request!4Exp rein
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);
}
}
......@@ -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];
......
......@@ -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();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment