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