From 04f8427f81f1a9f4c0614440bced972e4073da29 Mon Sep 17 00:00:00 2001 From: BrunoDatoMeneses <bruno.dato.meneses@gmail.com> Date: Wed, 10 Jul 2019 18:15:30 +0200 Subject: [PATCH] FIX: double surrounding infinite loop on void detection --- AMOEBAonAMAK/src/agents/context/Context.java | 4 ++-- AMOEBAonAMAK/src/agents/head/Head.java | 7 ++++--- .../experiments/nDimensionsLaunchers/F_N_Launcher.java | 3 ++- .../src/experiments/nDimensionsLaunchers/F_N_Manager.java | 8 ++++++++ AMOEBAonAMAK/src/kernel/World.java | 2 +- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/AMOEBAonAMAK/src/agents/context/Context.java b/AMOEBAonAMAK/src/agents/context/Context.java index 2a4632fe..fb9f6cd7 100644 --- a/AMOEBAonAMAK/src/agents/context/Context.java +++ b/AMOEBAonAMAK/src/agents/context/Context.java @@ -713,7 +713,7 @@ public class Context extends AmoebaAgent { for (Percept pct : getAmas().getPercepts()) { currentDistance = this.distance(ctxt, pct); - if(currentDistance<-pct.getMappingErrorAllowedMin() && getAmas().getCycle()>1000) { + if(currentDistance<-pct.getMappingErrorAllowedMin() && getAmas().getCycle()>50) { getEnvironment().trace(TRACE_LEVEL.DEBUG,new ArrayList<String>(Arrays.asList("OVERLAP",pct.getName(), ""+this,""+ctxt)) ); overlapCounts+=1; overlapDistances.put(pct, Math.abs(currentDistance)); @@ -723,7 +723,7 @@ public class Context extends AmoebaAgent { } - if (currentDistance > pct.getMappingErrorAllowedMin() && getAmas().getCycle()>2000) { + if (currentDistance > pct.getMappingErrorAllowedMin() && getAmas().getCycle()>50) { getEnvironment().trace(TRACE_LEVEL.DEBUG,new ArrayList<String>(Arrays.asList("VOID",pct.getName(), ""+this,""+ctxt, "distance", ""+currentDistance)) ); voidDistances.put(pct, currentDistance); bounds.put(pct, this.voidBounds(ctxt, pct)); diff --git a/AMOEBAonAMAK/src/agents/head/Head.java b/AMOEBAonAMAK/src/agents/head/Head.java index 90995cdb..67ee3729 100644 --- a/AMOEBAonAMAK/src/agents/head/Head.java +++ b/AMOEBAonAMAK/src/agents/head/Head.java @@ -144,9 +144,9 @@ public class Head extends AmoebaAgent { } private void playWithOracle() { - + getEnvironment().trace(TRACE_LEVEL.DEBUG, new ArrayList<String>(Arrays.asList("\n\n"))); getAmas().data.executionTimes[0]=System.currentTimeMillis(); - getEnvironment().trace(TRACE_LEVEL.DEBUG, new ArrayList<String>(Arrays.asList("\n------------------------------------------------------------------------------------" + getEnvironment().trace(TRACE_LEVEL.DEBUG, new ArrayList<String>(Arrays.asList("------------------------------------------------------------------------------------" + "---------------------------------------- PLAY WITH ORACLE"))); if (activatedContexts.size() > 0) { @@ -2394,7 +2394,8 @@ public class Head extends AmoebaAgent { test = true; for(Percept pct : getAmas().getPercepts()) { - test = test && ctxt.getRanges().get(pct).contains2(request.get(pct)); +// test = test && ctxt.getRanges().get(pct).contains2(request.get(pct)); + test = test && ctxt.getRanges().get(pct).contains(request.get(pct), pct.getMappingErrorAllowedMin()); } if(test) { return false; diff --git a/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Launcher.java b/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Launcher.java index 5a9e38b3..603a3835 100644 --- a/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Launcher.java +++ b/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Launcher.java @@ -36,7 +36,8 @@ public class F_N_Launcher implements Serializable { public static final int normType = 2 ; public static final boolean randomExploration = true; public static final boolean limitedToSpaceZone = true; - public static final double mappingErrorAllowed = 0.03; + //public static final double mappingErrorAllowed = 0.07; // BIG SQUARE + public static final double mappingErrorAllowed = 0.03; // MULTI public static final double explorationIncrement = 1.0 ; public static final double explorationWidht = 0.5 ; diff --git a/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Manager.java b/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Manager.java index b26d6378..ce809ad6 100644 --- a/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Manager.java +++ b/AMOEBAonAMAK/src/experiments/nDimensionsLaunchers/F_N_Manager.java @@ -271,6 +271,7 @@ public class F_N_Manager implements StudiedSystem{ center[0]=0.0; center[1]=0.0; //return gaussianModel(xRequest, center,gaussianCoef, gaussianVariance); + //return squareSimpleModel(xRequest); int subzone = subzone2D(xRequest); @@ -409,6 +410,13 @@ private double[] subZoneCenter3D(int nb) { xRequest[1] < (center[1]+spaceSize/2)) ? model1(xRequest[0],xRequest[1]) : model2(xRequest[0],xRequest[1]) ; } + private double squareSimpleModel(Double[] xRequest) { + return ((-spaceSize) < xRequest[0] && + xRequest[0] < (spaceSize) && + (-spaceSize) < xRequest[1] && + xRequest[1] < (+spaceSize)) ? model1(xRequest[0],xRequest[1]) : model2(xRequest[0],xRequest[1]) ; + } + private double gaussianModel() { double result = 1.0; for(int i=0;i<dimension;i++) { diff --git a/AMOEBAonAMAK/src/kernel/World.java b/AMOEBAonAMAK/src/kernel/World.java index e248a189..5fe709fe 100644 --- a/AMOEBAonAMAK/src/kernel/World.java +++ b/AMOEBAonAMAK/src/kernel/World.java @@ -34,7 +34,7 @@ public class World extends Environment { - public static TRACE_LEVEL minLevel = TRACE_LEVEL.ERROR; + public static TRACE_LEVEL minLevel = TRACE_LEVEL.DEBUG; private AMOEBA amoeba; -- GitLab