Description
Given estimates of the abundance of the population of a marine species at each stage (for example, nauplius, juvenile, adult) as a function of time, determine stage specific growth and mortality rates. This model is from the COPS benchmarking suite. See http://www-unix.mcs.anl.gov/~more/cops/. The number of discretization points can be specified using the command line parameter --nh. COPS performance tests have been reported for nh = 25, 50, 100, 200
Large Model of Type : NLP
Category : GAMS Model library
Main file : popdynm.gms includes : copspart.inc
$title Marine Population Dynamics COPS 2.0 #6 (POPDYNM,SEQ=234)
$onText
Given estimates of the abundance of the population of a marine species
at each stage (for example, nauplius, juvenile, adult) as a function
of time, determine stage specific growth and mortality rates.
This model is from the COPS benchmarking suite.
See http://www-unix.mcs.anl.gov/~more/cops/.
The number of discretization points can be specified using the command
line parameter --nh. COPS performance tests have been reported for nh
= 25, 50, 100, 200
Dolan, E D, and More, J J, Benchmarking Optimization
Software with COPS. Tech. rep., Mathematics and Computer
Science Division, 2000.
Rothschild, B J, Sharov, A F, and Bondarenko, A S,
Estimating Growth and Mortality in Stage-Structured
Populations. Journal of Plankton Research 19 (1997),
1913-1928.
Keywords: nonlinear programming, mathematics, population growth rate, population
mortality rate, marine population, ecosystem dynamics
$offText
$if not set nh $set nh 25
Set
ne 'differential equations' / ne1*ne8 /
nc 'collocation points' / nc1*nc2 /
nh 'partition intervals' / nh1*nh%nh% /
nm 'measurements' / 1*21 /;
Parameter
tau(nm) 'times at which observations made'
bc(ne);
tau(nm) = (ord(nm)-1)/2;
Table z(nm,ne) 'observation'
ne1 ne2 ne3 ne4 ne5 ne6 ne7 ne8
1 20000.0 17000.0 10000.0 15000.0 12000.0 9000.0 7000.0 3000.0
2 12445.0 15411.0 13040.0 13338.0 13484.0 8426.0 6615.0 4022.0
3 7705.0 13074.0 14623.0 11976.0 12453.0 9272.0 6891.0 5020.0
4 4664.0 8579.0 12434.0 12603.0 11738.0 9710.0 6821.0 5722.0
5 2977.0 7053.0 11219.0 11340.0 13665.0 8534.0 6242.0 5695.0
6 1769.0 5054.0 10065.0 11232.0 12112.0 9600.0 6647.0 7034.0
7 943.0 3907.0 9473.0 10334.0 11115.0 8826.0 6842.0 7348.0
8 581.0 2624.0 7421.0 10297.0 12427.0 8747.0 7199.0 7684.0
9 355.0 1744.0 5369.0 7748.0 10057.0 8698.0 6542.0 7410.0
10 223.0 1272.0 4713.0 6869.0 9564.0 8766.0 6810.0 6961.0
11 137.0 821.0 3451.0 6050.0 8671.0 8291.0 6827.0 7525.0
12 87.0 577.0 2649.0 5454.0 8430.0 7411.0 6423.0 8388.0
13 49.0 337.0 2058.0 4115.0 7435.0 7627.0 6268.0 7189.0
14 32.0 228.0 1440.0 3790.0 6474.0 6658.0 5859.0 7467.0
15 17.0 168.0 1178.0 3087.0 6524.0 5880.0 5562.0 7144.0
16 11.0 99.0 919.0 2596.0 5360.0 5762.0 4480.0 7256.0
17 7.0 65.0 647.0 1873.0 4556.0 5058.0 4944.0 7538.0
18 4.0 44.0 509.0 1571.0 4009.0 4527.0 4233.0 6649.0
19 2.0 27.0 345.0 1227.0 3677.0 4229.0 3805.0 6378.0
20 1.0 20.0 231.0 934.0 3197.0 3695.0 3159.0 6454.0
21 1.0 12.0 198.0 707.0 2562.0 3163.0 3232.0 5566.0;
bc(ne) = z('1',ne);
$batInclude copspart.inc nc2 21
Set nfl(ne) 'all but the first and last element of ne';
nfl(ne) = not sameas(ne,'ne1') and not sameas(ne,'ne8');
display nfl;
Positive Variable
g(ne) 'growth rates'
m(ne) 'mortality rates';
Equation
collocation_eqn1(i,j)
collocation_eqns(i,j,s)
collocation_ne(i,j);
collocation_eqn1(i,j)..
Duc[i,j,'ne1'] =e= -(m['ne1'] + g['ne1'])*uc[i,j,'ne1'];
collocation_eqns(i,j,nfl(s))..
Duc[i,j,s] =e= g[s-1]*uc[i,j,s-1] - (m[s] + g[s])*uc[i,j,s];
collocation_ne(i,j)..
Duc[i,j,'ne8'] =e= g['ne7']*uc[i,j,'ne7'] - m['ne8']*uc[i,j,'ne8'];
Model popdynm / all /;
popdynm.scaleOpt = 1;
obj.scale = 1000;
$if set workSpace popdynm.workSpace = %workSpace%
solve popdynm minimizing obj using nlp;