diff --git a/src/main/java/fr/irit/smac/amas4dc/amas/agent/ClusterAgent.java b/src/main/java/fr/irit/smac/amas4dc/amas/agent/ClusterAgent.java index 2162b40f8edc87d7221458ac06a96b2eaa3d5da7..39619e0a6d8f689d98bd283c742fe2e246169d74 100644 --- a/src/main/java/fr/irit/smac/amas4dc/amas/agent/ClusterAgent.java +++ b/src/main/java/fr/irit/smac/amas4dc/amas/agent/ClusterAgent.java @@ -46,6 +46,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<DynamicClusteringAM else cluster = new Cluster<T>(dataPoint); amas.getMasSettings().database().add(cluster.getRepresentative()); + getAmas().getEnvironment().assignToBucket(cluster.getRepresentative().getBucketId(), this); } public enum State {DORMANT, WAITING_FOR_DISTANCE, DEAD} @@ -222,6 +223,8 @@ public class ClusterAgent<T extends DataPoint> extends Agent<DynamicClusteringAM if (getAmas().getMasSettings().amasOptions().contains(AMASOption.KeepAllDataPoints)) ((ExtendedCluster<T>) cluster).addClusterContent((ExtendedCluster<T>) otherCluster); + else + cluster.addClusterContent(otherCluster); } @@ -229,6 +232,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<DynamicClusteringAM protected void onDestroy() { nextState = State.DEAD; amas.getMasSettings().database().remove(cluster.getRepresentative()); + getAmas().getEnvironment().removeFromBucket(cluster.getRepresentative().getBucketId(), this); } diff --git a/src/main/java/fr/irit/smac/amas4dc/cluster/Cluster.java b/src/main/java/fr/irit/smac/amas4dc/cluster/Cluster.java index b4b075321371015c94c38d72dee7f6479a88de2a..30a5db52a21e1048c6a8db195ce60bc972720277 100644 --- a/src/main/java/fr/irit/smac/amas4dc/cluster/Cluster.java +++ b/src/main/java/fr/irit/smac/amas4dc/cluster/Cluster.java @@ -22,9 +22,13 @@ public class Cluster<T extends DataPoint> { this.representative = representative; this.size = 1; } + public void addDataPoint(T dataPoint) { size++; } + public void addClusterContent(Cluster<T> otherCluster) { + size += otherCluster.size; + } }