9.1 Fisheries Science

Fisheries science applies ecological and oceanographic knowledge to manage fish populations sustainably. With global fish stocks under pressure, this field is crucial for food security and marine conservation.

Stock Assessment

\( \frac{dB}{dt} = G(B) - C \)

Biomass change = Growth - Catch. Goal: Maximum Sustainable Yield (MSY).

Overfished

~34% of stocks. Fishing mortality too high. Biomass below MSY.

Sustainably Fished

~60% of stocks. At or near MSY level.

Global Fisheries

~90 Mt/yr

Wild capture

~80 Mt/yr

Aquaculture

~$400B/yr

Industry value

Management Tools

Catch Limits (TAC)

Total Allowable Catch set based on stock assessments. Divided into quotas.

Marine Protected Areas

No-take zones for stock recovery. Spillover benefits adjacent areas.

Gear Restrictions

Mesh size, gear type regulations to reduce bycatch and juvenile mortality.

Python: Schaefer Model

#!/usr/bin/env python3
"""fisheries.py - Simple stock assessment model"""
import numpy as np
import matplotlib.pyplot as plt

def schaefer_model(B, r, K, C):
    """
    Schaefer surplus production model
    B: biomass, r: intrinsic growth rate
    K: carrying capacity, C: catch
    """
    return r * B * (1 - B/K) - C

def find_msy(r, K):
    """Maximum Sustainable Yield"""
    B_msy = K / 2
    MSY = r * K / 4
    return B_msy, MSY

# Parameters
r = 0.3   # growth rate
K = 1000  # carrying capacity (tonnes)
B_msy, MSY = find_msy(r, K)

# Simulate fishing at different catch rates
B0 = K  # Start at carrying capacity
years = 50
catch_rates = [0, MSY/2, MSY, MSY*1.5]

plt.figure(figsize=(10, 6))

for C in catch_rates:
    B = np.zeros(years)
    B[0] = B0
    for t in range(1, years):
        dB = schaefer_model(B[t-1], r, K, C)
        B[t] = max(B[t-1] + dB, 0)

    plt.plot(range(years), B, lw=2, label=f'Catch = {C:.0f} t/yr')

plt.axhline(B_msy, color='red', linestyle='--', alpha=0.5, label=f'B_MSY = {B_msy:.0f}')
plt.xlabel('Year')
plt.ylabel('Biomass (tonnes)')
plt.title('Fish Stock Dynamics')
plt.legend()
plt.grid(True, alpha=0.3)

print(f"MSY = {MSY:.0f} tonnes/year at B = {B_msy:.0f} tonnes")