Modelli per lo studio ed il controllo

Transcript

Modelli per lo studio ed il controllo
Relazione di teoria dei sistemi
Modelli per lo studio ed il controllo
Studio sulla popolazione del Nasello
(Merluccius Merluccius) e sul suo
sfruttamento nel mare Adriatico
centro settentrionale
Docente: Alessandro Casavola
Studente: Claudio Rinaldi
indice:
Introduzione……………………………………………………………………
pag.
3
Modelli per il controllo della pesca……………………………………
pag.
5
I dati………………………………………………………………………………
pag.
7
Calibrazione del modello……………………………………………………
pag.
8
Studio del rateo di prelievo proporzionale massimo sostenibile… pag.
12
Studio della stabilità dell’equilibrio……………………………………
13
pag.
Conclusioni……………………………………………………………………
pag.
14
Programmi matlab…………………………………………………………
pag.
14
Bibliografia……………………………………………………………………
pag.
24
2
Introduzione:
Merluccius merluccius Linneo,
nome italiano : nasello, merluzzo argentato
classificazione: pesce osseo, Ordine Gadiformi
distribuzione geografica : Mar Mediterraneo, Atlantico orientale, Mar Nero meridionale
CARATTERI DISTINTIVI
Ha il corpo allungato e la parte superiore della testa appiattita. La colorazione è grigio acciaio sul
dorso, argentea lungo i fianchi e bianca sul ventre; negli adulti la bocca è nerastra. La taglia
massima è intorno ai 110 cm, quella più comune nel Mediterraneo è di 30-40 cm.
NOTE BIOLOGICHE
E' ampiamente distribuito in particolare tra 50 e 1000 metri di profondità, più frequentemente tra
100 e 300 metri. La riproduzione avviene per un lungo periodo dell'anno, soprattutto a fine inverno tra i 100 e i 150 metri di profondità; si tratta di un depositare parziale, cioè la femmina
emette 4 o 5 volte consecutive prima che gli ovari entrino in fase di riposo. Uova, larve e stadi
giovanili sono caratterizzati da una fase pelagica in prossimità della costa che dura alcuni mesi:
successivamente, alla taglia di 4-5 cm, i giovanili scendono sul fondo. Lo spostamento a maggiori profondità è concomitante con l'aumento dell'età degli individui. La maturità sessu ale viene
raggiunta in genere a 2 anni, ad una taglia di 20-25 cm. Si tratta di una specie a lunga vita, può
3
infatti superare i 20 anni di età. Per ciò che concerne l'alimentazione il nasello è una specie ca rnivora, che si nutre di crostacei di piccoli pelagici quali sardine e sgombri allo stadio adulto.
DIFFUSIONE E PESCA
Il Nasello è molto comune ed uniformemente distribuito nei mari italiani.Merluccius merluccius
è presente in tutto il Mediterraneo, nella parte meridionale del Mar Nero ed in Atlantico, lungo
tutte le coste europee, dalla Penisola scandinava alla Mauritania (fig.1). Questa specie è stata, sin
dall'antichità, una importante fonte di cibo per le popolazioni dell'Europa occidentale. Il nasello è
oggetto di sfruttamento soprattutto da parte della pesca a strascico, ma viene pescato anche con i
palangari di fondo e a volte, nei mesi estivi, può capitare anche nelle reti da posta.
In base al Regolamento (CE) N. 1626/94 del 27 giugno 1994 che istituisce misure tecniche per la
conservazione delle risorse della pesca nel Mediterraneo, la taglia minima di cattura per questa
specie è di 20 cm; precedentemente la normativa italiana (D.P.R. N. 1639 del 2 ottobre 1968) fissava una taglia minima di cattura di 11 cm. Il Nasello nel 1986 e nel 1995 ha raggiunto rispettivamente il 7° ed il 6° posto della speciale classifica delle prime 50 specie prodotte in Italia. Le
aree di pesca principali del nasello in Italia sono il Mare di Sicilia, il medio e basso Adriatico e il
Tirreno.
Fig.1
4
Modelli per il controllo della pesca:
Il controllo di una specie ittica soggetta a sfruttamento è uno fra i processi più complessi da modellizzare in quanto è governato da innumerevoli fattori non solo biologici ma anche politici ed
economici. In questa relazione si tenterà di affrontare il problema dal punto di vista biologico
trascurando gli altri aspetti che renderebbero il problema di una complessità che esula dallo sc opo finale di questo elaborato che si propone di illustrare l’applicazione di un modello matematico
ad un problema reale. I modelli matematici studiati per il controllo della pesca devono affrontare
principalmente i seguenti problemi:
- Non linearità delle popolazioni ittiche.
- Fluttuazioni casuali nel reclutamento.
- Grande incertezza sulla corrente dimensione della popolazione.
- Disponibilità di dati con intervalli annuali.
MODELLO DI HORWOOD-SHEPHERD:
Uno dei modelli più fedeli per riprodurre la dinamica di una specie ittica è stato proposto da
Horwood e Shepherd nel 1981. Tale modello e del tipo a classi di età e si articola in un certo
numero di equazioni differenziali tempo discreto :
x1 (t + 1) = ξ(t ) R(b(t ))
xi (t + 1) = xi −1 (t ) si −1 (t )
x p (t + 1) = x p (t) s p (t ) + x p −1 (t )s p −1 (t )
La prima equazione rappresenta il la classe più giovane chiamata reclutamento; tale classe è
quella più difficile da modellizzare infatti tale classe è influenzata da innumerevoli fattori ambientali dunque casuali. Vi sono numerosi modi con cui tale classe è stata rappresentata nel modello di Horwood e Shepherd abbiamo una variabile adimensionale casuale con distribuzione
log-normale che moltiplica una funzione non lineare R(b) (milioni di pesci) della biomassa delle
uova b(t):
P
b (t ) =
∑
i=1
R (t ) =
α * b (t )
1 + (b ( t ) / k ) β
p i x i ( t ) w is
5
dove Pi è la frazione della classe d’età che depone uova wis è il peso del pesce che depone uova
α , β , k sono parametri che vanno stimati in modo da minimizzare i valori della funzione
R(b(t)) rispetto ai dati sperimentali in possesso. Si , rateo di sopravvivenza, è una funzione dipendente dalla variabile f(t) detta sforzo di pesca .
Si si presenta nel seguente modo:
si (t) = e−m−qi f (t)
ove mi è la mortalità naturale della classe iesima, q i è un coefficiente adimensionale che rappresenta la catturabilità del pesce appartenente all’iesima classe.
MODELLO DI BEVERTON-HOLT:
Un secondo modello utilizzabile per lo studio di una popolazione di pesci può essere quello a
classe unica di Beverton-Holt. Anche questo modello è stato studiato appositamente per la gestione della pesca. Il modello è di tipo non lineare tempo discreto dato dalla seguente equazione:
X (t +1) = (
Rm* K
) * X (t)
Rm* X (t) − X (t) + K
Ove Rm è il rateo di crescita massimo, K è la capacità portante della popolazione cioè il valore a
cui tenderebbe in assenza di fattori di disturbo. E’ subito evidente dall’equazione che si tratta di
un modello che fa dipendere il rateo di crescita (termine fra parentesi) dalla densità della specie.
La maggior parte delle popolazioni animali presenta infatti la caratteristica di un rateo di crescita
variabile nel tempo con una crescita quasi sempre inversamente proporzionale alla densità della
popolazione stessa. Nel problema da noi trattato aggiungeremo all’equazione precedente il termine relativo al prelievo per pesca. Il prelievo è di tipo proporzionale ed è dato dalla seguente:
mp = X (t) * exp(− f (t ))
L’obbiettivo che si vuole raggiungere mediante questi modelli è quello di determinare la popolazione di un pesce in uno stato di equilibrio dinamico tale da assicurare il massimo prelievo annuo
proporzionale sostenibile. La scelta del modello da adottare è nella maggior parte dettata da fattori pratici quali la disponibilità e l’accuratezza dei dati disponibili. E’ subito evidente che il modello di Horwood –Shepherd per quanto assai più accurato richiede una mole di dati considerevole non disponibile se non acquisita per mezzo di specifiche campagne di campionamento. La
mia scelta è dunque stata per il modello a singola classe d’età di B everton-Holt
6
I dati:
I dati da me reperiti presso il laboratorio di biologia marina di Fano(PS) riguardano stime della
popolazione effettuate negli anni dal 1994 al 2000. Questi dati sono stati calcolati mediante campagne di pesca effettuate nel mare Adriatico centro settentrionale in collaborazione con il laboratorio di biologia marina di Spalato (Croazia) su 50 stazioni sistematicamente distribuite su tutta
la superficie del mare studiato (Fig.2). Le modalità di pesca sono state effettuate in tutte le stazioni mediante reti standard con stessi tempi di pesca e passate successive a profondità variabili
do 0 a oltre i 400 metri. Il calcolo della popolazione è stato determinato in base alle quantità p escate nelle 50 stazioni ricavando il valore della densità media di questo pesce (kg/km 2) per tutto
il mare Adriatico centro settentrionale. La popolazione del pesce è stata ricavata mediante moltiplicazione per l’area della superficie totale del mare oggetto della campagna pari a 60350 km2 .
I dati relativi alla quantità pescata nei vari anni è stata ricavata dai dati ISTAT che si basano sulle
quantità di pescato dichiarate dai vari consorzi ittici nazionali.
1994
1995
1996
1997
1998
1999
2000
2001
Popolazione (q) 26391
34206
22281
18769
22402
19463
11683
10634
Pescato (q)
4359.7
4198.5
3588
2887.2
2309.3
2104.5
1908
2454
fig.2
7
Calibrazione del modello:
La calibrazione è la fase fondamentale della costruzione di un modello matematico. Nella calibrazione si procede alla determinazione dei valori numerici dei parametri del modello in modo
da minimizzare la differenza tra la sua risposta ed i dati sperimentali.
Nel nostro caso i parametri sono la capacità portante K e il rateo di crescita massimo Rm.
Il modello di Beverton-Holt è di tipo dinamico e quindi non permette una semplice soluzione analitica basata sullo studio dei gradienti come sarebbe possibile invece nel caso dei modelli di tipo statico. E’ necessario cosi applicare un metodo di ricerca diretta che si basi sulla conoscenza
per punti della funzione errore E(K,Rm).
E (P ) =
∑ (y
N
i =1
exp
i
− yi
) = ∑ (y
2
N
i =1
exp
i
− f ( xi , K , Rm)
)
2
L’algoritmo di ricerca più efficiente è il metodo del simplesso che procede verso il minimo valutando la funzione E(K,Rm) in un numero finito di punti disposti a reticolo (i vertici del simplesso) scartando ad ogni passo il punto peggiore, nel quale la funzione è massima, e sostituendolo
con un nuovo punto che si ritiene più vicino all’ottimo cercato.
IL METODO:
1. Vengono dati in entrata dei valori di inizializzazione ai parametri Rm e K.
2. Si effettua una simulazione.
3. Si valuta l’errore fra l’uscita del modello ed i dati sperimentali.
4. Si determina il funzionale di errore E(K,Rm).
5. Si cambiano i parametri in modo da minimizzare E(K,Rm), processo di aggiustamento affidato all’algoritmo del simplesso.
6. -Si procede in modo iterativo effettuando una nuova simulazione fino a che non si verifichino
le condizioni di arresto.
E( P ) =
1
N exp
N exp
∑ε
2
i
i =1
8
IL PROGRAMMA DI CALIBRAZIONE E’ COSI’ STRUTTURATO:
PROGRAMMA PRINCIPALE
• Caricamento dei dati sperimentali
• Definizione del modello di simulazione
• Definizione dei parametri del simplesso
al simplesso
• Chiamata
• Valutazione della varianza delle stime
Parametri
Ottimali
SIMPLESSO
OTTIMIZZATO
Richiesta di
valutazione
dell'errore
per la scelcorrente di P
Dati Sperimentali
E(P)
FUNZIONE DI ERRORE
(controlla la simulazione)
(valuta il funzionale di errore)
Risultato della
simulazione
Controllo della
Simulazione
MODELLO
SIMULINK
e( ffettua la simulazione)
fig.3
RISULTATO DELLA CALIBRAZIONE:
Attraverso il programma matlab n°1 di calibrazione ho ottenuto i seguenti valori della capacità
portante e del rateo di crescita massimo:
Rm = 1,1834
K = 94483 q
Il programma crea il seguente grafico (fig.4) in cui sono riportati i valori sperimentali (punti blu),
andamento della popolazione secondo la simulazione con i parametri ottimali (linea rossa), quantità del pescato(linea blu), andamento dello sforzo di pesca negli anni (grafico 2).
9
fig.4
CONSIDERAZIONI SUL RATEO DI CRESCITA:
Mediante programma matlab n°2 è stato ricavato l’andamento del rateo di crescita della popolazione in assenza di pesca in funzione del tempo e della popolazione stessa.
E’ così visibile come il rateo di crescita diminuisca all’avvicinarsi al valore della capacità portante in maniera monotona. Dal secondo grafico si può vedere il variare del rateo di crescita in funzione del tempo a partire da popolazioni di entità assai esigua.
Si sono distinte tre fasi:
1. La prima fase (circa 125 anni) è di crescita veloce con rateo di crescita massimo e costante.
2. Segue una seconda fase (circa 100 anni) con un calo del rateo di crescita costante che si porta
al valore unitario.
3. Nella terza fase (100 anni) il rateo di crescita tende in modo asintotico al valore unitario.
10
fig.5
11
Valutazione del rateo di prelievo massimo sostenibile:
L’obbiettivo che vogliamo raggiungere è quello di determinare la quantità massima di pesce p escabile annualmente mantenendo inalterata la popolazione totale del pesce.
Attraverso il programma matlab n°3 si è ricavato il seguente grafico dell’isoclina di equilibrio
(linea rossa) la linea tratteggiata indica la mezzeria cioè il caso in cui la popolazione rimane costante da un anno al successivo. Dal grafico risulta evidente che la quantità di pesce pescabile
quando ci si trova in situazioni con popolazioni di bassa o alta entità è piuttosto esigua se si vuole mantenere inalterata negli anni la popolazione totale. Il programma matlab n°4 trova appunto
l’entità della popolazione in cui si ha massima la quantità di pesce pescabile Dmax (doppia freccia nel grafico) data dal valore massimo della differenza x(t+1)-x(t).
fig.6
Il programma n° 4 ci da così i seguenti valori ottimali a cui far tendere la popolazione Nid ed il
valore massimo pescabile annualmente Dmax:
Nid
= 45’250 q
Dmax = 3’975 q
12
Studio della stabilità:
Ultima cosa da fare sarà quella di esaminare il comportamento del modello all’equilibrio in pr esenza del fattore di disturbo dato dalla pesca.
Il modello di Beverton-Holt, per la forma della sua risposta funzionale (vedi fig 6), non può dare
luogo ad oscillazioni, cicli limite o caos. Il tipo di prelievo è di tipo proporzionale e quindi è impossibile che generi instabilità anche se ci trovassimo nel caso di un modello differente come
quello della logistica. Unico caso in cui sia possibile il generarsi di instabilità è il caso di popol azioni depensate. La popolazione raggiunge così l’equilibrio con andamento monotono.
Il programma n°5 calcola prima di tutto lo sforzo di pesca f(t) da applicare se si vuole portare la
popolazione del pesce al valore di equilibrio Nid trovato con il programma n°3. Trovato F(t) crea
il grafico sottostante in cui viene rappresentato con la linea rossa tratteggiata il comportamento
del modello in assenza di pesca e con la linea blu continua il comportamento in presenza di pesca. Dal grafico si evidenzia il fatto che la velocità con cui mi porto in condizioni di equilibrio è
fortemente influenzata dal fattore pesca infatti mentre in assenza di pesca mi porto alla capacità
portante in 65 anni, in presenza di pesca mi occorreranno approssimativamente 100 anni.
fig7
13
Conclusioni:
Per concludere si deve dire che l’accuratezza del modello di Beverton-Holt come di qualsiasi
modello matematico è funzione della quantità e della qualità dei dati disponibili. Nel presente c aso i dati non sono sicuramente sufficienti a garantire l’attendibilità dei risultati ottenuti.
Dai risultati ottenuti si può comunque notare come la pesca sia un fattore determinante per
l’influenza che ha sul rateo di crescita della popolazione del pesce preso in esame. In particolare
si può utilizzare la pesca stessa come mezzo per il controllo ed il mantenimento della popolazione ad un livello ottimale di equilibrio che garantisca il massimo sfruttamento.
Programmi matlab:
Programma n°1a
function [Rm,k,scarto]= calibra_Rm(Rm_0,k_0)
format long
global
xt t_exp x_calc n f C
% Inizia la calibrazione
Rm=Rm_0;
k=k_0;
load pop_mt.txt;
dati_pop=eval('pop_mt');
t_exp=dati_pop(:,1);
C=dati_pop(:,3);
xt=dati_pop(:,2);
[n,g]=size(C);
for i=1:n
f(i,1)= C(i)/xt(i);
end
% Assegnazione iniziale dei valori dei parametri globali r,k
Par=[Rm k];
14
NomeModello='Err_popm';
options=foptions;
options(1)=1;
options(2)=0.001;
options(3)=0.0001;
options(14)=1000;
[ParCal,options]=simplex('Err_popm',Par,options);
scarto=Err_popm(ParCal)
Rm=fix(10000*ParCal(1))/10000;
k=fix(ParCal(2))
Programma 1b:
function scarto=Err_popm(Par)
format long
global
x0 xt t_exp x_calc
f
n C
Rm=Par(1);
k=Par(2);
for i=1:n
x_cal(i,1)=(xt(i)*Rm*k)/(Rm*xt(i)-xt(i)+k)-xt(i)*(1-exp(-f(i)));
end
figure(2)
subplot(2,1,1)
plot(t_exp,xt,'.',t_exp,x_cal,'r',t_exp,C,'b')
title('Andamento della popolazione')
xlabel('anni')
ylabel('qintali ')
drawnow
subplot(2,1,2)
plot(t_exp,f,'k')
title('Sforzo di pesca')
xlabel('anni')
ylabel('f ')
scarto=sum((xt - x_cal).^2);
15
Programma 1c
function [x,options] = SIMPLEX(funfcn,x,options,grad,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10)
%SIMPLEX
versione 1.5
%Trova il minimo di una funzione a pi
variabili utilizzando il metodo del simplesso
% con la fase di espansione ottimizzata.
%
%Sintassi minima: X=SIMPLEX('FUN',X0) parte dalle condizioni iniziali X0 e
% trova il minimo della funzione descritta in FUN (usualmente un M-file di nome
FUN.M).
%
La funzione FUN deve ritornare un valore scalare.
%
%Sintassi completa: [X,OPTIONS]=SIMPLEX('FUN',X0,OPTIONS,[],P1,P2,..,P10)
%
OPTIONS:
un vettore di parametri opzionali (vedere FOPTIONS()).
%
OPTIONS(1): permette di visualizzare i risultati intermedi
%
0 non visualizza i risultati intermedi
%
1 visualizza i risultati intermedi
%
2 visualizza i risultati intermedi in forma ridotta
%
(numero di iterazioni e valore del funzionale di errore)
%
OPTIONS(2)
la precisione richiesta per il valore di X alla soluzione.
%
OPTIONS(3)
la precisione richiesta per il valore del funzionale di errore
%
%
alla soluzione.
OPTIONS(6): considera il file STARTV per i vertici iniziali del simplesso
%
0 costruisce il simplesso di partenza da X0.
%
1 reinizializza i vertici del simplesso dai dati memorizzati in STARTV
%
2 terminata l'ottimizzazione salva i vertici del simplesso in STARTV
%
3 utilizza STARTV sia per l'inizializzazione del simplesso iniziale
%
%
sia per salvare il simplesso finale.
OPTIONS(14)
il numero massimo di iterazioni dopo il quale la ricerca
%
del minimo si blocca. Se
%
si deve bloccare.
%
alla soluzione.
negativa indica dopo quanti minuti la ricerca
%
P1,P2,....,P10 sono delle variabili da passare direttamente a FUN().
%
Sviluppato da Aldo Buttini (11 settembre 93)
x;
funfcn;
if nargin<3, options=[]; end
options=foptions(options);
prnt=options(1);
tol=options(2);
tol2=options(3);
evalstr = [funfcn];
if ~any(funfcn<48)
16
evalstr=[evalstr, '(x'];
for i=1:nargin - 4
evalstr = [evalstr,',P',num2str(i)];
end
evalstr = [evalstr, ')'];
end
n = prod(size(x));
if (~options(14))
options(14) = 200*n;
end
% Inizializza il simplesso
if (options(6)==1 | options(6)==3)
if prnt
disp('Ripristino del simplesso di partenza')
end
%Riprendi il simplesso memorizzato
load STARTV;
else
%Inizializza il simplesso partendo dalla condizione iniziale
if prnt
disp('Calcolo del simplesso di partenza')
end
xin = x(:);
v = 0.8*xin;
x(:) = v;
fv = eval(evalstr);
for j = 1:n
y = xin;
if y(j) ~= 0
y(j) = 1.2*y(j);
else
y(j) = 0.1;
end
v = [v y];
x(:) = y; f = eval(evalstr);
fv = [fv
f];
end
[fv,j] = sort(fv);
v = v(:,j);
end
cnt = n+1;
17
if prnt
clc
format compact
format long e
home
cnt
disp('Iniziale')
disp(' ')
v
fv
end
alpha=1.5;beta=0.5;gamma=2;fib_max=0;
contatori=[0 0 0 0 0];
[n,np1] = size(v);
onesn = ones(1,n);
ot = 2:n+1;
on = 1:n;
tStart=clock;
fOverTime=0;
fOverCnt=0;
fContinua=1;
%Loop principale.
while fContinua %cnt < options(14)
vbar=(sum(v(:,on)')/n)'; % calcolo baricentro
%Riflessione primaria
vr=vbar+alpha*(vbar-v(:,n+1)); x(:) = vr; fr = eval(evalstr);cnt=cnt+1;%riflessione
tramite il baricentro
vk = vr; fk = fr; how = 'RIFLESSIONE';azione=1;
if fr<fv(n) & fr~=NaN
if fr<fv(1)
%Espansione
vr2=vbar+gamma*(vrvbar);x(:)=vr2;fr2=eval(evalstr);cnt=cnt+1;
how='ESPANSIONE';azione=2;
if fr2<fv(1) & fr2~=NaN %Espansione ottimizzata
search=1;rapp=1.5;ifib=2;
while search %cerca intervallo
vr3=vr2+rapp*(vr2-vr);x(:)=vr3;fr3=eval(evalstr);cnt=cnt+1;
if fr3>fr2 & fr3~=NaN
search=0;
else
18
vr=vr2;fr=fr2;
vr2=vr3;fr2=fr3;
ifib=ifib+1;
end
end
%Il minimo
compreso fra vr e vr3 => riduzione dell'intervallo
if ifib>2
%Calcolo
vr2b
in
modo
che
lungo
la
direzione
di
ricerca
si
trovino
nell'ordine
vr,vr2,vr2b,vr3.
vr2b=vr+rapp*(vr2-vr);x(:)=vr2b;fr2b=eval(evalstr);cnt=cnt+1;
rapp=0.5;
for if=ifib:-1:3
if fr2b<fr2
vr=vr2;
vr2=vr2b;fr2=fr2b;
vr2b=vr3-rapp*(vr3-vr);x(:)=vr2b;fr2b=eval(evalstr);
else
vr3=vr2b;
vr2b=vr2;fr2b=fr2;
vr2=vr+rapp*(vr3-vr);x(:)=vr2;fr2=eval(evalstr);
end
cnt=cnt+1;
end
if fr2b<fr2
vr2=vr2b;fr2=fr2b;
end
end
vk=vr2;fk=fr2;how='ESPANSIONE OTTIMIZZATA';azione=3;
end
end
else
if max(max(abs(v(:,ot)-v(:,onesn)))) <= tol &
max(abs(fv(1)-fv(ot))) <= tol2,
break, end
vt = v(:,n+1); ft = fv(n+1);
if fr < ft
vt = vr;
ft = fr;
end
vc=vbar+beta*(vt-vbar);x(:)= vc;fc=eval(evalstr);cnt=cnt+1;
if fc<fv(n+1)
vk = vc; fk = fc;
how = 'CONTRAZIONE';azione=4;
else
for j = 2:n
19
v(:,j)=(v(:,1)+v(:,j))/2;x(:)=v(:,j);fv(j)=eval(evalstr);
end
cnt = cnt + n-1;
vk = (v(:,1) + v(:,n+1))/2; x(:) = vk; fk = eval(evalstr);cnt=cnt+1;
how = 'RIDUZIONE';azione=5;
end;
end
v(:,n+1)=vk;
fv(n+1)=fk;
[fv,j]=sort(fv);
v=v(:,j);
contatori(azione)=contatori(azione)+1;
if prnt==1
home;clc
cnt
disp(how)
v
fv
elseif prnt==2
home;clc
fprintf('Contatore: %g
Funzionale di errore minimo: %g\n',cnt,fv(1));
end;
%Controlla la condizione di file loop
if options(14)>=0
if cnt > options(14)
fContinua=0;
fOverCnt=1;
end
else
if etime(clock,tStart)>-options(14)*60
fContinua=0;
fOverTime=1;
end
end
end
x(:) = v(:,1);
if prnt, format, end
options(10)=cnt;
options(8)=min(fv);
if (options(6)==2 | options(6)==3)
%Salva il simplesso
20
save STARTV v fv;
end
if fOverCnt
if options(1) >= 0
disp(['Attenzione:
stato raggiunto il
massimo numero di iterazioni previste
(',num2str(options(14)),')'])
disp( '
(Aumentare OPTIONS(14)).')
end
elseif fOverTime
if options(1) >= 0
disp(['Attenzione:
stato superato il limite massimo di tempo (' ,num2str(-
options(14)),' minuti)'])
disp( '
(Diminuire OPTIONS(14)).')
end
end
%if prnt
%
fprintf('Numero riflessioni : %g\n',contatori(1))
%
fprintf('Numero espansioni : %g\n',contatori(2))
%
fprintf('Numero espansioni ottimizzate : %g\n',contatori(3))
%
fprintf('Numero contrazioni : %g\n',contatori(4))
%
fprintf('Numero riduzioni : %g\n',contatori(5))
%end
Programma n°2
% Crea i grafici con l'andamento del rateo di crescita in funzione
% del tempo e della popolazione
r=input('inserisci il tasso di crescita ');
k=input('inserisci la capacità portante ');
T=1:5:500;
[z,ki]=size(T);
x=zeros(1,ki);
R=zeros(1,ki);
x(1,1)=100;
R(1,ki)=1;
for j=1:ki-1
x(j+1)=x(j)*r*k/(r*x(j)-x(j)+k);
R(j)=x(j+1)/x(j);
end
subplot(2,1,1)
21
plot (x,R,'r')
xlabel('Popolazione')
ylabel('Rateo di crescita')
title('Andamento del rateo di crescita')
subplot(2,1,2)
plot (T,R,'r')
xlabel('Tempo')
ylabel('Rateo di crescita')
Programma n°3
%Disegna il grafico x(t)/x(t+1)
n=100;
r=1.1604;
k=37770;
x=zeros(1,n);
p=zeros(1,n);
y=zeros(1,n);
x(1,1)=10;
p(1,n)=k;
y(1,n)=k;
for i=1:n-1
x(i+1)=x(i)*r*k/(r*x(i)-x(i)+k);
p(i)=x(i+1);
y(i)=x(i);
end
plot(x,p,'r',x,y,'--k')
title('pop')
xlabel('x(t)')
ylabel('x(t+1)')
Programma n°4
% Calcola la popolazione Nid a cui si può chiedere il massimo raccolto annuo Cmax
r=1.1605;
k=37770;
N=0:100:230000;
22
Cm=0;
[z,n]=size(N);
for i=2:n
Y=r*k*N(i)/(r*N(i)-N(i)+k);
d=Y-N(i);
if d>Cm
Cm=d;
Nid=N(i);
end
end
Cmax=Cm
Nid
Programma n°5
% Andamento della popolazione nel tempo con calcolo dello sforzo di pesca per %stabilizzare la popolazione ad un valore Nid scelto.
r=1.1605;
k=37770;
f=0.01;
D=20;
No=input('valore Nid a cui far tendere la popolazione ');
while D>10
N=r*k*No/(r*No-No+k)-No*(1-exp(-f));
D=N-No;
f=f+0.0001;
end
f
T=1:200;
[z,n]=size(T);
x=zeros(1,n);
y=zeros(1,n);
m=zeros(1,n);
x(1,1)=1000;
y(1,1)=1000;
for i=1:n-1
x(i+1)=(r*k*x(i)/(r*x(i)-x(i)+k))- x(i)*(1-exp(-f));
y(i+1)=(r*k*y(i)/(r*y(i)-y(i)+k));
end
Pm=k;
plot(T,y,'--r',T,x,'b',T,Pm,'--k')
xlabel('tempo')
ylabel('popolazione')
23
Bibliografia:
Matematical Bioeconomics – The optimal management of
renewable resources : Colin W. Clark.
Automatica, vol. 27, No.4 - Fishery Management as a Problem in Feedback Control:
O.L.R.Jacobs, D.J.Ballance and
J.W.Horwood.
Elsevier - ecological modelling 127 – Destabilising effect of
periodic harvest on population dynamics: Nguyen Phong Chau.
Annexe appendix L , E -Preliminary utilization of trawl
survey data for hake (M.Merluccius L.) population dinamics in the Adriatic sea – C.Flamingni.
24