diff --git a/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Launcher.java b/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Launcher.java index 3ad417d9047d5f288dfcfabd0b6e156b1a3faac2..0acf3b0eeaac5901ee2879c2c5718035f33f095d 100644 --- a/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Launcher.java +++ b/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Launcher.java @@ -45,14 +45,20 @@ public class F_XY_Launcher implements Serializable { //System.out.println("Running :" + amoeba.isRunning()); try { - Thread.sleep(1); + Thread.sleep(amoeba.temporisation); } catch(InterruptedException ex) { Thread.currentThread().interrupt(); } - if(amoeba.isRunning()) { + + if(amoeba.getScheduler().requestAsked()) { + amoeba.manual = true; + amoeba.learn(new HashMap<String, Double>(f_XY_Manager.getOutputRequest(amoeba.getScheduler().getManualRequest()))); + amoeba.manual = false; + + }else if(amoeba.isRunning()) { /*Random samples of the studied system */ f_XY_Manager.playOneStep(0); @@ -75,6 +81,7 @@ public class F_XY_Launcher implements Serializable { } + } diff --git a/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Manager.java b/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Manager.java index 54f055bf2a58cab987ce25b7940ec4c84e22b609..99aa1564aabff07f9de0c665691f4a6846924ac4 100644 --- a/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Manager.java +++ b/AMOEBA3/src/experiments/twoDimensionsLaunchers/F_XY_Manager.java @@ -65,6 +65,27 @@ public class F_XY_Manager implements StudiedSystem, Serializable{ out.put("oracle",result); return out; } + + + public HashMap<String, Double> getOutputRequest(HashMap<String, Double> values) { + HashMap<String, Double> out = new HashMap<String, Double>(); + + double xValue = values.get("px"); + double yValue = values.get("py"); + + //result = (y*y + x*x < spaceSize*spaceSize ) ? 2*x + y : 5*x - 8*y; + result = (yValue > -spaceSize && yValue < spaceSize && xValue < spaceSize && xValue > -spaceSize) ? 2*xValue + yValue : 5*xValue - 8*yValue; + if(Math.abs(yValue) > 3 * spaceSize && Math.abs(xValue) > 3 * spaceSize) { + result = 1000*xValue + 500*yValue; + } + // result = (2*x) + (4*y) + x*y; + // result = (x > 2*y) ? 0.0 : 1.0; + + out.put("px",xValue); + out.put("py",yValue); + out.put("oracle",result); + return out; + } /* (non-Javadoc) * @see kernel.StudiedSystem#switchControlMode() diff --git a/AMOEBA3/src/mas/agents/context/Context.java b/AMOEBA3/src/mas/agents/context/Context.java index a4bf7bbb2afda25b2e7137cb547f2eea2db96826..6bc2fa69f196a232942f7a589990c3d6742e04ac 100644 --- a/AMOEBA3/src/mas/agents/context/Context.java +++ b/AMOEBA3/src/mas/agents/context/Context.java @@ -2,6 +2,7 @@ package mas.agents.context; import java.io.Serializable; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; @@ -98,9 +99,9 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ public Context(World world, Head head, Context bestNearestContext) { super(world); buildContext(head, bestNearestContext); - //System.out.println("=======================================================================" +this.getName() + " <-- " + bestNearestContext.getName()); - //System.out.println(this.toStringFull()); - //System.out.println(bestNearestContext.toStringFull()); + ////System.out.println("=======================================================================" +this.getName() + " <-- " + bestNearestContext.getName()); + ////System.out.println(this.toStringFull()); + ////System.out.println(bestNearestContext.toStringFull()); } private void buildContext (Head headAgent, Context bestNearestContext) { @@ -126,9 +127,14 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ Range r; - Double radius = getMaxRadiusForContextCreation(v); + ////System.out.println("MAX RADIUS FOR CONTEXT CREATION AFTER TEST" + v.getName() + " " + radius + " / " + (radius/v.getRadiusContextForCreation())); + + AbstractPair<Double, Double> radiuses = world.getScheduler().getHeadAgent().getMaxRadiusesForContextCreation(v); - r = new Range(this, v.getValue() - radius, v.getValue() + radius, 0, true, true, v, world); + //System.out.println("MAX RADIUS FOR CONTEXT CREATION " + v.getName() + " < " + radiuses.getA() + " , " + radiuses.getB() + " > / < " + (radiuses.getA()/v.getRadiusContextForCreation()) + " , " + (radiuses.getB()/v.getRadiusContextForCreation()) + " >"); + + r = new Range(this, v.getValue() - radiuses.getA(), v.getValue() + radiuses.getB(), 0, true, true, v, world); + ranges.put(v, r); ranges.get(v).setValue(v.getValue()); sendExpressMessage(null, MessageType.REGISTER, v); @@ -138,7 +144,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ v.addContextSortedRanges(this); } - + expand(); this.confidence = bestNearestContext.confidence; if (bestNearestContext.world.getLocalModel() == TypeLocalModel.MILLER_REGRESSION) { @@ -212,7 +218,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ Double getMaxRadiusForContextCreation(Percept pct) { Double maxRadius = world.getScheduler().getHeadAgent().getMaxRadiusForContextCreation(pct); - //System.out.println("MAX RADIUS FOR CONTEXT CREATION " + pct.getName() + " " + maxRadius + " / " + (maxRadius/pct.getRadiusContextForCreation())); + ////System.out.println("MAX RADIUS FOR CONTEXT CREATION " + pct.getName() + " " + maxRadius + " / " + (maxRadius/pct.getRadiusContextForCreation())); return maxRadius; //return Math.abs(pct.getMinMaxDistance()) * world.contextCreationPercentage; @@ -290,11 +296,11 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ } - //System.out.println("MAX RADIUS FOR CONTEXT CREATION AFTER TEST" + v.getName() + " " + radius + " / " + (radius/v.getRadiusContextForCreation())); + ////System.out.println("MAX RADIUS FOR CONTEXT CREATION AFTER TEST" + v.getName() + " " + radius + " / " + (radius/v.getRadiusContextForCreation())); AbstractPair<Double, Double> radiuses = world.getScheduler().getHeadAgent().getMaxRadiusesForContextCreation(v); - System.out.println("MAX RADIUS FOR CONTEXT CREATION " + v.getName() + " < " + radiuses.getA() + " , " + radiuses.getB() + " > / < " + (radiuses.getA()/v.getRadiusContextForCreation()) + " , " + (radiuses.getB()/v.getRadiusContextForCreation()) + " >"); + //System.out.println("MAX RADIUS FOR CONTEXT CREATION " + v.getName() + " < " + radiuses.getA() + " , " + radiuses.getB() + " > / < " + (radiuses.getA()/v.getRadiusContextForCreation()) + " , " + (radiuses.getB()/v.getRadiusContextForCreation()) + " >"); r = new Range(this, v.getValue() - radiuses.getA(), v.getValue() + radiuses.getB(), 0, true, true, v, world); @@ -346,14 +352,14 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ overlaps = new HashMap<Context,String>(); - System.out.println("NEW CONTEXT " + this.getName()); + //System.out.println("NEW CONTEXT " + this.getName()); displayRanges(); } public void displayRanges() { for(Percept pct : ranges.keySet()) { - System.out.println(pct.getName() + " [ " + ranges.get(pct).getStart() + " , " + ranges.get(pct).getEnd() + " ]"); + //System.out.println(pct.getName() + " [ " + ranges.get(pct).getStart() + " , " + ranges.get(pct).getEnd() + " ]"); } } @@ -385,7 +391,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ for(Context ctxtNeigbor: contextNeighbors) { for(Percept pct : ranges.keySet()) { if(pct!=pctDirection) { - System.out.println("DISTANCE " + ctxtNeigbor.getName()+ " " + pct.getName()+ " " + expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct)) + " " + ( expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct))<0)) ; + //System.out.println("DISTANCE " + ctxtNeigbor.getName()+ " " + pct.getName()+ " " + expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct)) + " " + ( expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct))<0)) ; test = test && ( expandingContext.distance(pct, ctxtNeigbor.getRanges().get(pct))<-0.0001); } @@ -413,31 +419,31 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ for(Percept fixedPct: ranges.keySet()) { alternativeContexts.put(fixedPct, new SpatialContext(this)); - System.out.println("FIXED PERCEPT :" + fixedPct.getName()); + //System.out.println("FIXED PERCEPT :" + fixedPct.getName()); for(Percept pctDirectionForExpanding: ranges.keySet()) { if(pctDirectionForExpanding != fixedPct) { - System.out.println("DIRECTION PERCEPT :" + pctDirectionForExpanding.getName()); + //System.out.println("DIRECTION PERCEPT :" + pctDirectionForExpanding.getName()); - System.out.println("ALL NEIGHBORS"); + //System.out.println("ALL NEIGHBORS"); for(Context ct : world.getScheduler().getHeadAgent().getActivatedNeighborsContexts()) { - System.out.println(ct.getName()); + //System.out.println(ct.getName()); } neighborsOnOneDirection = getContextsOnAPerceptDirectionFromContextsNeighbors(world.getScheduler().getHeadAgent().getActivatedNeighborsContexts(), pctDirectionForExpanding, alternativeContexts.get(fixedPct)); - System.out.println("NEIGHBORS THROUGH " + pctDirectionForExpanding.getName()); + //System.out.println("NEIGHBORS THROUGH " + pctDirectionForExpanding.getName()); for(Context ct : neighborsOnOneDirection) { - System.out.println(ct.getName()); + //System.out.println(ct.getName()); } AbstractPair<Double,Double> expandingRadiuses = getMaxExpansionsForContextExpansionAfterCreation(neighborsOnOneDirection, pctDirectionForExpanding); - System.out.println("START : " + expandingRadiuses.getA() + " END " + expandingRadiuses.getB()); + //System.out.println("START : " + expandingRadiuses.getA() + " END " + expandingRadiuses.getB()); alternativeContexts.get(fixedPct).expandEnd(pctDirectionForExpanding, expandingRadiuses.getB()); alternativeContexts.get(fixedPct).expandStart(pctDirectionForExpanding, expandingRadiuses.getA()); } @@ -463,7 +469,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ double startExpansion = Math.abs(ranges.get(pct).getStart()-biggerContextForCreation.getStart(pct)); double endExpansion = Math.abs(ranges.get(pct).getEnd()-biggerContextForCreation.getEnd(pct)); - System.out.println("EXPANSION " + pct.getName() +" < " + startExpansion + " , " + endExpansion + " > / < " +pct.getMin() + " , " +pct.getMax() + " >"); + //System.out.println("EXPANSION " + pct.getName() +" < " + startExpansion + " , " + endExpansion + " > / < " +pct.getMin() + " , " +pct.getMax() + " >"); ranges.get(pct).setStart(biggerContextForCreation.getStart(pct)); ranges.get(pct).setEnd(biggerContextForCreation.getEnd(pct)); @@ -473,10 +479,10 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ } public AbstractPair<Double,Double> getMaxExpansionsForContextExpansionAfterCreation(ArrayList<Context> contextNeighborsInOneDirection, Percept pct) { - //AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(pct.getRadiusContextForCreation(),pct.getRadiusContextForCreation()); - AbstractPair<Double,Double> maxExpansions = new AbstractPair<Double,Double>(Math.abs(pct.getMin()- ranges.get(pct).getStart()),Math.abs(pct.getMax()-ranges.get(pct).getEnd())); + AbstractPair<Double,Double> maxExpansions = new AbstractPair<Double,Double>(pct.getRadiusContextForCreation(),pct.getRadiusContextForCreation()); + //AbstractPair<Double,Double> maxExpansions = new AbstractPair<Double,Double>(Math.abs(pct.getMin()- ranges.get(pct).getStart()),Math.abs(pct.getMax()-ranges.get(pct).getEnd())); - //System.out.println("EXPANSION MIN MAX " + pct.getName() +" " + pct.getValue() + " < " + pct.getMin() + " , " + pct.getMax() + " > / < " + Math.abs(pct.getMin()- pct.getValue()) + " , " + Math.abs(pct.getMax()-pct.getValue()) + " >"); + ////System.out.println("EXPANSION MIN MAX " + pct.getName() +" " + pct.getValue() + " < " + pct.getMin() + " , " + pct.getMax() + " > / < " + Math.abs(pct.getMin()- pct.getValue()) + " , " + Math.abs(pct.getMax()-pct.getValue()) + " >"); double currentStartExpansion; double currentEndExpansion; @@ -485,13 +491,13 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ //for(Context ctxt:partialNeighborContexts.get(pct)) { for(Context ctxt: contextNeighborsInOneDirection) { - System.out.println("DISTANCE " + pct.getName() + " " + ctxt.getRanges().get(pct).centerDistance(pct.getValue())); + //System.out.println("DISTANCE " + pct.getName() + " " + ctxt.getRanges().get(pct).centerDistance(pct.getValue())); if(ctxt.getRanges().get(pct).centerDistance(pct.getValue()) < 0) { // End radius currentEndExpansion = ctxt.getRanges().get(pct).distance(ranges.get(pct)); - System.out.println("DISTANCE 2 " + pct.getName() + " " + ctxt.getRanges().get(pct).distance(ranges.get(pct))); - //System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); + //System.out.println("DISTANCE 2 " + pct.getName() + " " + ctxt.getRanges().get(pct).distance(ranges.get(pct))); + ////System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); if(currentEndExpansion < maxExpansions.getB() && currentEndExpansion >= -0.00001 ) { if(Math.abs(currentEndExpansion)<0.0001) { currentEndExpansion = 0.0; @@ -503,7 +509,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ if(ctxt.getRanges().get(pct).centerDistance(pct.getValue()) > 0) { // Start radius currentStartExpansion = ctxt.getRanges().get(pct).distance(ranges.get(pct)); - //System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); + ////System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); if(currentStartExpansion < maxExpansions.getA() && currentStartExpansion >= -0.00001 ) { if(Math.abs(currentStartExpansion)<0.0001) { currentEndExpansion = 0.0; @@ -623,7 +629,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ activations--; if (activations < 0) { - ////System.out.println("Activation lower than 0 : exit"); + //////System.out.println("Activation lower than 0 : exit"); System.exit(-2); } if (valid) { @@ -655,16 +661,17 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ super.play(); - System.out.println("}}}}}}}}}}}}}}}}}}}}}}}}}}} NON VALIDITY"); + + world.trace(new ArrayList<String>(Arrays.asList(this.getName(), "NON VALID PERCEPTS"))); for(Percept pct : nonValidPercepts) { - System.out.println(pct.getName()); + System.out.println("--> " + pct.getName()); } if(nonValidPercepts.size() == 0) { sendMessage(getActionProposal(), MessageType.PROPOSAL, headAgent); Config.print("Message envoy�", 4); - //////System.out.println("Valid context by Percepts "+this.name); + System.out.println(world.getScheduler().getTick() + " " + this.name + " VALID"); } else if(nonValidPercepts.size() == 1){ world.getScheduler().getHeadAgent().addPartiallyActivatedContext(nonValidPercepts.get(0), this); @@ -673,14 +680,14 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ if(nonValidNeightborPercepts.size() == 0) { - //System.out.println("VALID NEIGHBOR : " + this.getName()); + ////System.out.println("VALID NEIGHBOR : " + this.getName()); - System.out.println(world.getScheduler().getTick() + " " + this.getName() + " " + "VALID"); + //System.out.println(world.getScheduler().getTick() + " " + this.getName() + " " + "VALID"); world.getScheduler().getHeadAgent().addRequestNeighbor(this); } else if(nonValidNeightborPercepts.size() == 1){ world.getScheduler().getHeadAgent().addPartialRequestNeighborContext(nonValidNeightborPercepts.get(0),this); - System.out.println(world.getScheduler().getTick() + " " + this.getName() + " " + "PARTIALLY VALID" + " " + nonValidNeightborPercepts.get(0).getName()); + //System.out.println(world.getScheduler().getTick() + " " + this.getName() + " " + "PARTIALLY VALID" + " " + nonValidNeightborPercepts.get(0).getName()); } @@ -706,7 +713,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ - nonValidPercepts.clear(); +// nonValidPercepts.clear(); //nonValidNeightborPercepts.clear(); //ENDO @@ -731,7 +738,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ Random rand = new Random(); // if( this.getConfidence() <= 0 && tickCreation + 125 < world.getScheduler().getTick() ) { -// //System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Uselessness"); +// ////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Uselessness"); // world.raiseNCS(NCS.CONTEXT_USELESSNESS); // this.die(); // } @@ -743,7 +750,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ if(nonValidNeightborPercepts.size() == 0) { - //System.out.println("VALID NEIGHBOR : " + this.getName()); + ////System.out.println("VALID NEIGHBOR : " + this.getName()); world.getScheduler().getHeadAgent().addRequestNeighbor(this); @@ -758,7 +765,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ if(nonValidPercepts.size() == 0) { - //System.out.println("VALID NEIGHBOR : " + this.getName()); + ////System.out.println("VALID NEIGHBOR : " + this.getName()); world.getScheduler().getHeadAgent().addActivatedContext(this); @@ -772,6 +779,10 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ public void clearNonValidPerceptNeighbors() { nonValidNeightborPercepts.clear(); } + + public void clearNonValidPercepts() { + nonValidPercepts.clear(); + } private void NCSDetections() { @@ -781,13 +792,13 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ } public void displayOtherContextsDistances() { - ////System.out.println("Other Context Distances : " + this.getName()); + //////System.out.println("Other Context Distances : " + this.getName()); for(Context ctxt :otherContextsDistancesByPercept.keySet()) { //system.out.print(ctxt.getName() + " "); for(Percept pct : otherContextsDistancesByPercept.get(ctxt).keySet()) { //system.out.print(pct.getName() + " " + otherContextsDistancesByPercept.get(ctxt).get(pct).getFirst() + " " + otherContextsDistancesByPercept.get(ctxt).get(pct).getSecond() + " "); } - ////System.out.println(" "); + //////System.out.println(" "); } } @@ -820,7 +831,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ * @param head the head */ public void solveNCS_IncompetentHead(Head head) { - //System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " +"solveNCS_IncompetentHead"); + ////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " +"solveNCS_IncompetentHead"); world.raiseNCS(NCS.HEAD_INCOMPETENT); growRanges(); } @@ -831,7 +842,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ * @param head the head */ public void solveNCS_Concurrence(Head head) { - //System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Concurrence"); + ////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Concurrence"); world.raiseNCS(NCS.CONTEXT_CONCURRENCE); this.shrinkRangesToJoinBorders( head.getBestContext()); } @@ -842,7 +853,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ * @param head the head */ private void solveNCS_Uselessness(Head head) { - //System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Uselessness"); + ////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Uselessness"); world.raiseNCS(NCS.CONTEXT_USELESSNESS); this.die(); } @@ -853,7 +864,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ * @param head the head */ private void solveNCS_ConflictInexact(Head head) { - //System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_ConflictInexact"); + ////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_ConflictInexact"); world.raiseNCS(NCS.CONTEXT_CONFLICT_INEXACT); if(true) { confidence--; @@ -869,7 +880,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ */ private void solveNCS_Conflict(Head head) { - //System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Conflict"); + ////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_Conflict"); world.raiseNCS(NCS.CONTEXT_CONFLICT_FALSE); if (head.getNewContext() == this) { @@ -887,19 +898,19 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ //Percept p = getPerceptWithLargerImpactOnAVT(percepts); //Percept p = getPerceptWithLesserImpactOnAVT(percepts); Percept p; - ////System.out.println((head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()) + "head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()"); + //////System.out.println((head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()) + "head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()"); if (head.isContextFromPropositionWasSelected() && head.getCriticity() <= head.getErrorAllowed()){ p = this.getPerceptWithLesserImpactOnVolumeNotIncludedIn2(percepts, head.getBestContext()); - ////System.out.println((p == null) + "p == null"); + //////System.out.println((p == null) + "p == null"); if (p == null) { - //System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_ConflictAndDie"); + ////System.out.println(world.getScheduler().getTick() +" " + this.getName()+ " " + "solveNCS_ConflictAndDie"); this.die(); }else { - ////System.out.println(p.getName()); + //////System.out.println(p.getName()); //ranges.get(p).matchBorderWith(head.getBestContext()); ranges.get(p).adaptTowardsBorder(head.getBestContext()); } @@ -943,7 +954,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ double volumeLost = Double.MAX_VALUE; double vol = 1.0; - //System.out.println("PerceptWithLesserImpactOnVolumeNotIncludedIn ..."); + ////System.out.println("PerceptWithLesserImpactOnVolumeNotIncludedIn ..."); for (Percept percept : containingRanges) { @@ -952,28 +963,28 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ if (!(otherRanges.getStart() <= ranges.get(percept).getStart() && ranges.get(percept).getEnd() <= otherRanges.getEnd())) { - //System.out.println(percept.getName()); + ////System.out.println(percept.getName()); if (ranges.get(percept).getNearestLimit(percept.getValue()) == false) { - //System.out.println("end simu : " + ranges.get(percept).simulateNegativeAVTFeedbackEnd(percept.getValue()) + " start : " + ranges.get(percept).getStart()); + ////System.out.println("end simu : " + ranges.get(percept).simulateNegativeAVTFeedbackEnd(percept.getValue()) + " start : " + ranges.get(percept).getStart()); vol = ranges.get(percept).simulateNegativeAVTFeedbackEnd(percept.getValue()) - ranges.get(percept).getStart(); } else { - //System.out.println("end : " + ranges.get(percept).getEnd() + " start simu : " + ranges.get(percept).simulateNegativeAVTFeedbackStart(percept.getValue())); + ////System.out.println("end : " + ranges.get(percept).getEnd() + " start simu : " + ranges.get(percept).simulateNegativeAVTFeedbackStart(percept.getValue())); vol = ranges.get(percept).getEnd() - ranges.get(percept).simulateNegativeAVTFeedbackStart(percept.getValue()); } - //System.out.println("Vol1 : " + vol); + ////System.out.println("Vol1 : " + vol); for (Percept p2 : ranges.keySet()) { if (!ranges.get(p2).isPerceptEnum() && p2 != percept) { - //System.out.println(p2.getName()); + ////System.out.println(p2.getName()); vol *= ranges.get(p2).getLenght(); - //System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName()); + ////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName()); } } - //System.out.println("Vol2 : " + vol); + ////System.out.println("Vol2 : " + vol); if (vol < volumeLost) { @@ -982,7 +993,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ } - //System.out.println("Vol lost : " + volumeLost + "percept " + p.getName()); + ////System.out.println("Vol lost : " + volumeLost + "percept " + p.getName()); } @@ -1001,7 +1012,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ double volumeLost = Double.MAX_VALUE; double vol = 1.0; - ////System.out.println("LESSER ..."); + //////System.out.println("LESSER ..."); for (Percept percept : containingRanges) { @@ -1010,29 +1021,29 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ if (!(otherRanges.getStart() <= ranges.get(percept).getStart() && ranges.get(percept).getEnd() <= otherRanges.getEnd())) { - ////System.out.println(percept.getName()); + //////System.out.println(percept.getName()); vol = Math.abs( Math.abs(otherRanges.getCenter() - ranges.get(percept).getCenter()) - otherRanges.getRadius() - ranges.get(percept).getRadius()); // if (ranges.get(percept).getNearestLimit(percept.getValue()) == false) { -// ////System.out.println("end simu : " + ranges.get(percept).simulateNegativeAVTFeedbackMax(percept.getValue()) + " start : " + ranges.get(percept).getStart()); +// //////System.out.println("end simu : " + ranges.get(percept).simulateNegativeAVTFeedbackMax(percept.getValue()) + " start : " + ranges.get(percept).getStart()); // vol = percept.getValue() - ranges.get(percept).getStart(); // } else { -// ////System.out.println("end : " + ranges.get(percept).getEnd() + " start simu : " + ranges.get(percept).simulateNegativeAVTFeedbackMin(percept.getValue())); +// //////System.out.println("end : " + ranges.get(percept).getEnd() + " start simu : " + ranges.get(percept).simulateNegativeAVTFeedbackMin(percept.getValue())); // vol = ranges.get(percept).getEnd() - percept.getValue(); // } - ////System.out.println("Vol1 : " + vol); + //////System.out.println("Vol1 : " + vol); for (Percept p2 : ranges.keySet()) { if (!ranges.get(p2).isPerceptEnum() && p2 != percept) { - ////System.out.println(p2.getName()); + //////System.out.println(p2.getName()); vol *= ranges.get(p2).getLenght(); - ////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName()); + //////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName()); } } - ////System.out.println("Vol2 : " + vol); + //////System.out.println("Vol2 : " + vol); if (vol < volumeLost) { @@ -1041,7 +1052,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ } - ////System.out.println("Vol lost : " + volumeLost); + //////System.out.println("Vol lost : " + volumeLost); } @@ -1060,7 +1071,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ double volumeLost3 = Double.MAX_VALUE; double vol3 = 1.0; - //System.out.println("LESSER ..."); + ////System.out.println("LESSER ..."); for (Percept percept : containingRanges) { @@ -1069,7 +1080,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ if (!(otherRanges.getStart() <= ranges.get(percept).getStart() && ranges.get(percept).getEnd() <= otherRanges.getEnd())) { - //System.out.println(percept.getName()); + ////System.out.println(percept.getName()); if(percept.contextOrder(this, otherContext)) { @@ -1078,17 +1089,17 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ else if(percept.contextOrder(otherContext, this)) { vol3 = Math.abs(percept.getEndRangeProjection(otherContext) - percept.getStartRangeProjection(this)); } - //System.out.println("vol3 : " + vol3); + ////System.out.println("vol3 : " + vol3); for (Percept p2 : ranges.keySet()) { if (!ranges.get(p2).isPerceptEnum() && p2 != percept) { - ////System.out.println(p2.getName()); + //////System.out.println(p2.getName()); vol3 *= ranges.get(p2).getLenght(); - ////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName()); + //////System.out.println(p2.getName() + " " + ranges.get(p2).getLenght() + " " + getName()); } } - ////System.out.println("vol3 : " + vol3); + //////System.out.println("vol3 : " + vol3); if (vol3 < volumeLost3) { @@ -1096,7 +1107,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ p3 = percept; } - ////System.out.println("Vol3 lost : " + volumeLost3); + //////System.out.println("Vol3 lost : " + volumeLost3); } @@ -1105,7 +1116,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ } - if(p3 != null) {//System.out.println("p3 : " + p3.getName()); + if(p3 != null) {////System.out.println("p3 : " + p3.getName()); } @@ -1175,7 +1186,7 @@ public class Context extends AbstractContext implements Serializable,Cloneable{ } } } - ////System.out.println("percept " + p.getName()); + //////System.out.println("percept " + p.getName()); return p; } @@ -1214,7 +1225,7 @@ private Percept getPerceptWithLesserImpactOnVolume(ArrayList<Percept> containing } } - ////System.out.println("percept " + p.getName()); + //////System.out.println("percept " + p.getName()); return p; } @@ -1236,7 +1247,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin } } - ////System.out.println("percept " + p.getName()); + //////System.out.println("percept " + p.getName()); return p; } @@ -1693,7 +1704,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin Double influence = 1.0; for(Percept pct : situation.keySet()) { - //////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct))); + ////////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct))); influence *= getInfluenceByPerceptSituationWithConfidence(pct, situation.get(pct)); } @@ -1708,7 +1719,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin Double influence = 1.0; for(Percept pct : situation.keySet()) { - //////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct))); + ////////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct))); influence *= getInfluenceByPerceptSituation(pct, situation.get(pct)); } @@ -1720,7 +1731,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin Double currentInfluence = 0.0; for(Percept pct : situation.keySet()) { - //////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct))); + ////////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct))); currentInfluence = getInfluenceByPerceptSituationWithConfidence(pct, situation.get(pct)); if(currentInfluence < worstInfluence) { worstInfluence = currentInfluence; @@ -1735,7 +1746,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin Double currentInfluence = 0.0; for(Percept pct : situation.keySet()) { - //////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct))); + ////////System.out.println("INFLUTEST " + getInfluenceByPerceptSituation(pct, situation.get(pct))); currentInfluence = getInfluenceByPerceptSituation(pct, situation.get(pct)); if(currentInfluence < worstInfluence) { worstInfluence = currentInfluence; @@ -1812,7 +1823,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin * Update experiments. */ private void updateExperiments() { - // ////System.out.println("Update experiments"); + // //////System.out.println("Update experiments"); ArrayList<Percept> var = world.getAllPercept(); maxActivationsRequired = var.size(); Experiment exp = new Experiment(); @@ -1886,11 +1897,11 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin * @param head the head */ public void growRanges() { - ////System.out.println("Grow " + this.getName() ); + //////System.out.println("Grow " + this.getName() ); ArrayList<Percept> allPercepts = world.getAllPercept(); for (Percept pct : allPercepts) { boolean contain = ranges.get(pct).contains(pct.getValue()) == 0 ; - ////System.out.println(pct.getName() + " " + contain); + //////System.out.println(pct.getName() + " " + contain); if (!contain) { ranges.get(pct).adapt(pct.getValue()); //ranges.get(pct).extend(pct.getValue(), pct); @@ -1920,7 +1931,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin Percept perceptWithLesserImpact = getPerceptWithLesserImpactOnVolumeNotIncludedIn2(containingRanges,bestContext); //Percept perceptWithLesserImpact = getPerceptWithLesserImpactOnVolumeNotIncludedIn2(containingRanges,bestContext); if (perceptWithLesserImpact == null) { - //System.out.println(world.getScheduler().getTick() + "shrinkRangesToJoinBordersAndDie"); + ////System.out.println(world.getScheduler().getTick() + "shrinkRangesToJoinBordersAndDie"); this.die(); }else { //ranges.get(perceptWithLesserImpact).matchBorderWithBestContext(bestContext); @@ -1951,7 +1962,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin ctxt.removeContext(this); } - //////System.out.println("DIED : " + this.getName()); + ////////System.out.println("DIED : " + this.getName()); localModel.die(); super.die(); @@ -1988,7 +1999,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin public Boolean computeValidityByPercepts() { Boolean test = true; for(Percept percept : perceptValidities.keySet()) { - //////System.out.println(percept.getName()+"--->"+perceptValidities.get(percept)); + ////////System.out.println(percept.getName()+"--->"+perceptValidities.get(percept)); test = test && perceptValidities.get(percept); } return test; @@ -2000,7 +2011,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin public Boolean computeNeighborhoodValidityByPercepts() { Boolean test = true; for(Percept percept : perceptNeighborhoodValidities.keySet()) { - //////System.out.println(percept.getName()+"--->"+perceptNeighborhoodValidities.get(percept)); + ////////System.out.println(percept.getName()+"--->"+perceptNeighborhoodValidities.get(percept)); test = test && perceptNeighborhoodValidities.get(percept); } return test; @@ -2008,6 +2019,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin public void addNonValidPercept(Percept pct) { + world.trace(new ArrayList<String>(Arrays.asList(this.getName(),pct.getName(), "NON VALID"))); nonValidPercepts.add(pct); } @@ -2058,7 +2070,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin HashMap<Percept,HashMap<String,Double>> overlapRanges = new HashMap<Percept,HashMap<String,Double>>(); for(Percept percept : ranges.keySet()) { overlapRanges.put(percept, new HashMap<String,Double>()); - ////System.out.println("CONTEXT 1" + context.getName() + " CONTEXT2" + this.getName()); + //////System.out.println("CONTEXT 1" + context.getName() + " CONTEXT2" + this.getName()); double startRange = percept.getOverlapRangesBetweenContexts(this, context).get("start"); double endRange = percept.getOverlapRangesBetweenContexts(this, context).get("end"); overlapRanges.get(percept).put("start", startRange); @@ -2175,7 +2187,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin public void computeNearestNeighbour() { - //////System.out.println("VOISINS : " + neighbours.size()); + ////////System.out.println("VOISINS : " + neighbours.size()); for(Context neighbourContext : neighbours) { @@ -2212,7 +2224,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin double perceptPosition = 0d; double perceptWidth = 0d; - //////System.out.println(context.getName() + "\n" +contextOverlapsByPerceptSave); + ////////System.out.println(context.getName() + "\n" +contextOverlapsByPerceptSave); if(contextOverlapsByPerceptSave.get(context).get(percept)) { @@ -2236,7 +2248,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin perceptWidth = ctxtEnd - thisStart; } else { - ////System.out.println("PROBLEM !!!!!!!!!!!!!!!!! Void detection" ); + //////System.out.println("PROBLEM !!!!!!!!!!!!!!!!! Void detection" ); } @@ -2261,7 +2273,7 @@ private Percept getPerceptWithLesserImpactOnVolume2(ArrayList<Percept> containin voidWidth.put(percept, perceptWidth); } else { - ////System.out.println("NO VOID !"); + //////System.out.println("NO VOID !"); noVoid = true; } } diff --git a/AMOEBA3/src/mas/agents/context/Range.java b/AMOEBA3/src/mas/agents/context/Range.java index 149cdf6da8caeddbf1a5c12366efdfab26235e1b..3aa8c068add401f5d1b6e3f2a96550476c1c8191 100644 --- a/AMOEBA3/src/mas/agents/context/Range.java +++ b/AMOEBA3/src/mas/agents/context/Range.java @@ -112,8 +112,8 @@ public class Range implements Serializable, Comparable, Cloneable { // this.AVT_deltaEnd = (end - start) * AVT_minRatio + 0.0001; this.AVT_deltaStart = getLenght() * 0.2 + 0.0001; this.AVT_deltaEnd = getLenght() * 0.2 + 0.0001; - //System.out.println(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" + "Creation" + "\t" + "START" + "\t" + AVT_deltaStart); - //System.out.println(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" + "Creation" + "\t" + "END" + "\t" + AVT_deltaEnd); + ////System.out.println(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" + "Creation" + "\t" + "START" + "\t" + AVT_deltaStart); + ////System.out.println(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" + "Creation" + "\t" + "END" + "\t" + AVT_deltaEnd); } @@ -449,10 +449,10 @@ public class Range implements Serializable, Comparable, Cloneable { //System.out.print(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" ); if (AVT_lastFeedbackStart == 1) { - //System.out.println("simulateNegativeAVTFeedbackStart :" + Math.abs(AVT_deltaStart * AVT_deceleration) + "\t" + "AVT_deltaStart : " + "\t" + AVT_deltaStart); + ////System.out.println("simulateNegativeAVTFeedbackStart :" + Math.abs(AVT_deltaStart * AVT_deceleration) + "\t" + "AVT_deltaStart : " + "\t" + AVT_deltaStart); return start + (AVT_deltaStart * AVT_deceleration); } else { - //System.out.println("simulateNegativeAVTFeedbackStart :" + Math.abs(AVT_deltaStart * AVT_acceleration) + "\t" + "AVT_deltaStart : " + "\t" + AVT_deltaStart); + ////System.out.println("simulateNegativeAVTFeedbackStart :" + Math.abs(AVT_deltaStart * AVT_acceleration) + "\t" + "AVT_deltaStart : " + "\t" + AVT_deltaStart); return start + (AVT_deltaStart * AVT_acceleration); } @@ -468,10 +468,10 @@ public class Range implements Serializable, Comparable, Cloneable { //System.out.print(world.getScheduler().getTick() + "\t" + context.getName() + "\t" + percept.getName()+ "\t" ); if (AVT_lastFeedbackEnd == 1) { - //System.out.println("simulateNegativeAVTFeedbackEnd :" + Math.abs(AVT_deltaEnd * AVT_deceleration) + "\t" + "AVT_deltaEnd : " + "\t" + AVT_deltaEnd); + ////System.out.println("simulateNegativeAVTFeedbackEnd :" + Math.abs(AVT_deltaEnd * AVT_deceleration) + "\t" + "AVT_deltaEnd : " + "\t" + AVT_deltaEnd); return end - (AVT_deltaEnd * AVT_deceleration); } else { - //System.out.println("simulateNegativeAVTFeedbackEnd :" + Math.abs(AVT_deltaEnd * AVT_acceleration) + "\t" + "AVT_deltaEnd : " + "\t" + AVT_deltaEnd); + ////System.out.println("simulateNegativeAVTFeedbackEnd :" + Math.abs(AVT_deltaEnd * AVT_acceleration) + "\t" + "AVT_deltaEnd : " + "\t" + AVT_deltaEnd); return end - (AVT_deltaEnd * AVT_acceleration); } @@ -487,7 +487,7 @@ public class Range implements Serializable, Comparable, Cloneable { */ public boolean isTooSmall() { if((end - start) < mininimalRange && (end - start)>0) { - //System.out.println("����������������������������� mininimalRange :" + mininimalRange + " ~~~ " + (end - start)); + ////System.out.println("����������������������������� mininimalRange :" + mininimalRange + " ~~~ " + (end - start)); } return (end - start) < mininimalRange && !this.isPerceptEnum(); @@ -582,13 +582,13 @@ public class Range implements Serializable, Comparable, Cloneable { } public void matchBorderWithBestContext(Context bestContext) { - //System.out.println("Match border " + percept.getName()); + ////System.out.println("Match border " + percept.getName()); Range bestContextRanges = bestContext.getRanges().get(percept); if (bestContextRanges.getStart() <= this.start && this.end <= bestContextRanges.getEnd() ) { - //System.out.println(context.getName() + " DIES"); + ////System.out.println(context.getName() + " DIES"); this.context.die(); } else { @@ -605,13 +605,13 @@ public class Range implements Serializable, Comparable, Cloneable { public void adaptTowardsBorder(Context bestContext) { - //System.out.println("Adapt towards border " + percept.getName()); + ////System.out.println("Adapt towards border " + percept.getName()); Range bestContextRanges = bestContext.getRanges().get(percept); if (bestContextRanges.getStart() <= this.start && this.end <= bestContextRanges.getEnd() ) { - //System.out.println(context.getName() + " DIES"); + ////System.out.println(context.getName() + " DIES"); this.context.die(); } else { @@ -880,7 +880,7 @@ public class Range implements Serializable, Comparable, Cloneable { public void setStart(double newStartValue) { if(context !=null && percept !=null) { - //System.out.println(context.getName() + " " + percept.getName() + " START " + (Math.abs(newStartValue-this.start))); + ////System.out.println(context.getName() + " " + percept.getName() + " START " + (Math.abs(newStartValue-this.start))); } this.start = newStartValue; if(world != null) { @@ -927,7 +927,7 @@ public class Range implements Serializable, Comparable, Cloneable { public void setEnd(double newEndValue) { if(context !=null && percept !=null ) { - //System.out.println(context.getName() + " " + percept.getName() + " END " + (Math.abs(newEndValue-this.end))); + ////System.out.println(context.getName() + " " + percept.getName() + " END " + (Math.abs(newEndValue-this.end))); } this.end = newEndValue; @@ -967,12 +967,12 @@ public class Range implements Serializable, Comparable, Cloneable { } } - this.context.updateActivatedContexts(); + this.context.updateActivatedContexts(); } } public boolean contains(Double value, Double neighborhood) { - System.out.println(context.getName() +" "+ percept.getName() + " " + value + " " + (start - neighborhood) + " " + start + " " + end + " " + (end + neighborhood)); + //System.out.println(context.getName() +" "+ percept.getName() + " " + value + " " + (start - neighborhood) + " " + start + " " + end + " " + (end + neighborhood)); return Math.abs(value - getCenter()) < (getRadius() + neighborhood ); } diff --git a/AMOEBA3/src/mas/agents/head/Head.java b/AMOEBA3/src/mas/agents/head/Head.java index 2d39d63c6e7dac040d6ff7080d04a069d391302c..205aca9489fd58482c8b047b2e8548d9d21cde04 100644 --- a/AMOEBA3/src/mas/agents/head/Head.java +++ b/AMOEBA3/src/mas/agents/head/Head.java @@ -201,12 +201,12 @@ public class Head extends AbstractHead implements Cloneable{ public void addPartiallyActivatedContext(Percept nonValidPercept,Context validContextExecptOnTheNonValidPercept) { partiallyActivatedContexts.get(nonValidPercept).add(validContextExecptOnTheNonValidPercept); - //////System.out.println(pct.getName() + " " + partialyActivatedContexts.get(pct).size()); + ////////System.out.println(pct.getName() + " " + partialyActivatedContexts.get(pct).size()); } public void addPartialRequestNeighborContext(Percept nonValidPercept,Context validContextNeighborExecptOnTheNonValidPercept) { partialNeighborContexts.get(nonValidPercept).add(validContextNeighborExecptOnTheNonValidPercept); - //////System.out.println(pct.getName() + " " + partialyActivatedContexts.get(pct).size()); + ////////System.out.println(pct.getName() + " " + partialyActivatedContexts.get(pct).size()); } /** @@ -223,7 +223,7 @@ public class Head extends AbstractHead implements Cloneable{ currentSituation.put(pct, pct.getValue()); } - ////System.out.println("HEAD ACTIVATED CONTEXT :" + activatedContexts.size()); + //////System.out.println("HEAD ACTIVATED CONTEXT :" + activatedContexts.size()); nPropositionsReceived = activatedContexts.size(); newContextWasCreated = false; setContextFromPropositionWasSelected(false); @@ -258,15 +258,18 @@ public class Head extends AbstractHead implements Cloneable{ newContext = null; - //////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Error allowded :" + errorAllowed); - //////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Inexact allowded :" + inexactAllowed); + ////////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Error allowded :" + errorAllowed); + ////////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Inexact allowded :" + inexactAllowed); } private void playWithOracle() { - //System.out.println("Activated neighbors " + activatedNeighborsContexts.size()); + System.out.println(world.getScheduler().getTick() + " ACTIVATED CONTEXTS"); + for(Context ctxt : activatedContexts) { + System.out.println("--> " + ctxt.getName()); + } if (activatedContexts.size() > 0) { selectBestContext(); //using highest confidence @@ -320,7 +323,7 @@ public class Head extends AbstractHead implements Cloneable{ noBestContext = false; prediction = bestContext.getActionProposal(); } else { - ////System.out.println("NO BEST ..."); + //////System.out.println("NO BEST ..."); noBestContext = true; ArrayList<Agent> allContexts = world.getScheduler().getContexts(); Context nearestContext = this.getNearestContext(allContexts); @@ -396,17 +399,17 @@ public class Head extends AbstractHead implements Cloneable{ Double endogenousSumTerm = 0.0; Double endogenousNormalizationTerm = 0.0; - ////System.out.println("NEIGHBORS : " + activatedNeighborsContexts.size()); + //////System.out.println("NEIGHBORS : " + activatedNeighborsContexts.size()); for(Context ctxt :activatedNeighborsContexts) { endogenousSumTerm += ctxt.getInfluenceWithConfidence(currentSituation)*ctxt.getActionProposal(); endogenousNormalizationTerm += ctxt.getInfluenceWithConfidence(currentSituation); } endogenousPredictionNContexts = endogenousSumTerm/endogenousNormalizationTerm; - ////System.out.println("ENDO PRED N CTXT : " + endogenousPredictionNContexts); + //////System.out.println("ENDO PRED N CTXT : " + endogenousPredictionNContexts); // Endogenous prediction N contexts by influence // - ////System.out.println("�~~�~~�~~�~~�~~�~~�~~�~~�~~�~~�~~~ INFLUENCES" + currentSituation); + //////System.out.println("�~~�~~�~~�~~�~~�~~�~~�~~�~~�~~�~~~ INFLUENCES" + currentSituation); maxConfidence = Double.NEGATIVE_INFINITY; minConfidence = Double.POSITIVE_INFINITY; @@ -422,10 +425,10 @@ public class Head extends AbstractHead implements Cloneable{ if(ctxt.getInfluenceWithConfidence(currentSituation)> 0.5) { contextsNeighborsByInfluence.add(ctxt); - ////System.out.println(ctxt); + //////System.out.println(ctxt); } } - ////System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" + minConfidence + " ; " + maxConfidence + ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + //////System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" + minConfidence + " ; " + maxConfidence + ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); endogenousSumTerm = 0.0; endogenousNormalizationTerm = 0.0; @@ -491,7 +494,7 @@ public class Head extends AbstractHead implements Cloneable{ //Test if there are surrounding contexts boolean testSurroudingContext = false; - //////System.out.println("SURROUNDING CONTEXTS ..."); + ////////System.out.println("SURROUNDING CONTEXTS ..."); for(Percept pct : this.world.getScheduler().getPercepts()) { computeNearestContextsByPercept(pct); @@ -514,7 +517,7 @@ public class Head extends AbstractHead implements Cloneable{ } - //////System.out.println("TEST SURROUNDING CONTEXTS ..." + testSurroudingContext); + ////////System.out.println("TEST SURROUNDING CONTEXTS ..." + testSurroudingContext); return testSurroudingContext; } @@ -527,7 +530,7 @@ public class Head extends AbstractHead implements Cloneable{ for(Context ctxt : list) { //system.out.print(ctxt.getRanges().get(prct).getRange(range) + " "); } - ////System.out.println(" "); + //////System.out.println(" "); } @@ -545,8 +548,8 @@ public class Head extends AbstractHead implements Cloneable{ if(activatedContextInOtherPercepts.size()>0) { - //////System.out.println("Partially activated on other percepts than " + pct.getName() + " : " + activatedContextInOtherPercepts.size()); - //////System.out.println("Value " + pct.getValue()); + ////////System.out.println("Partially activated on other percepts than " + pct.getName() + " : " + activatedContextInOtherPercepts.size()); + ////////System.out.println("Value " + pct.getValue()); CustomComparator rangeStartComparator = new CustomComparator(pct, "start"); Collections.sort(activatedContextInOtherPercepts, rangeStartComparator); @@ -584,7 +587,7 @@ public class Head extends AbstractHead implements Cloneable{ } } else { - //////System.out.println("====================================================="); + ////////System.out.println("====================================================="); } @@ -608,23 +611,23 @@ public class Head extends AbstractHead implements Cloneable{ public void displayPartiallyActivatedContexts() { - ////System.out.println("PARTIALLY ACTIVATED CONTEXTS"); + //////System.out.println("PARTIALLY ACTIVATED CONTEXTS"); for(Percept pct : partiallyActivatedContexts.keySet()) { //system.out.print(pct.getName() + " : "); if(partiallyActivatedContexts.get(pct).size()>0) for(Context ctxt : partiallyActivatedContexts.get(pct)) { //system.out.print(ctxt.getName() + " ; "); } - ////System.out.println(" "); + //////System.out.println(" "); } } public void displayContexts() { - ////System.out.println("CONTEXTS"); + //////System.out.println("CONTEXTS"); for(Context ctxt : this.world.getScheduler().getContextsAsContext()) { //system.out.print(ctxt.getName() + " ; "); } - ////System.out.println(" "); + //////System.out.println(" "); } private Percept getDifferentPercept(Percept p) { @@ -647,7 +650,7 @@ public class Head extends AbstractHead implements Cloneable{ } private void NCS_EndogenousCompetition() { - ////System.out.println("NCS Comptetition " + world.getScheduler().getTick()); + //////System.out.println("NCS Comptetition " + world.getScheduler().getTick()); // Creation of twin contexts to give the endogenous prediction @@ -767,7 +770,7 @@ public class Head extends AbstractHead implements Cloneable{ double contextInfluenceL = closestContexts.getL().getInfluenceWithConfidence(currentSituation); double contextInfluenceR = closestContexts.getR().getInfluenceWithConfidence(currentSituation); - ////System.out.println("--------------------------------------------------DIFFERENCE :" + compareClosestContextPairModels(closestContexts)); + //////System.out.println("--------------------------------------------------DIFFERENCE :" + compareClosestContextPairModels(closestContexts)); if(compareClosestContextPairModels(closestContexts)<10) { endogenousPredictionActivatedContextsSharedIncompetence = (contextInfluenceL*closestContexts.getL().getActionProposal() + contextInfluenceR*closestContexts.getR().getActionProposal()) / (contextInfluenceL + contextInfluenceR); @@ -822,9 +825,9 @@ public class Head extends AbstractHead implements Cloneable{ private void NCSDetection_Create_New_Context() { /*Finally, head agent check the need for a new context agent*/ - System.out.println("activatedNeighborsContexts"); + //System.out.println("activatedNeighborsContexts"); for(Context ctxt : activatedNeighborsContexts) { - System.out.println(ctxt.getName()); + //System.out.println(ctxt.getName()); } boolean newContextCreated = false; @@ -834,17 +837,17 @@ public class Head extends AbstractHead implements Cloneable{ } - System.out.println(">>>>>>> " + world.getScheduler().getTick() + " " + activatedContexts.size()); + //System.out.println(">>>>>>> " + world.getScheduler().getTick() + " " + activatedContexts.size()); if(activatedContexts.size() == 0) { - System.out.println(world.getScheduler().getTick() + " Create_New_Context"); + //System.out.println(world.getScheduler().getTick() + " Create_New_Context"); Context context; -// if(nearestGoodContext.getA() != null) { -// context = createNewContext(nearestGoodContext.getA()); -// }else { -// context = createNewContext(); -// } - context = createNewContext(); + if(nearestGoodContext.getA() != null) { + context = createNewContext(nearestGoodContext.getA()); + }else { + context = createNewContext(); + } + //context = createNewContext(); bestContext = context; @@ -863,7 +866,7 @@ public class Head extends AbstractHead implements Cloneable{ if (bestContext != null && criticity <= this.errorAllowed) { for (int i = 0 ; i < activatedContexts.size() ; i++) { if (activatedContexts.get(i) != bestContext && !activatedContexts.get(i).isDying() && this.getCriticity(activatedContexts.get(i)) <= this.errorAllowed) { - // ////System.out.println("Shrink context " + contexts.get(i).getName()); + // //////System.out.println("Shrink context " + contexts.get(i).getName()); activatedContexts.get(i).solveNCS_Concurrence(this); } } @@ -877,10 +880,10 @@ public class Head extends AbstractHead implements Cloneable{ Context c = getNearestGoodContext(allContexts); if(c!=null) { - ////System.out.println("Nearest good context : " + c.getName()); + //////System.out.println("Nearest good context : " + c.getName()); } else { - ////System.out.println("Nearest good context : null"); + //////System.out.println("Nearest good context : null"); } if (c!=null) c.solveNCS_IncompetentHead(this);; bestContext = c; @@ -898,10 +901,10 @@ public class Head extends AbstractHead implements Cloneable{ } private void selfAnalysationOfContexts() { - ////System.out.println(world.getScheduler().getTick()); + //////System.out.println(world.getScheduler().getTick()); /*All context which proposed itself must analyze its proposition*/ for (int i = 0 ; i < activatedContexts.size() ; i++) { - ////System.out.println(activatedContexts.get(i).getName()); + //////System.out.println(activatedContexts.get(i).getName()); activatedContexts.get(i).analyzeResults(this); } } @@ -1070,7 +1073,7 @@ public class Head extends AbstractHead implements Cloneable{ * @return the context */ private Context createNewContext() { - // ////System.out.println("Creation d'un nouveau contexte : " + contexts.size()); + // //////System.out.println("Creation d'un nouveau contexte : " + contexts.size()); newContextWasCreated = true; // if (contexts.size() != 0) { // System.exit(0); @@ -1090,7 +1093,7 @@ public class Head extends AbstractHead implements Cloneable{ } private Context createNewContext(Context bestNearestCtxt) { - // ////System.out.println("Creation d'un nouveau contexte : " + contexts.size()); + // //////System.out.println("Creation d'un nouveau contexte : " + contexts.size()); newContextWasCreated = true; // if (contexts.size() != 0) { // System.exit(0); @@ -1098,7 +1101,7 @@ public class Head extends AbstractHead implements Cloneable{ world.raiseNCS(NCS.CREATE_NEW_CONTEXT); Context context; if (firstContext) { - //System.out.println(bestNearestCtxt.toStringFull()); + ////System.out.println(bestNearestCtxt.toStringFull()); context = new Context(world, this, bestNearestCtxt); Config.print("new context agent", 3); } @@ -1203,7 +1206,7 @@ public class Head extends AbstractHead implements Cloneable{ - //////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Average Prediction Criticity :" + averagePredictionCriticity); + ////////System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Average Prediction Criticity :" + averagePredictionCriticity); if (averagePredictionCriticity > errorAllowed) { perfIndicator--; @@ -1220,27 +1223,27 @@ public class Head extends AbstractHead implements Cloneable{ if (perfIndicator <= nConflictBeforeAugmentation * (-1)) { perfIndicator = 0; errorAllowed *= augmentationFactorError; - //////System.out.println("���������������������� augmentationFactorError :" + augmentationFactorError); + ////////System.out.println("���������������������� augmentationFactorError :" + augmentationFactorError); } if (perfIndicator >= nSuccessBeforeDiminution) { perfIndicator = 0; errorAllowed *= diminutionFactorError; - //////System.out.println("���������������������� diminutionFactorError :" + diminutionFactorError); + ////////System.out.println("���������������������� diminutionFactorError :" + diminutionFactorError); errorAllowed = Math.max(minErrorAllowed, errorAllowed); } if (perfIndicatorInexact <= nConflictBeforeInexactAugmentation * (-1)) { perfIndicatorInexact = 0; inexactAllowed *= augmentationInexactError; - //////System.out.println("���������������������� augmentationInexactError :" + augmentationInexactError); + ////////System.out.println("���������������������� augmentationInexactError :" + augmentationInexactError); } if (perfIndicatorInexact >= nSuccessBeforeInexactDiminution) { perfIndicatorInexact = 0; inexactAllowed *= diminutionInexactError; inexactAllowed = Math.max(minInexactAllowed, inexactAllowed); - //////System.out.println("���������������������� diminutionInexactError :" + diminutionInexactError); + ////////System.out.println("���������������������� diminutionInexactError :" + diminutionInexactError); } @@ -1881,7 +1884,7 @@ public class Head extends AbstractHead implements Cloneable{ for(Percept pct : requestSurroundings.keySet()) { - //////System.out.println("REQUEST SURROUNDINGS " + requestSurroundings.get(pct).getL().getName() + " ; " + requestSurroundings.get(pct).getR().getName()); + ////////System.out.println("REQUEST SURROUNDINGS " + requestSurroundings.get(pct).getL().getName() + " ; " + requestSurroundings.get(pct).getR().getName()); if(requestSurroundings.get(pct).contains(ctxt)) { return true; } @@ -1914,7 +1917,7 @@ public class Head extends AbstractHead implements Cloneable{ public void addRequestNeighbor(Context ctxt) { if(!activatedNeighborsContexts.contains(ctxt)) { - System.out.println(world.getScheduler().getTick() + " " + ctxt.getName() + " " + "VALID NEIGHBOR"); + //System.out.println(world.getScheduler().getTick() + " " + ctxt.getName() + " " + "VALID NEIGHBOR"); activatedNeighborsContexts.add(ctxt); } } @@ -1922,6 +1925,11 @@ public class Head extends AbstractHead implements Cloneable{ public void addActivatedContext(Context ctxt) { if(!activatedContexts.contains(ctxt)) { activatedContexts.add(ctxt); + + System.out.println(world.getScheduler().getTick() + " ACTIVATED CONTEXTS"); + for(Context cxt : activatedContexts) { + System.out.println("--> " + cxt.getName()); + } } } @@ -1933,7 +1941,7 @@ public class Head extends AbstractHead implements Cloneable{ public void removeRequestNeighbor(Context ctxt) { if(activatedNeighborsContexts.contains(ctxt)) { - System.out.println(world.getScheduler().getTick() + " " + ctxt.getName() + " " + "NOT VALID NEIGHBOR ANYMORE"); + //System.out.println(world.getScheduler().getTick() + " " + ctxt.getName() + " " + "NOT VALID NEIGHBOR ANYMORE"); activatedNeighborsContexts.remove(ctxt); } } @@ -1948,7 +1956,7 @@ public class Head extends AbstractHead implements Cloneable{ public void displayActivatedNeighborsContexts() { for(Context ctxt : activatedNeighborsContexts) { - ////System.out.println(ctxt.getName()); + //////System.out.println(ctxt.getName()); } } @@ -1980,7 +1988,7 @@ public class Head extends AbstractHead implements Cloneable{ for(Context ctxt:activatedNeighborsContexts) { currentRadius = ctxt.getRanges().get(pct).distance(pct.getValue()); - System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); + //System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); if(currentRadius<maxRadius && currentRadius>0 ) { maxRadius = currentRadius; } @@ -1992,10 +2000,10 @@ public class Head extends AbstractHead implements Cloneable{ } public AbstractPair<Double,Double> getMaxRadiusesForContextCreation(Percept pct) { - //AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(pct.getRadiusContextForCreation(),pct.getRadiusContextForCreation()); - AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(Math.abs(pct.getMin()- pct.getValue()),Math.abs(pct.getMax()-pct.getValue())); + AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(pct.getRadiusContextForCreation(),pct.getRadiusContextForCreation()); + //AbstractPair<Double,Double> maxRadiuses = new AbstractPair<Double,Double>(Math.abs(pct.getMin()- pct.getValue()),Math.abs(pct.getMax()-pct.getValue())); - System.out.println("MIN MAX " + pct.getName() +" " + pct.getValue() + " < " + pct.getMin() + " , " + pct.getMax() + " > / < " + Math.abs(pct.getMin()- pct.getValue()) + " , " + Math.abs(pct.getMax()-pct.getValue()) + " >"); + //System.out.println("MIN MAX " + pct.getName() +" " + pct.getValue() + " < " + pct.getMin() + " , " + pct.getMax() + " > / < " + Math.abs(pct.getMin()- pct.getValue()) + " , " + Math.abs(pct.getMax()-pct.getValue()) + " >"); double currentStartRadius; double currentEndRadius; @@ -2007,7 +2015,7 @@ public class Head extends AbstractHead implements Cloneable{ if(ctxt.getRanges().get(pct).centerDistance(pct.getValue()) < 0) { // End radius currentEndRadius = ctxt.getRanges().get(pct).distance(pct.getValue()); - //System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); + ////System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); if(currentEndRadius < maxRadiuses.getB() && currentEndRadius > 0 ) { maxRadiuses.setB(currentEndRadius); } @@ -2016,7 +2024,7 @@ public class Head extends AbstractHead implements Cloneable{ if(ctxt.getRanges().get(pct).centerDistance(pct.getValue()) > 0) { // Start radius currentStartRadius = ctxt.getRanges().get(pct).distance(pct.getValue()); - //System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); + ////System.out.println(ctxt.getName() + " " + pct.getName() + " " + currentRadius + " " + maxRadius); if(currentStartRadius < maxRadiuses.getA() && currentStartRadius > 0 ) { maxRadiuses.setA(currentStartRadius); } diff --git a/AMOEBA3/src/mas/agents/percept/ContextProjection.java b/AMOEBA3/src/mas/agents/percept/ContextProjection.java index a4e3f871003d0010d087655e62c82e888e4c0b38..8025cbd9be13086f6f23281dbf17ed353b50a21b 100644 --- a/AMOEBA3/src/mas/agents/percept/ContextProjection.java +++ b/AMOEBA3/src/mas/agents/percept/ContextProjection.java @@ -1,6 +1,8 @@ package mas.agents.percept; import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; import mas.agents.context.Context; import mas.kernel.World; @@ -8,6 +10,8 @@ import mas.kernel.World; public class ContextProjection implements Serializable{ + World world; + private Percept percept; private Context context; @@ -24,7 +28,8 @@ public class ContextProjection implements Serializable{ } - public ContextProjection(Percept percept, Context context) { + public ContextProjection(World wrld, Percept percept, Context context) { + world = wrld; this.percept = percept; this.context = context; this.start = context.getRanges().get(this.percept).getStart(); @@ -69,11 +74,12 @@ public class ContextProjection implements Serializable{ } public boolean contains(Double value) { + world.trace(new ArrayList<String>(Arrays.asList(context.getName(),percept.getName(), ""+value, ""+(getCenter()-getRadius()), ""+ (getCenter() + getRadius())))); return Math.abs(value - getCenter()) < getRadius() ; } public boolean contains(Double value, Double neighborhood) { - System.out.println(context.getName() +" "+ percept.getName() + " " + value + " " + (start - neighborhood) + " " + start + " " + end + " " + (end + neighborhood)); + //System.out.println(context.getName() +" "+ percept.getName() + " " + value + " " + (start - neighborhood) + " " + start + " " + end + " " + (end + neighborhood)); return Math.abs(value - getCenter()) < (getRadius() + neighborhood ); } diff --git a/AMOEBA3/src/mas/agents/percept/Percept.java b/AMOEBA3/src/mas/agents/percept/Percept.java index f63f6c4d053e65fefe0eded210e8729873d7733c..d6d07a5f822080c2b9adf8330a2a45c4cd1a22c8 100644 --- a/AMOEBA3/src/mas/agents/percept/Percept.java +++ b/AMOEBA3/src/mas/agents/percept/Percept.java @@ -171,7 +171,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { oldValue = value; //value = sensor.getValue(); - //////System.out.println(this.name); + ////////System.out.println(this.name); value = this.getWorld().getScheduler().getPerceptionsOrAction(this.name); ajustMinMax(); computeContextProjectionValidity(); @@ -187,11 +187,11 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { } public void displayContextProjections() { - ////System.out.println("CONTEXT PROJECTIONS " + this.getName()); + //////System.out.println("CONTEXT PROJECTIONS " + this.getName()); for(Context ctxt : contextProjections.keySet()) { //system.out.print(ctxt.getName() + " ; "); } - ////System.out.println(" "); + //////System.out.println(" "); } public void computeContextProjectionValidity() { @@ -201,7 +201,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { for(ContextProjection contextProjection : contextProjections.values()) { - + System.out.println(contextProjection.contains(this.value)); if(!contextProjection.contains(this.value)) { contextProjection.getContext().addNonValidPercept(this); @@ -210,10 +210,10 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { //if(!contextProjection.contains(this.value, getRadiusContextForCreation())) { if(!contextProjection.contains(this.value, world.getNeighborhood(contextProjection.getContext(), this))) { - ////System.out.println(contextProjection.getContext().getName() + " " + this.getName() + " non valid"); + //////System.out.println(contextProjection.getContext().getName() + " " + this.getName() + " non valid"); contextProjection.getContext().addNonValidNeighborPercept(this); - System.out.println(world.getScheduler().getTick() + " " + contextProjection.getContext().getName() + " " + this.getName() + " " + "NON VALID" + " " + getRadiusContextForCreation()); + //System.out.println(world.getScheduler().getTick() + " " + contextProjection.getContext().getName() + " " + this.getName() + " " + "NON VALID" + " " + getRadiusContextForCreation()); } @@ -224,7 +224,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { validContextProjection.add(contextProjection.getContext()); contextProjection.getContext().setPerceptValidity(this); - //////System.out.println("Percept "+this.name+ " Context "+contextProjection.getContex().getName()); + ////////System.out.println("Percept "+this.name+ " Context "+contextProjection.getContex().getName()); } @@ -465,30 +465,30 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { */ public void displaySortedRanges() { - ////System.out.println("########### SORTED RANGES DISPLAY " + this.getName() +" ###########"); - ////System.out.println("########### START ###########"); + //////System.out.println("########### SORTED RANGES DISPLAY " + this.getName() +" ###########"); + //////System.out.println("########### START ###########"); for(Context cntxt : this.sortedRanges.get("start")) { - ////System.out.println(cntxt.getRanges().get(this).getStart()); + //////System.out.println(cntxt.getRanges().get(this).getStart()); } - ////System.out.println("########### END ###########"); + //////System.out.println("########### END ###########"); for(Context cntxt : this.sortedRanges.get("end")) { - ////System.out.println(cntxt.getRanges().get(this).getEnd()); + //////System.out.println(cntxt.getRanges().get(this).getEnd()); } } public void displaySortedRangesTreeSet() { - ////System.out.println("########### SORTED RANGES DISPLAY TREE " + this.getName() +" ###########"); - ////System.out.println(sortedContextbyStartRanges.size()+ " " + sortedContextbyEndRanges.size()); - ////System.out.println("########### START ###########"); + //////System.out.println("########### SORTED RANGES DISPLAY TREE " + this.getName() +" ###########"); + //////System.out.println(sortedContextbyStartRanges.size()+ " " + sortedContextbyEndRanges.size()); + //////System.out.println("########### START ###########"); for(Context ctxt: sortedContextbyStartRanges) { - ////System.out.println(ctxt.getRanges().get(this).getStart()); + //////System.out.println(ctxt.getRanges().get(this).getStart()); } - ////System.out.println("########### END ###########"); + //////System.out.println("########### END ###########"); for(Context ctxt: sortedContextbyEndRanges) { - ////System.out.println(ctxt.getRanges().get(this).getEnd()); + //////System.out.println(ctxt.getRanges().get(this).getEnd()); } } @@ -572,7 +572,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { private void swapListElements(ArrayList<Context> list, int indexFirstElement) { try { list.add(indexFirstElement, list.get(indexFirstElement+1)); - //////System.out.println(list); + ////////System.out.println(list); list.remove(indexFirstElement+2); } catch (OutOfRangeException e) { // TODO: handle exception @@ -598,8 +598,8 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { //displaySortedRanges(); //displaySortedRangesTreeSet(); - //////System.out.println("----------------------AUTO PRINT"); - //////System.out.println(sortedEndRanges.size()+ " " + sortedStartRanges); + ////////System.out.println("----------------------AUTO PRINT"); + ////////System.out.println(sortedEndRanges.size()+ " " + sortedStartRanges); } private void insertContextInSortedRanges(Context context, String range) { @@ -637,7 +637,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { public void addContextProjection(Context context) { - ContextProjection newContextProjection = new ContextProjection(this, context); + ContextProjection newContextProjection = new ContextProjection(world, this, context); contextProjections.put(context, newContextProjection); @@ -650,18 +650,18 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { public void deleteContextProjection(Context context) { contextProjections.remove(context); - ////System.out.println("DELETION ------------------------------------------------------------------------------------------------------" + world.getScheduler().getTick()); - ////System.out.println(context.getName()); + //////System.out.println("DELETION ------------------------------------------------------------------------------------------------------" + world.getScheduler().getTick()); + //////System.out.println(context.getName()); displayContextProjections(); - ////System.out.println("----------------------------------------------------------------------------------------------------------------"); + //////System.out.println("----------------------------------------------------------------------------------------------------------------"); } public void updateContextProjectionStart(Context context) { - ////System.out.println(context.getName()); - ////System.out.println(contextProjections.get(context)); - ////System.out.println(contextProjections.size() + " " + world.getScheduler().getContextsAsContext().size()); + //////System.out.println(context.getName()); + //////System.out.println(contextProjections.get(context)); + //////System.out.println(contextProjections.size() + " " + world.getScheduler().getContextsAsContext().size()); if(!context.isDying()) { contextProjections.get(context).updateStart(); } @@ -720,7 +720,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { double contextStart2 = getStartRangeProjection(context2); double contextEnd1 = getEndRangeProjection(context1); double contextEnd2 = getEndRangeProjection(context2); - //////System.out.println(context1.getName() + " " + contextStart1 + " " + contextEnd1 + " " + context2.getName() + " " + contextStart2 + " " + contextEnd2); + ////////System.out.println(context1.getName() + " " + contextStart1 + " " + contextEnd1 + " " + context2.getName() + " " + contextStart2 + " " + contextEnd2); return ( (contextStart1< contextStart2 && contextStart2 <contextEnd1) || ((contextStart1< contextEnd2 && contextEnd2 <contextEnd1)) ) || ( (contextStart2< contextStart1 && contextStart1 <contextEnd2) || ((contextStart2< contextEnd1 && contextEnd1 <contextEnd2)) ) ; } @@ -767,7 +767,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { overlapRanges.put("end", getEndRangeProjection(context2)); } else { - //////System.out.println("PROBLEM !!!!!!!!!!!!!!!!! " + context1.getName() + " " + getStartRangeProjection(context1) + " " + getEndRangeProjection(context1) + " " + context2.getName() + " " + getStartRangeProjection(context2) + " " + getEndRangeProjection(context2)); + ////////System.out.println("PROBLEM !!!!!!!!!!!!!!!!! " + context1.getName() + " " + getStartRangeProjection(context1) + " " + getEndRangeProjection(context1) + " " + context2.getName() + " " + getStartRangeProjection(context2) + " " + getEndRangeProjection(context2)); overlapRanges.put("start", -1.0); overlapRanges.put("end", 1.0); //return null; @@ -800,6 +800,7 @@ public class Percept extends SystemAgent implements Serializable,Cloneable { } public double getRadiusContextForCreation() { + //return 200*world.getContextCreationPercentage(); return getMinMaxDistance()*world.getContextCreationPercentage(); } } diff --git a/AMOEBA3/src/mas/kernel/AMOEBA.java b/AMOEBA3/src/mas/kernel/AMOEBA.java index 6caf1c133438096f57acd7020452ee2375c320d7..153b07074fc2dba1285f71b9e36df7d08fb1be4e 100644 --- a/AMOEBA3/src/mas/kernel/AMOEBA.java +++ b/AMOEBA3/src/mas/kernel/AMOEBA.java @@ -45,6 +45,9 @@ public class AMOEBA extends Thread { private boolean viewer = true; private boolean csv = true; + public int temporisation; + public boolean manual = false; + //private HashMap<String,Output> perceptionsAndActionState = new HashMap<String,Output>(); @@ -499,13 +502,13 @@ public class AMOEBA extends Thread { public void PAUSE(String message) { System.out.println(message); - if(!isRunning()) { + if(!isRunning() && manual == false) { while(!getPlayOneStep()) { scheduler.scheduledItemsAndView(); try { - Thread.sleep(100); + Thread.sleep(200); } catch(InterruptedException ex) { @@ -515,6 +518,16 @@ public class AMOEBA extends Thread { } setPlayOneStep(false); } + else { +// try +// { +// Thread.sleep(1000); +// } +// catch(InterruptedException ex) +// { +// Thread.currentThread().interrupt(); +// } + } } diff --git a/AMOEBA3/src/mas/kernel/Scheduler.java b/AMOEBA3/src/mas/kernel/Scheduler.java index d5b5327dcb90e41a118589a4750612ee1d28e988..5e4de55a486bae94de19b5917ab9643e4a7d3365 100644 --- a/AMOEBA3/src/mas/kernel/Scheduler.java +++ b/AMOEBA3/src/mas/kernel/Scheduler.java @@ -357,6 +357,7 @@ public class Scheduler implements Serializable{ for(Context ctxt : getContextsAsContext()) { ctxt.clearNonValidPerceptNeighbors(); + ctxt.clearNonValidPercepts(); } diff --git a/AMOEBA3/src/mas/kernel/World.java b/AMOEBA3/src/mas/kernel/World.java index 8400c2b859b73ec617767b861d95ef09720f67b6..53971867b08e0c650c2552fa727f8c4b1aa4f417 100644 --- a/AMOEBA3/src/mas/kernel/World.java +++ b/AMOEBA3/src/mas/kernel/World.java @@ -77,12 +77,12 @@ public class World implements Serializable { //BUREAU - private int xGraphSize = 1600; - private int yGraphSize = 800; +// private int xGraphSize = 1600; +// private int yGraphSize = 800; //REUNION -// private int xGraphSize = 1200; -// private int yGraphSize = 600; + private int xGraphSize = 1200; + private int yGraphSize = 600; public double increment_up = 0.05; public double increment_down = 0.05; @@ -99,6 +99,14 @@ public class World implements Serializable { return contextCreationPercentage; } + public void trace(ArrayList<String> infos) { + String message = "" +this.getScheduler().getTick(); + for(String info : infos) { + message += " " + info; + } + System.out.println(message); + } + /** * Instantiates a new world. * @@ -875,8 +883,8 @@ public class World implements Serializable { } public double getNeighborhood(Context ctxt, Percept pct) { - return 2*ctxt.getRanges().get(pct).getRadius(); - + //return 2*ctxt.getRanges().get(pct).getRadius(); + return pct.getRadiusContextForCreation(); } } diff --git a/AMOEBA3/src/visualization/view/system/MainPanel.java b/AMOEBA3/src/visualization/view/system/MainPanel.java index 49b2c9507983c2a69105f1e285f6108022a32ed3..ec57ab1faceb231d83146e0ddaab1de823f69768 100644 --- a/AMOEBA3/src/visualization/view/system/MainPanel.java +++ b/AMOEBA3/src/visualization/view/system/MainPanel.java @@ -14,9 +14,12 @@ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.JSlider; import javax.swing.JToolBar; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.filechooser.FileNameExtensionFilter; import mas.kernel.AMOEBA; @@ -113,6 +116,14 @@ public class MainPanel extends JPanel{ /** The first get value check box. */ private boolean firstGetValueCheckBox = false; + static final int SPEED_MIN = 0; + static final int SPEED_MAX = 2000; + static final int SPEED_INIT = 200; //initial frames per second + + private JSlider simulationSpeedSlider; + + public int speed=200; + /** * Instantiates a new main panel. * @@ -274,6 +285,32 @@ public class MainPanel extends JPanel{ rememberStateCheckBox.setSelected(false); toolBar.add(rememberStateCheckBox); + + simulationSpeedSlider = new JSlider(JSlider.HORIZONTAL, + SPEED_MIN, SPEED_MAX, SPEED_INIT); + + class SliderListener implements ChangeListener { + public void stateChanged(ChangeEvent e) { + JSlider source = (JSlider)e.getSource(); + if (!source.getValueIsAdjusting()) { + speed = (int)source.getValue()+1; + world.getAmoeba().temporisation = (int)source.getValue()+1; + + } + } + } + + simulationSpeedSlider.addChangeListener(new SliderListener()); + + + + //Turn on labels at major tick marks. + simulationSpeedSlider.setMajorTickSpacing(500); + simulationSpeedSlider.setMinorTickSpacing(100); + simulationSpeedSlider.setPaintTicks(true); + simulationSpeedSlider.setPaintLabels(true); + + toolBar.add(simulationSpeedSlider); } diff --git a/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelNCSMemories.java b/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelNCSMemories.java index f52d4a4a85553febd6bc99f45822e4a9b1c36892..b53285c732a7e3cb78e9bc91b9d5d65d86877721 100644 --- a/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelNCSMemories.java +++ b/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelNCSMemories.java @@ -407,13 +407,13 @@ public class GrapheTwoDimPanelNCSMemories extends JPanel implements ViewerListen for (Context ctxt : ncsMemory.getContexts()) { - drawContexts(ctxt, 150); + drawContexts(ctxt, 200); } for (Context ctxt : ncsMemory.getPartiallyActivatedContexts()) { - drawContexts(ctxt, 150); + drawContexts(ctxt, 50); } diff --git a/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelStandard.java b/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelStandard.java index c4e51abc55cc8d2364e2f059a9c8812872d67380..f5f935496069f9515a2e895e44e081ab6686041d 100644 --- a/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelStandard.java +++ b/AMOEBA3/src/visualization/view/system/twoDim/GrapheTwoDimPanelStandard.java @@ -1170,7 +1170,28 @@ private void startPanelController() { node.addAttribute("EXIST", true); node.setAttribute("xyz", ((Percept)(world.getAgents().get(comboDimX.getSelectedItem()))).getValue(), ((Percept)(world.getAgents().get(comboDimY.getSelectedItem()))).getValue(), 0); + node.addAttribute("ui.style", "size: " + doubleFormat.format(1) + "gu, " + doubleFormat.format(10) +"gu;"); + node.addAttribute("ui.class","RGBAColor"); + + node.addAttribute("ui.style", "fill-color: rgba(0,255,0,255);"); + Node node2; + if (graph.getNode(name+"2") != null) { + node2 = graph.getNode(name+"2"); + node2.addAttribute("ui.label", ((Percept)(world.getAgents().get(comboDimX.getSelectedItem()))).getValue() + " , " + ((Percept)(world.getAgents().get(comboDimY.getSelectedItem()))).getValue()); + + } else { + graph.addNode(name+"2"); + node2 = graph.getNode(name+"2"); + node2.addAttribute("ui.class", "Center"); + } + + node2.addAttribute("EXIST", true); + node2.setAttribute("xyz", ((Percept)(world.getAgents().get(comboDimX.getSelectedItem()))).getValue(), ((Percept)(world.getAgents().get(comboDimY.getSelectedItem()))).getValue(), 0); + node2.addAttribute("ui.style", "size: " + doubleFormat.format(10) + "gu, " + doubleFormat.format(1) +"gu;"); + node2.addAttribute("ui.class","RGBAColor"); + + node2.addAttribute("ui.style", "fill-color: rgba(0,255,0,255);"); } } @@ -1343,9 +1364,9 @@ private void startPanelController() { node.addAttribute("ui.style", "fill-color: rgba(255,0,255,200);"); } // - if(world.getScheduler().getHeadAgent().getActivatedContexts().contains(n)) { - node.addAttribute("ui.style", "fill-color: rgba(255,0,0,200);"); - } +// if(world.getScheduler().getHeadAgent().getActivatedContexts().contains(n)) { +// node.addAttribute("ui.style", "fill-color: rgba(255,0,127,200);"); +// } }