From ee02d4e336a097a65a042fffd7363b490a266921 Mon Sep 17 00:00:00 2001 From: BrunoDatoMeneses <bruno.dato.meneses@gmail.com> Date: Fri, 14 Jun 2019 19:43:05 +0200 Subject: [PATCH] ENH: pseudo stable overmapping solving --- .../nDimensionsLaunchers/F_N_Manager.java | 7 +++-- AMOEBA3/src/mas/agents/context/Context.java | 27 +++++++++++++------ AMOEBA3/src/mas/agents/context/Range.java | 12 +++++++-- AMOEBA3/src/mas/agents/head/Head.java | 16 ++++++----- 4 files changed, 44 insertions(+), 18 deletions(-) diff --git a/AMOEBA3/src/experiments/nDimensionsLaunchers/F_N_Manager.java b/AMOEBA3/src/experiments/nDimensionsLaunchers/F_N_Manager.java index 9602c645..aa7044ce 100644 --- a/AMOEBA3/src/experiments/nDimensionsLaunchers/F_N_Manager.java +++ b/AMOEBA3/src/experiments/nDimensionsLaunchers/F_N_Manager.java @@ -97,18 +97,21 @@ public class F_N_Manager implements StudiedSystem, Serializable{ public double model(double[] x) { /* Disc */ - //return (y*y + x*x < spaceSize*spaceSize ) ? 2*x + y : 5*x - 8*y; + return (x[1]*x[1] + x[0]*x[0] < spaceSize*spaceSize ) ? model1() : model2(); /* Square */ //return (x[1] > -spaceSize && x[1] < spaceSize && x[0] < spaceSize && x[0] > -spaceSize) ? model1() : model2() ; //return model1(); /* Triangle */ - return (x[1] > x[0]) ? model1() : model2(); + //return (x[1] > x[0]) ? model1() : model2(); /* Split */ //return ( x <= 0 ) ? 2*x + y : 5*x - 8*y; + /* Exp */ + + } public double model(double x0, double x1) { diff --git a/AMOEBA3/src/mas/agents/context/Context.java b/AMOEBA3/src/mas/agents/context/Context.java index 339e3d1a..9424712e 100644 --- a/AMOEBA3/src/mas/agents/context/Context.java +++ b/AMOEBA3/src/mas/agents/context/Context.java @@ -1189,7 +1189,18 @@ public void analyzeResults4(Head head, Context closestContextToOracle) { fusionAcomplished = false; - if(this.sameModelAs(ctxt, world.getScheduler().getHeadAgent().getErrorAllowed()/10) ) { + double currentDistanceToOraclePrediction = this.getLocalModel().distance(this.getCurrentExperiment()); + double otherContextDistanceToOraclePrediction = ctxt.getLocalModel().distance(ctxt.getCurrentExperiment()); + + + + + + //if(this.sameModelAs(ctxt, world.getScheduler().getHeadAgent().getErrorAllowed()/10) ) { + if((currentDistanceToOraclePrediction<world.getScheduler().getHeadAgent().getDistanceToRegressionAllowed()) && (otherContextDistanceToOraclePrediction<world.getScheduler().getHeadAgent().getDistanceToRegressionAllowed())) { + + world.trace(new ArrayList<String>(Arrays.asList("currentDistanceToOraclePrediction",""+ currentDistanceToOraclePrediction,"otherContextDistanceToOraclePrediction",""+ otherContextDistanceToOraclePrediction))); + for(Percept pct : ranges.keySet()) { @@ -1205,7 +1216,7 @@ public void analyzeResults4(Head head, Context closestContextToOracle) { double lengthDifference = Math.abs(ranges.get(otherPct).getLenght() - ctxt.getRanges().get(otherPct).getLenght()); double centerDifference = Math.abs(ranges.get(otherPct).getCenter() - ctxt.getRanges().get(otherPct).getCenter()); world.trace(new ArrayList<String>(Arrays.asList(this.getName(),ctxt.getName(),otherPct.getName(), ""+lengthDifference,""+centerDifference, "LENGTH & CENTER DIFF", "" + world.getMappingErrorAllowed()))); - fusionTest = fusionTest && (lengthDifference < otherPct.getMappingErrorAllowed()) && (centerDifference< otherPct.getMappingErrorAllowed()); + fusionTest = fusionTest && (lengthDifference < otherPct.getMappingErrorAllowed()/2) && (centerDifference< otherPct.getMappingErrorAllowed()/2); } } @@ -2766,12 +2777,12 @@ private Pair<Percept, Context> getPerceptForAdaptationWithOverlapingContext(Arra public void NCSDetection_Uselessness() { -// for (Percept v : ranges.keySet()) { -// if (ranges.get(v).isTooSmall()){ -// solveNCS_Uselessness(); -// break; -// } -// } + for (Percept v : ranges.keySet()) { + if (ranges.get(v).isTooSmall()){ + solveNCS_Uselessness(); + break; + } + } // if(!isDying) { diff --git a/AMOEBA3/src/mas/agents/context/Range.java b/AMOEBA3/src/mas/agents/context/Range.java index fd10a398..638ae87a 100644 --- a/AMOEBA3/src/mas/agents/context/Range.java +++ b/AMOEBA3/src/mas/agents/context/Range.java @@ -875,9 +875,17 @@ public class Range implements Serializable, Comparable, Cloneable { public String toString() { return ((start_inclu ? "[" : "]") + start + "," + end + (!end_inclu ? "[" : "]") + " Current value : " + percept.getValue() - + " AVT_Start : " + AVT_deltaStart - + " AVT_End : " + AVT_deltaEnd ); + + "\n lastStartDirection : " + lastStartDirection + + "\n lastEndDirection : " + lastEndDirection + + "\n startCriticality : " + startCriticality + + "\n endCriticality : " + endCriticality + + "\n startIncrement : " + startIncrement + + "\n endIncrement : " + endIncrement + + ); } + + /** * Gets the context. diff --git a/AMOEBA3/src/mas/agents/head/Head.java b/AMOEBA3/src/mas/agents/head/Head.java index 49c488a4..162540f6 100644 --- a/AMOEBA3/src/mas/agents/head/Head.java +++ b/AMOEBA3/src/mas/agents/head/Head.java @@ -315,7 +315,7 @@ public class Head extends AbstractHead implements Cloneable{ create_New_ContextNCSExecutionTime = System.currentTimeMillis() - create_New_ContextNCSExecutionTime; overmappingNCSExecutionTime = System.currentTimeMillis(); - //NCSDetection_Context_Overmapping(); + NCSDetection_Context_Overmapping(); overmappingNCSExecutionTime = System.currentTimeMillis() - overmappingNCSExecutionTime; memoryCreationExecutionTime = System.currentTimeMillis(); @@ -992,7 +992,7 @@ public class Head extends AbstractHead implements Cloneable{ activatedContextsCopy.addAll(activatedContexts); for(Context ctxt : activatedContextsCopy) { - if(!ctxt.isDying()) { + if(!ctxt.isDying() && ctxt.getLocalModel().finishedFirstExperiments()) { ctxt.NCSDetection_OverMapping(); } @@ -1037,13 +1037,17 @@ public class Head extends AbstractHead implements Cloneable{ private void NCSDetection_ChildContext() { - if(!bestContext.getLocalModel().finishedFirstExperiments() && firstContext && world.getScheduler().getTick()>0) { - bestContext.solveNCS_ChildContext(); - - + if(bestContext!=null) { + if(!bestContext.getLocalModel().finishedFirstExperiments() && firstContext && world.getScheduler().getTick()>0 && !bestContext.isDying()) { + bestContext.solveNCS_ChildContext(); + + + } } + + } private void selfAnalysationOfContexts() { -- GitLab