def computeNeighborhood(p, setPoints, typeDistance, minPoints, eps): pointsOfCluster = [] for q in setPoints: if typeDistance == 0: if p.is_in_neighborhoodByEUSimple(q, eps): pointsOfCluster.append(q) elif typeDistance == 1: if p.is_in_neighborhoodEURelativeSpeed(q, eps): pointsOfCluster.append(q) if len(pointsOfCluster) < minPoints: return None else: return Cluster(None, pointsOfCluster)
def dbscan(setPoints, eps, minPoints): clusters = [] noises = [] IDs = [] classifications = {} for pt in setPoints: IDs.append(pt.id) classifications[pt.id] = 0 for pt in setPoints: if classifications[pt.id] == 0: points = _expand_cluster(setPoints, pt, classifications, noises, eps, minPoints) if points: clusters.append(Cluster(None, points)) # s="" # for p in noises: # s+=p.toString()+' ' # print(s) # s="" # for c in clusters: # s += c.toString()+'\n' # print(s) return [clusters, noises, IDs]
import sys sys.path.append("../src") from simulator import Simulator from model import Cluster #import stacktracer #stacktracer.trace_start("trace.html",interval=5,auto=True) # Set auto flag to always update file! model = Cluster(2) sim = Simulator(model) sim.setVerbose(None) #sim.setTerminationTime(10.0) sim.setStateSaving("custom") sim.simulate()