1. Introduction Modèle Programmation Généralisation
Librairie simecol pour R
Timothée POISOT
3 février 2009
Librairie simecol pour R
1 / 20
2. Introduction Modèle Programmation Généralisation
Plan
Introduction
1
Modèle
2
Programmation
3
Aller plus loin
4
Plusieurs espèces
Stochasticité
Librairie simecol pour R
2 / 20
3. Introduction Modèle Programmation Généralisation
Objectifs
Écrire un modèle simple. . .
1
Écrire les équations en langage S
Écrire le vecteur de paramètes
Intégrer dans les structures de simecol
Librairie simecol pour R
3 / 20
4. Introduction Modèle Programmation Généralisation
Objectifs
Écrire un modèle simple. . .
1
Écrire les équations en langage S
Écrire le vecteur de paramètes
Intégrer dans les structures de simecol
. . . et aller plus loin
2
Plusieurs espèces
Stochasticité
Librairie simecol pour R
3 / 20
5. Introduction Modèle Programmation Généralisation
Pré-requis
R http://cran.r-project.org
2.7 au moins. . .
simecol Dans R : install.packages(’simecol’)
Avec les dépendances !
les fichiers http://homepage.mac.com/tim.poisot/R
Fichier intro-simecol.r
Pour le code source commenté !
Librairie simecol pour R
4 / 20
6. Introduction Modèle Programmation Généralisation
Le modèle
k1
k2
proie Prédateur
k3
Librairie simecol pour R
5 / 20
7. Introduction Modèle Programmation Généralisation
Les équations
dp
= p · (k1 − k2 P ) (1)
dt
dP
= −P · (k3 − k2 p) (2)
dt
Librairie simecol pour R
6 / 20
8. Introduction Modèle Programmation Généralisation
Écriture du modèle
Vecteur nommé de paramètres
p <- c(’k1’=0.2,’k2’=0.2,’k3’=0.2)
Équations
dx1 <- p[quot;k1quot;]*x[1] -p[quot;k2quot;]*x[1]*x[2]
dx2 <- - p[quot;k3quot;]*x[2] +p[quot;k2quot;]*x[1]*x[2]
Note : x[1] et x[2] contiennent p et P !
Librairie simecol pour R
7 / 20
9. Modèle fonction main
arguments
solver time
parms
init
10. Introduction Modèle Programmation Généralisation
Intégrer dans simecol
LVsim <- new(quot;odeModelquot;,
main = function(time,init,parms) {
# MODELE !
list(c(dp,dP))
},
parms = c(’alpha’=0.2,
’beta’=0.2,
’gamma’=0.2,
’sigma’=0.2),
times = c(from=0, to=60, by=1e-1),
init = c(0.5,0.5),
solver = quot;lsodarquot;
)
Librairie simecol pour R
9 / 20
11. Introduction Modèle Programmation Généralisation
Intégrer dans simecol
# MODELE
pars <- parms
p <- init[1]
P <- init[2]
dp <- p*(pars[’alpha’]-pars[’beta’] *P)
dP <- -P*(pars[’gamma’]-pars[’sigma’]*p)
Librairie simecol pour R
10 / 20
12. Introduction Modèle Programmation Généralisation
Go !
Pour lancer la simulation (sim) :
out(sim(LVsim))
Renvoie (out) le résultat :
time 1 2
1 0.0 0.5000000 1.0000000
2 0.5 0.4986641 0.9535809
3 1.0 0.4981401 0.9107796
4 1.5 0.4968445 0.8726915
5 2.0 0.4952770 0.8383405
6 2.5 0.4939464 0.8068871
7 3.0 0.4932749 0.7776996
8 etc...
Librairie simecol pour R
11 / 20
13. Introduction Modèle Programmation Généralisation
Résultat
1.8
1.6
1.4
1.2
Effectif
1.0
0.8
0.6
0 20 40 60 80 100
Temps
Librairie simecol pour R
Prédateurs et proies 12 / 20
14. Introduction Modèle Programmation Généralisation
Quelques infos sur les vecteurs
Additivité
c + V = {c + V1 , c + V2 , . . . , c + Vn }
U + V = {U1 + V1 , U2 + V2 , . . . , Un + Vn }
Multiplication
c · V = {cV1 , cV2 , . . . , cVn }
U · V = {U1 V1 , U2 V2 , . . . , Un Vn }
Et autres
n
sum(V)= i=1 Vi
n
prod(V)= i=1 Vi
length(V)= n
V[i]= Vi
V[1:4]= {V1 , V2 , V3 , V4 }
Librairie simecol pour R
13 / 20
15. Introduction Modèle Programmation Généralisation
Les équations du “nouveau” modèle
dpi
= pi · (k1i − k2i P ) (3)
dt
n
dP
= −P · k3 − k2i pi (4)
dt i=1
n = 2, (k1 )1 > (k1 )2 , et (k2 )1 > (k2 )2
Librairie simecol pour R
14 / 20
16. Introduction Modèle Programmation Généralisation
pars <- parms
p <- init[1:2]
P <- init[3]
K1 <- c(pars[’k1a’],pars[’k1b’])
K2 <- c(pars[’k2a’],pars[’k2b’])
dp <- p*(K1 - K2*P)
dP <- -P*(pars[’k3’] - sum(K2*p))
list(c(dp,dP))
Librairie simecol pour R
15 / 20
17. Introduction Modèle Programmation Généralisation
Résultat
3.0
2.5
2.0
Effectif
1.5
1.0
0.5
0.0
0 50 100 150 200
Temps
Librairie simecol pour R
16 / 20
18. Introduction Modèle Programmation Généralisation
Stochasticité
pars <- parms
p <- init[1:2]
P <- init[3]
K1 <- c(pars[’k1a’],pars[’k1b’])
K2 <- c(pars[’k2a’],pars[’k2b’])
+ runif(length(p),-0.0002,0.0002)
dp <- p*(K1 - K2*P)
dP <- -P*(pars[’k3’] - sum(K2*p))
list(c(dp,dP))
Librairie simecol pour R
17 / 20