Management strategy evaluation for the Indian Ocean skipjack tuna fishery
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
parameters Update catches for 2013 and 2014 Apr 15, 2016
.gitignore Update .gitignore Mar 26, 2016
Makefile Add link to final report Oct 11, 2017
data.hpp Revert to 3 region model. Closes #16 Oct 27, 2015
distributions.hpp Fix lognormal distribution random number generation Oct 19, 2015
imports.hpp Change distributions for some parameter priors Oct 15, 2015
model.hpp Update years for which effort catchbility is nominally set at 100 Apr 15, 2016
performance.hpp Adds additional perf stats, including freq of management control changes Apr 17, 2016
variable.hpp Make const method Oct 16, 2015

Indian Ocean skipjack tuna model

Travis CI build GitHub issues

The Indian Ocean Tuna Commission's (IOTC) Working Party on Methods' (WPM) simulation model of the Indian Ocean skipjack (SKJ) tuna fishery for the evaluation of management procedures (MP).

Skipjack tuna (Katsuwonus pelamis)


The following document the model structure and code,

  • doxygen : C++ code documentation generated by Doxygen


Several reports associated with this project are available (in reverse chronological order):


This work has been funded by the International Pole and Line Foundation (IPNLF), the Maldives Seafood Processors and Exporters Association (MSPEA), the Areas Beyond National Jurisdiction (ABNJ aka Common Oceans) Program and WWF with support and oversignt of the Maldives Marine Research Centre (MRC). Support for the project's Advisory Committee has been provided by the International Seafood Sustainability Foundation (ISSF).


The model is still under active development. As the model matures we hope to make it available as precompiled executables for Windows and Linux and/or a package for R.

Automated builds are done on Travis CI when changes are pushed to this repository.


To run the executable, ioskj.exe, supply a task name and, for certain tasks, additional arguments,

./ioskj.exe <task> [<arg1>],[<arg2>]...

Tasks include,

  • run
  • priors
  • feasible <trials>
  • evaluate <replicates>

For example, to evaluate the defined set of management procedures using 1000 replicates run,

./ioskj.exe evaluate 1000


The project Makefile includes a task (make requires) which will download and compile required C++ libraries. Use make compile to compile a production version of the executable.

On most Linux systems you should have the required build tools installed already and can just run:

make requires compile

On Windows, the recommended approach is to build using MSYS2 and MinGW64:

  1. Download and install MYSYS2 following the instructions at

  2. Open the MYSY2 shell and install build tools:

    pacman -S make mingw-w64-x86_64-toolchain zip
  3. Open the MinGW64 shell and run:

    make requires compile

To build a debug version of the executable for use with GDB run,

make debug

To update all documentation run,

make docs

To publish documentation to run,

make publish


The C++ code is divided into several files:

  • imports.hpp - #includes to import classes and functions from external libraries
  • dimensions.hpp - defines the dimensions used in various model arrays e.g. Region, Age, Method
  • model.hpp - contains the Model class which specifies the structure and dynamics of the fishery
  • parameters.hpp - contains the Parameters class which defines the parameters and their priors used for model conditioning
  • data.hpp - contains the Data class which defines the data sets and their likelihoods used for model conditioning
  • ioskj.cpp - the primary C++ file for compiling the executable
  • tests.cpp - unit tests of the C++ code

Some of these files have corresponding folders,

  • parameters : R scripts for background analyses for developing model prior probability distributions.
  • data : R and Python scripts for processing source data. See the documentation in those files for more details.

In addition there is a folder related to documentation,

  • doxygen : a Doxygen project for automatically generating documentation from C++ source code.