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")