Study Case: Swarm of Swimmers

Environment for artificial swimmers, described by the StefanFish class (see _deps/CUP-3D/Obstacles/Stefanfish{.cpp,.h}).

The state is given the relative position \(\Delta x, \Delta y\) to the obstacle, the orientation \(\theta\), the phase \(\phi\), the speed \(u,v\) and angular velocity \(\omega\), the time of the last action \(t_{act}\) and previous two baseline curvatures \(C_{-1},C_{-2}\).

The action is given by modifying the baseline curvature \(C_0\) and the swimming period \(T\).

The reward is given by the (Froude) swimming efficiency \(\eta\).


The setup is described in the file.

Running the code

The application is launched locally (or on an interactive node on Piz Daint) using


If you are ready for production you can submitt a job to the batch-system using


Here you can change the number of environments for the solver with NWORKER and the number of ranks per worker via NRANKS.