Delaying shrimp migrations

This forum contains all archives from the SD Mailing list (go to http://www.systemdynamics.org/forum/ for more information). This is here as a read-only resource, please post any SD related questions to the SD Discussion forum.
Locked
"Richard G. Dudley"
Junior Member
Posts: 19
Joined: Fri Mar 29, 2002 3:39 am

Delaying shrimp migrations

Post by "Richard G. Dudley" »

X-UIDL: 10257-938505322
Status: O
X-Status:

I have a simple model with a simple problem.

One of our shrimp species spawns in the ocean, very young shrimp use a
lagoon as a nursery area for three months and then emigrates to the
ocean and grow to adults.
This model has two stocks: shrimp in lagoon and shrimp in ocean. Here I
am concerned only with "shrimp in lagoon". This stock has an inflow
that I call "recruiting" (to the lagoon fishery). The stock has three
ouflows "catching" "dying" (of natural causes) and "emigrating" to the
ocean. All the outflows are modeled as (usually constant) fractions of
the stock.

If the inflow is constant the model is fine. But, of course, if I
introduce pulses in the inflow "recruiting" then I dont get what I
really need. This is because as soon as a pulse of "recruits" enter the
lagoon some start leaving without waiting 3 months..... and the
resulting pulse in the ocean is much too early.

I can explicitly model this by adding additional stocks in tandem for
additional delay time in the lagoon (say for months 2 and 3) and I can
get what I believe are correct ocean pulses. In this case I also
must add the other outflows from each stock so that shrimp are dying and
being caught during the full three months. However, I wanted to avoid
the extra stocks to keep things simple.

Alternative I tried using a delay whereby the stock "shrimp in lagoon"
has a connector to a delay something like this: delay3(shrimp in lagoon,
time in lagoon). This delay then determines the outflow from my lagoon,
over an additional specified time period.

While this approach gives me some nice pulses in the ocean, it doesnt
seem correct. The delay tells the flow to equal a lagoon population of
some months earlier (divided over a time period) when in fact that
population would have been reduced by fishing and natural mortality. (I
am thinking now that I might make use of a ratio of the current numbers
to the delayed numbers times current numbers?)

I am using Vensim, but the conveyers in Stella dont seem to be
appropriate here as they dont spread out the recruitment pulses at the
outflow end.

I seems to be a fairly simple problem that should have a nice elegant
modeling solution.

--
Richard G. Dudley
Bogor, Indonesia

rdudley@indo.net.id

http://home.indo.net.id/~rdudley
http://ourworld.compuserve.com/homepages/drrdudley
S.C.Bayer@sussex.ac.uk (Steffen
Junior Member
Posts: 2
Joined: Fri Mar 29, 2002 3:39 am

Delaying shrimp migrations

Post by S.C.Bayer@sussex.ac.uk (Steffen »

X-UIDL: 10365-938505322
Status: O
X-Status:

Richard,

this is my attempt to model the shrimp migrations.

The basic idea is that the outflow out of the lagoon to the ocean should
be the inflow delayed by the time in the lagoon adjusted for natural
death and fishing.

Assuming constant fractions of shrimp (of all ages) are fished or die in
each time period, the share of each age group of shrimp, which is not
fished or dies, is for every time period:

(1 - death rate - fishing rate)

Looking at groups of shrimps which have entered the lagoon at the same
time, the share of each such group, which survives in the lagoon to the
age that they can emigrate to the ocean, is:

(1 - death rate - fishing rate) ^ emigration time

Now the outflow of shrimp migrating to the ocean can be expressed as:

outflow = ( inflow delayed by emigration time ) * ( (1 - death rate -
fishing rate) ^ emigration time )

I hope this makes sense

Steffen Bayer

-----------

SPRU, University of Sussex
Falmer, Brighton, BN1 9RF, UK
s.c.bayer@sussex.ac.uk
John Sterman
Senior Member
Posts: 117
Joined: Fri Mar 29, 2002 3:39 am

Delaying shrimp migrations

Post by John Sterman »

X-UIDL: 10319-938505322
Status: O
X-Status:

The problem of modeling the recruitment, aging, mortality, and migration of
a shrimp population described by Richard Dudley is an example of the
general formulation issue of an aging chain. This formulation is treated
in detail in chapter 12 of Business Dynamics, including multiple cohorts
with the possibility of recruitment, mortality, and migration into/out of
each cohort. Several different ways to model the demographic structure of
a population are treated, and examples from world population growth to the
aging of the faculty at a university are discussed. For information see
http://www.mhhe.com/sterman.

John Sterman
jsterman@MIT.EDU
Tom Fiddaman
Senior Member
Posts: 55
Joined: Fri Mar 29, 2002 3:39 am

Delaying shrimp migrations

Post by Tom Fiddaman »

Part of the answer to this question depends on the purpose of the model (as
always). Creating a structure that accurately represents the distribution
of maturing shrimp over their three months in the lagoon may be a waste of
time if the pulse passes into a large stock of oceangoing shrimp with a
long residence time. On the other hand, if youre trying to set seasonal
catch limits or time activities in the lagoon so as to minimize disturbance
to the shrimp, the distribution could be very important.

>Alternative I tried using a delay whereby the stock "shrimp in lagoon"
>has a connector to a delay something like this: delay3(shrimp in lagoon,
>time in lagoon). This delay then determines the outflow from my lagoon,
>over an additional specified time period.

This approach may blow up when you check units, since shrimp in lagoon is a
stock and the delay is being used to create a flow. Fixing it by adding a
second time constant in the denominator doesnt really have a physical
justification. Also, its likely to fail extreme conditions tests - e.g. if
some other process (imagine a chemical spill) kills all the shrimp in the
lagoon, the outflow of maturation would still continue for some time due to
the delay3. As a general rule, outflows from physical stocks always need
1st order control, i.e. outflows must be connected to the stock, without
any integration or delay, so that when the stock is 0 the outflow is 0.

If the distribution matters, I prefer the explicit stocks approach you
mention. This makes the processes affecting the shrimp most clear to users.
The typical SD rule of thumb is to close your eyes and assume that 3 levels
are enough.

The trouble with explicit stocks is that if the shrimp are very regular -
as many animal gestation and maturation processes are - a large number of
stocks are required to get the right distribution. In the extreme, an
ithink conveyor or Vensim fixed or material delay will work as long as the
total lack of dispersion in the pulse is OK. The ithink conveyor will also
let you specify a "leakage" outflow, so as long as shrimp losses can be
specified as a fraction of the shrimp stock or inflow.

To get a realistic, high-order distribution, one shortcut would be to use
an Nth order delay function (like DELAY N in Vensim). You could also try
Vensims DELAY PROFILE, which lets you draw an arbitrary arrival
distribution. You can also use an Nth order smooth in place of an Nth order
delay as long as the delay time is constant (otherwise your physical
quantity wont be conserved). You would normally implement this as:
Shrimp in Lagoon = INTEG( inflow - outflow, initial shrimp)
inflow = ...
outflow = DELAYFUNCTIONOFSOMESORT(inflow, maturation time)
Because the various delays you might use here have a bunch of stocks
inside, you dont really need the stock of Shrimp in Lagoon, but its nice
to have for accounting purposes.

The trouble with this approach is that theres no correct way to represent
losses that occur while the shrimp are resident in the lagoon. There are
two ways around this. An easy way is to assume that all losses occur at
either the beginning or the end of the process, so that you can just
multiply the inflow or outflow by a constant survival fraction. This means
that the timing of losses reported by your model wont be right, but you
may not care as long as the distribution of maturing survivors is OK. A
better way would be to use arrays to build an explicit stock-flow structure
of the order you want, without having to write all the equations individually.

Apart from building an explicit 3rd order structure, none of the solutions
is very elegant. Using DELAY N-type functions creates a diagram with a
rate-to-rate connection and a redundant stock with no apparent connection
to its outflow both no-nos or at least confusing to users. Conveyors with
leakage look a little cleaner but are similarly confusing, as theres no
visual representation of the causality between stock and outflow. Arrays
make the feedback apparent, but hide the vintage structure. Theres
probably room for some creativity here.

Regards,

Tom

****************************************************
Thomas Fiddaman, Ph.D.
Ventana Systems http://www.vensim.com
8105 SE Nelson Road Tel (253) 851-0124
Olalla, WA 98359 Fax (253) 851-0125
Tom@Vensim.com http://home.earthlink.net/~tomfid
****************************************************
Locked