Sardine school - 2D top view

Every fish copies the average heading of its neighbours, plus some noise. Turn the noise up and the school dissolves.

Switch to 3D

Presets

Playback

School and predator

Drag inside the tank to steer the predator by hand; release to let it hunt on its own.

Noise sweep

Measures the polarisation for nine noise levels with the predator switched off.

Model checks

The science

The Vicsek model

N point-like fish move at constant speed v0. Each step a fish looks at all fish within the radius r (itself included) and takes the average of their headings, then adds a random angle ξ drawn uniformly from [-η/2, η/2]: θi(t+1) = arg(∑j∈r eiθj) + ξi, and xi(t+1) = xi(t) + v0 eiθi(t+1). The order parameter is the polarisation φ = |∑ eiθj| / N, equal to 1 for a perfectly aligned school and about 0.89/√N for random headings. Vicsek and co-workers (1995) found a genuine transition at a critical noise that depends on the density N/L².

Predator

A predator of speed vp steers towards the nearest fish and eats it inside the catch radius; the eaten fish is replaced at a random place so N stays fixed. Fish inside the fear radius add an escape vector pointing away from the predator to their average heading. This is an ad-hoc rule in the spirit of the Couzin and Reynolds models, not a measured hydrodynamic response.

Nearest-neighbour check

For N independent random points with density ρ the nearest-neighbour distance has the Poisson distribution P(d) = 2π ρ d e-π ρ d² with mean 1/(2√ρ). A school is more clustered or more evenly spaced than that, which the third graph shows.

Honest simplifications: a periodic 2D box, point fish with no body length, no hydrodynamics, no depth, no cohesion or repulsion force (the Vicsek model aligns but does not bind: a school here is a travelling band, not a ball), and the numbers are for finite N and so smooth the transition.

What to try
  • Start at noise 0.3 and raise it slowly: the polarisation graph drops from near 1 to near 0.
  • Run the noise sweep to get the whole transition curve in a few seconds.
  • Switch the predator on with low noise and see how the school splits and rejoins.
  • Increase the school size: the disordered polarisation floor falls as 1/sqrt(N).
Polarisation over time (1 = perfectly aligned)
Polarisation vs noise (sweep, predator off)
Nearest-neighbour distance vs random (Poisson) fish