Lokta Volterra Fishery Problem

Tong Zhao
2 min readJan 12, 2021

In a previous post, the original species competition model of Lokta Volterra was discussed:

Here in this post, a more specific variant example is illustrated: the fishery problem. The problem goes like this:

There’s a pond capable of sustaining 1000 fish, the fisherman is figuring out a sustainable fishing routine that would maximize the yield over a period of time. Without fishing, the natural growth of fish population follows:

Now putting the fisherman into the picture, catching U (fish/day):

The objective of maximizing yield becomes an optimal control problem of maximizing the yield over (say) 200 days, with the sampling time at Ts=0.2 days:

Notice that we replaced N with x to represent fish population, since x is usually used for state variable in optimal control problems(OCP). This OCP also has constraints on keeping a minimum of 750 fish at the end, and a starting population of 250 fish.

This OCP could be solved using a Dynamic Programming(DP) toolbox (available from ETH in the link below)

The optimal solution is illustrated in the figure below. The optimal strategy turns out to be: no fishing until fish population reaches 500, then fish 5 fish per 0.2 days (or 25 fish per day) until a certain day (day 145), then stop fishing again untill the 200th day to allow fish population to grow back above 750.

The optimal control law map from DP, illustrating optimal control action for every state, the black line is the optimal state trajectory for x0=250 (Figure from [1])

The Lokta Volterra fishery problem solution showed the pattern of so called “bang-bang” control, where the control variable takes either maximum or minimum value depending on conditions.


[1]O. Sundstrom and L. Guzzella, “A generic dynamic programming Matlab function,” 2009 IEEE Control Applications, (CCA) & Intelligent Control, (ISIC), St. Petersburg, 2009, pp. 1625–1630, doi: 10.1109/CCA.2009.5281131.

Tong Zhao