From b5bcd41adde6cbc2937602c9615f1a5cc321ca52 Mon Sep 17 00:00:00 2001 From: Alexandre <alexandre.perles@gmail.com> Date: Mon, 4 Sep 2023 13:30:14 +0200 Subject: [PATCH] Fix poll new data condition --- .../irit/smac/amas4dc/amas/DynamicClusteringAMAS.java | 10 +++++----- .../irit/smac/amas4dc/amas/agent/DataPointAgent.java | 4 ++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/fr/irit/smac/amas4dc/amas/DynamicClusteringAMAS.java b/src/main/java/fr/irit/smac/amas4dc/amas/DynamicClusteringAMAS.java index a1e3aa2..680929a 100644 --- a/src/main/java/fr/irit/smac/amas4dc/amas/DynamicClusteringAMAS.java +++ b/src/main/java/fr/irit/smac/amas4dc/amas/DynamicClusteringAMAS.java @@ -27,15 +27,16 @@ public class DynamicClusteringAMAS<T extends DataPoint> extends Amas<DynamicClus protected void onSystemCycleBegin() { if (logger.isLoggable(Level.INFO)) logger.info("---- BEGIN MAS CYCLE ----"); - if (agents.isEmpty() || allAgentsAreDormant()) { + if (agents.isEmpty() || allAgentsAreReadyToStop()) { var newDataPoint = environment.pollPendingDataPoint(); newDataPoint.ifPresent(dataPoint -> new DataPointAgent<T>(this, dataPoint)); } } - private boolean allAgentsAreDormant() { + private boolean allAgentsAreReadyToStop() { return agents.stream() - .noneMatch(agent -> agent instanceof ClusterAgent clusterAgent && !clusterAgent.readyToStop()); + .noneMatch(agent -> (agent instanceof ClusterAgent clusterAgent && !clusterAgent.readyToStop()) || + (agent instanceof DataPointAgent dataPointAgent && !dataPointAgent.readyToStop())); } @Override @@ -49,7 +50,6 @@ public class DynamicClusteringAMAS<T extends DataPoint> extends Amas<DynamicClus @Override public boolean stopCondition() { return !environment.hasRemainingPendingAdditionDataPoints() && - agents.stream().noneMatch(agent -> agent instanceof ClusterAgent clusterAgent && !clusterAgent.readyToStop()) && - agents.stream().noneMatch(agent -> agent instanceof DataPointAgent); + allAgentsAreReadyToStop(); } } diff --git a/src/main/java/fr/irit/smac/amas4dc/amas/agent/DataPointAgent.java b/src/main/java/fr/irit/smac/amas4dc/amas/agent/DataPointAgent.java index c331a3f..aeca5e0 100644 --- a/src/main/java/fr/irit/smac/amas4dc/amas/agent/DataPointAgent.java +++ b/src/main/java/fr/irit/smac/amas4dc/amas/agent/DataPointAgent.java @@ -142,6 +142,10 @@ public class DataPointAgent<T extends DataPoint> extends Agent<DynamicClustering } } + public boolean readyToStop() { + return false; + } + private record ClusterSimilarityScore<T extends DataPoint>(Cluster<T> cluster, float score) { -- GitLab