{{ message }}

# benmaier / couzinswarm Public

Simulating fish swarming behavior using the model by Iain Couzin et al.

Switch branches/tags
Nothing to show

## Files

Failed to load latest commit information.
Type
Name
Commit time

# couzinswarm

Simulate fish swarming behavior with the model by Iain Couzin et al. Use with caution as I can't seem to replicate some behavior (e.g. the torus swarming).

## Example

```from couzinswarm import Swarm

swarm = Swarm()
r, v = swarm.simulate(1000)```

## Install

``````pip install couzinswarm
``````

## Elaborate example

```import numpy as np
import matplotlib.pyplot as pl
from mpl_toolkits.mplot3d import Axes3D
from couzinswarm import Swarm

# note: the dimension of space is measure in fish length,
# such that r = 1 means a length of one fish

swarm = Swarm(
number_of_fish=20,
orientation_width=10,
attraction_width=10,
# this angle is given in radians
# up to np.pi (not 360 degrees as in
# the paper)
angle_of_perception=np.pi,
# radians per unit of time
turning_rate=0.1,
# fish lengths per unit of time
speed=0.1,
# in units of fish length
noise_sigma=0.1,
dt=0.1,
# geometry of box
box_lengths=[100,100,100],
# boundary conditions
reflect_at_boundary = [True, True, True],
verbose=False,
)

fig = pl.figure()

N_t = 1000

t = np.arange(N_t+1)

# Note that r.shape = v.shape = ( N_fish, N_t+1, 3 )
positions, directions = swarm.simulate(N_t)
r, v = positions, directions

for i in range(swarm.number_of_fish):
ax.plot(r[i,:,0], r[i,:,1], r[i,:,2])

pl.show()```

Simulating fish swarming behavior using the model by Iain Couzin et al.