Fish Pop. & Effort
250
200
150
100
50
Time
50 100 150 200 250 300
Figure 7.28. Interaction between fish population and effort when r=0.03, L=4500,
v=0.0004, a=0.0002, p=10000, and c=300.
Phase-plane analysis
r=0.03; L=1500; v=0.0004; a=0.0002; p=10000; c=300;
eq1=P’[t]==r P[t] (1-P[t]/L) - v Ef[t] P[t];
eq2= Ef’[t]==a Ef[t] (p v P[t] - c);
eq3=NDSolve [{eq1, eq2, P[0]==100, Ef[0]==10}, {P, Ef}, {t,0,3000}, MaxSteps ->2000];
g21=ParametricPlot[{P[t], Ef[t]} /. eq3, {t,0,3000}, Compiled->False, AxesLabel->{“Fish
Pop.”,”Effort”}]
Effort
200
150
100
50
Fish Pop.
25 50 75 100 125 150 175
Figure 7.29. Phase-plane analysis between fish population and effort when r=0.03,
L=1500, v=0.0004, a=0.0002, p=10000, and c=300.
Sustainability and Design for the Environment 197
r=0.03; L=4500; v=0.0004; a=0.0002; p=10000; c=300;
eq1=P’[t]==r P[t] (1-P[t]/L) - v Ef[t] P[t];
eq2= Ef’[t]==a Ef[t] (p v P[t] - c);
eq3=NDSolve [{eq1, eq2, P[0]==100, Ef[0]==10}, {P, Ef}, {t,0,3000}, MaxSteps ->2000];
g22=ParametricPlot[{P[t], Ef[t]} /. eq3, {t,0,3000}, Compiled->False, AxesLabel->{“Fish
Pop.”,”Effort”}]
Effort
250
200
150
100
50
Fish Pop.
25 50 75 100 125 150 175
Figure 7.30. Phase-plane analysis between fish population and effort when r=0.03,
L=4500, v=0.0004, a=0.0002, p=10000, and c=300.
Show[g4,g21,g22]
Effort
250
200
150
100
50
Fish Pop.
25 50 75 100 125 150 175
Figure 7.31. Phase-plane combination between fish population and effort when
L=1500, L=3000, band L=4500.
198 Sustainability and Design for the Environment
7.3 Sustainable Harvesting of Two Interacting
Populations
Consider the predator-prey relationship of the Microtus voles (as prey) and the
least weasel (as predator), in Chapter 4. The following parameters were defined:
the annual growth rate of P1 is 5.4 voles yr-1 (r ); the carrying capacity of P1 is 100
ha-1 (L); the variable a is the consumption factor of the predator (P2) on the prey
(P1), where a=4; the variable b is the per-capita growth rate of P2 resulting from its
catch of P1, where b=10% of a; and c is the per-capita death rate of P2. The
variable c can also mean to be the harvesting rate of P2. What is the behavior of
the two populations when c (harvesting rate of weasel) is varied? What is the value
of c so that both populations are about the same?
r=5.4; L=100; a=4; c = 2.5; b = 0.1*a;
c=.
PP1 = c/b;
PP2 = r/a*(1 - c/(b*L));
p1=Plot[{PP1,PP2},{c,0,2}, AxesLabel->{"harvest rate", "Populations"}]
Populations
5
4
3
2
1
harvest rate
0.5 1 1.5 2
Figure 7.32. Harvest rate versus populations.
Harvest rate for populations to become equal
c=r/(a*(1/b+r/(a*b*L)));
prey = P1'[t] == r*P1[t] (1 - P1[t]/L) - a*P1[t]*P2[t];
pred = P2'[t] == - c*P2[t] + b*P1[t]*P2[t];
eq1 =NDSolve[{prey,pred, P1[0]==4, P2[0]==2}, {P1[t], P2[t]}, {t,0,50}];
p2=Plot [ Evaluate [{P1[t],P2[t]} /. eq1], {t,0,50},
AxesLabel -> {"Years", "Voles and weasel pop."} ]
Sustainability and Design for the Environment 199
Voles and weasel pop.
5
4
3
2
1
Years
10 20 30 40 50
Figure 7.33. Interaction between voles and weasels at optimum harvest rate.
c=r/(a*(1/b+r/(a*b*L)));
prey = P1'[t] == r*P1[t] (1 - P1[t]/L) - a*P1[t]*P2[t];
pred = P2'[t] == - c*P2[t] + b*P1[t]*P2[t];
eq1 =NDSolve[{prey,pred, P1[0]==4, P2[0]==2}, {P1[t], P2[t]}, {t,0,50}];
p3=ParametricPlot[ {P1[t], P2[t]} /. eq1, {t,0,50}, PlotRange->{{0,6},{0,4}},
Compiled -> False, AxesLabel -> {"Voles", "Weasels"}]
Weasels
4
3.5
3
2.5
2
1.5
1
0.5
Voles
1 2 34 5 6
Figure 7.34. Phase-plane analysis between voles and weasels at optimum harvest
rate.
By controlling the harvesting rate of P2, we can cause P1 to equal P2 at
equilibrium. Harvesting could be done through hunting or transfer of population
out of the area.
200 Sustainability and Design for the Environment
7.4 Nutrient Loading
Consider a problem where an organic nutrient (P1), such as phosphates from
detergents, fertilizers, and animal manure, enter a bay at a constant rate s. Small
floating plant organisms, such as algae (P2), feed on the nutrient and the tiny
crustaceans (P3) graze on the algae (Beltrami, 1987, p. 80). Because of the
movement of the tides, a fraction q per unit time of the nutrients and algae are
swept out of the ocean, never to return. Use the following equations to estimate
the levels of nutrients, algae, and crustaceans over time.
dP1 = s− qP1 − P1 P2
dt a + P1
dP2 = −qP2 + P1 P2 − P2 P3 (7.10)
dt a + P1 b + P2
dP3 = −qP3 + P2 P3
dt b + P2
where P1 is the amount of organic phosphates, in tons; P2 is the mass of algae, in
tons; P3 is the mass of crustraceans, in tons; s is the constant rate of entry of
organic phosphates, in tons of nutrients yr-1; q is the fraction of nutrients, algae and
crustaceans that are swept out to the ocean; and the variables a and b are the
predation factor, in tons.
Let the initial values be given as follows: s = 600; q = 0.000001; a = 100; b = 400.
Then the solution, using Mathematica, is as follows:
s = 60; q = 0.01; a = 1000; b = 4000;
eq1 = P1'[t] == s - q P1[t] - (P1[t] P2[t])/(a+P1[t]);
eq2 = P2'[t]==-q P2[t]+(P1[t] P2[t])/(a+P1[t]) - (P2[t] P3[t])/(b+P2[t]);
eq3 = P3'[t] == -q P3[t]+(P2[t] P3[t])/(b+P2[t]);
eq4=NDSolve[{eq1, eq2,eq3, P1[0]==800, P2[0]==300, P3[0]==50}, {P1[t], P2[t], P3[t]},
{t,0,500}, MaxSteps -> 2000];
p4=Plot [ Evaluate [P1[t] /. eq4 ], {t,0,500}, PlotRange->{{0,500},{0,4000}}, AxesLabel ->
{"Time”, “Nutrients"} ];
Nutrients
4000
3500
3000
2500
2000
1500
1000
500
Time
100 200 300 400 500
Figure 7.35. Pollutant accumulation over time.
Sustainability and Design for the Environment 201
p5=Plot [ Evaluate [P2[t] /. eq4], {t,0,500}, PlotRange->{{0,500},{0,4000}}, AxesLabel ->
{"Time”, “Algae"} ];
Algae
4000
3500
3000
2500
2000
1500
1000
500
Time
100 200 300 400 500
Figure 7.36. Algae growth over time.
p6=Plot [ Evaluate [P3[t] /. eq4], {t,0,500}, PlotRange->{{0,500},{0,4000}}, AxesLabel ->
{"Time”, “Crustaceans"} ];
Crustaceans Time
4000 500
3500
3000
2500
2000
1500
1000
500
100 200 300 400
Figure 7.37. Crustacean growth over time.
Show[p4, p5, p6]
202 Sustainability and Design for the Environment
Nutrients
4000
3500
3000
2500
2000
1500
1000
500
Time
100 200 300 400 500
Figure 7.38. Interaction among nutrients, algae, and crustaceans over time.
In[505]:=
s = 60; q = 0.01; a = 1000; b = 4000;
eq1 = P1'[t] == s - q P1[t] - (P1[t] P2[t])/(a+P1[t]);
eq2 = P2'[t]==-q P2[t]+(P1[t] P2[t])/(a+P1[t]) - (P2[t] P3[t])/(b+P2[t]);
eq3 = P3'[t] == -q P3[t]+(P2[t] P3[t])/(b+P2[t]);
eq4=NDSolve[{eq1, eq2,eq3, P1[0]==700, P2[0]==300, P3[0]==50}, {P1[t], P2[t], P3[t]},
{t,0,500}, MaxSteps -> 2000];
p7=ParametricPlot[ {P1[t], P2[t]} /. eq4, {t,0,500}, Compiled -> False, PlotRange-
>{{0,4000},{0,1500}}, AxesLabel -> {"Nutrients", "Algae"}]
Algae
1400
1200
1000
800
600
400
200
Nutrients
500 1000 1500 2000 2500 3000 3500 4000
Figure 7.39. Phase-plane analysis between nutrients and algae.
p8=ParametricPlot[ {P1[t], P3[t]} /. eq4, {t,0,500}, Compiled -> False, PlotRange-
>{{0,4000},{0,4000}}, AxesLabel -> {"Nutrients", "Crustaceans"}]
Sustainability and Design for the Environment 203
Crustaceans
4000
3500
3000
2500
2000
1500
1000
500
Nutrients
500 1000 1500 2000 2500 3000 3500 4000
Figure 7.40. Phase-plane analysis between nutrients and crustaceans.
p9=ParametricPlot[ {P2[t], P3[t]} /. eq4, {t,0,500}, Compiled -> False, PlotRange-
>{{0,2000},{0,4000}}, AxesLabel -> {"Algae", "Crustaceans"}]
Crustaceans
4000
3500
3000
2500
2000
1500
1000
500
Algae
250 500 750 1000 1250 1500 1750 2000
Figure 7.41. Phase-plane analysis between nutrients and crustaceans.
Show[{p7, p8}, PlotRange->{{0,4000},{0,4000}}, AxesLabel -> {"Nutrients", "Algae &
Crustaceans"}]
204 Sustainability and Design for the Environment
Algae & Crustaceans
4000
3500
3000
2500
2000
1500
1000
500
Nutrients
500 1000150020002500300035004000
Figure 7.42. Phase-plane combination of nutrients, algae, and crustaceans.
& Exercises
1. If you were to manage the fishery project, what should be the initial fishery
stock, P(0), and initial harvesting effort, Ef(0), so that the fish population can
be maintained at steady state, given the original values of the parameters?
2. Another way of evaluating the fish harvesting dynamics is through the following
interaction:
dP = rP 1 − P - q
dt ak EP
a
DE = eE p q P− c
dt a
Initially let r=100, e=1, c=100, q=1, p=1, k=1000, and a=100. Run the model
following the steps involved in the section 8.2 (Fishery Management). The
Mathematica program is given below:
pop1[x_]:=Module[ {eq3,P,Ef,t,eq1,eq2},
r=100; e=1; c=100; q=1; p=1; k=1000; a=x;
eq1=P'[t]== r P[t] (1 - P[t]/(k a)) - q/a Ef[t] P[t];
eq2=Ef'[t] == e Ef[t] (p q/a P[t] - c);
eq3=NDSolve[{eq1, eq2, P[0]==100, Ef[0]==10}, {P[t], Ef[t]}, {t,0,1}, MaxSteps ->2000];
Plot [ Evaluate [{P[t]} /. eq3], {t,0,1}, DisplayFunction->Identity] ]
graphs=Table[pop1[t],{t,50,100,50}]
Show[graphs, PlotRange -> {0,60000}, AxesLabel->{"Time","Fish
Stock"},DisplayFunction->$DisplayFunction]
Sustainability and Design for the Environment 205
pop2[x_]:=Module[ {eq3,P,Ef,t,eq1,eq2},
r=100; e=1; c=100; q=1; p=1; k=1000; a=x;
eq1=P'[t]== r P[t] (1 - P[t]/(k a)) - q/a Ef[t] P[t];
eq2=Ef'[t] == e Ef[t] (p q/a P[t] - c);
eq3=NDSolve[{eq1, eq2, P[0]==100, Ef[0]==10}, {P[t], Ef[t]}, {t,0,1}, MaxSteps ->2000];
ParametricPlot [{P[t], Ef[t]} /. eq3, {t,0,1}, Compiled->False,
DisplayFunction->Identity] ]
graphs=Table[pop2[t],{t,50,100,50}]
Show[graphs, PlotRange -> {{0,80000},{0,80000}}, AxesLabel->{“Fish",
"Harvesting Effort"},DisplayFunction->$DisplayFunction]
Reference
Beltrami, E. 1987. Mathematics for Dynamic Modeling. Academic Press, Boston.
206 Sustainability and Design for the Environment