Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of...
-
Upload
veronica-hutchinson -
Category
Documents
-
view
221 -
download
0
Transcript of Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of...
![Page 1: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/1.jpg)
Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginnersUniversity of Göttingen (Germany), 27-28 September, 2010
Winfried Kurth
Modelling point patterns, competitionand plant-herbivore interaction
related material: XL code files sm09_e??.rggURL http://www.uni-forst.gwdg.de/~wkurth/and drive T:\rgg on CIP pool stations
![Page 2: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/2.jpg)
/* specification of an irregular stand structure in the 2D plane with random tree coordinates, but close neighbourhoods of larger individuals excluded */
module Stand;
module Seedling(super.length) extends F(length, 5, 4);
module Tree(super.length) extends F(length, 7, 2);
Modelling point patterns of plant locations
![Page 3: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/3.jpg)
protected void init() [ Axiom ==> Stand; ]
![Page 4: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/4.jpg)
protected void init() [ Axiom ==> Stand; ]
public void make() [ Stand ==> for ((1 : n)) ( [ Translate(random(0, x_extens), random(0, y_extens), 0) Seedling(random(10, 20)) ] );
]
distribute the seedlings
![Page 5: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/5.jpg)
protected void init() [ Axiom ==> Stand; ]
public void make() [ Stand ==> for ((1 : n)) ( [ Translate(random(0, x_extens), random(0, y_extens), 0) Seedling(random(10, 20)) ] );
s:Seedling(h) ==> if (notOutcompeted(s) && s[Location.X] >= 0 && s[Location.Y] >= 0 && s[Location.X] <= x_extens && s[Location.Y] <= y_extens)
( Tree(factor * h + normal(0, 15)) ) else (); ]
let the seedlings develop to trees if ...
![Page 6: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/6.jpg)
boolean notOutcompeted(Seedling s) { return empty( (* t:Seedling, ( (t != s) && (distance(s, t) <= inhib_r) && (t[length] >= s[length]) ) *) ); }
competition rule
![Page 7: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/7.jpg)
int n = 150; /* initial number of seedlings */
double x_extens = 500; /* extension of stand */double y_extens = 350;
double inhib_r = 35; /* distance which inhibits growth */double factor = 4; /* proportionality of seedling and tree height */
parameters
![Page 8: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/8.jpg)
![Page 9: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/9.jpg)
![Page 10: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/10.jpg)
module Cluster(super.diameter) extends F(1, diameter, 14);module Seedling(super.length) extends F(length, 5, 4);module Tree(super.length, super.diameter) extends F(length, diameter, 2);
int sd_per_cl = 20; /* number of seedlings per cluster */int n = 8; /* number of clusters */
Extension: consider local clustering of seedlings
![Page 11: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/11.jpg)
protected void init() [ Axiom ==> [ Translate(x_extens/2, y_extens/2, -1) Box(1, x_extens, y_extens).(setColor(-1)) ] /* soil */ Stand; ]
visible soil
![Page 12: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/12.jpg)
public void make() [ Stand ==> for ((1 : n)) ( [ Translate(random(0, x_extens), random(0, y_extens), 0) Cluster(random(60, 120)) ] ); Cluster(d) ==> for ((1 : sd_per_cl)) ( [ RH(random(0, 360)) RU(90) M(random(0, 0.5) * d) RU(-90) Seedling(random(10, 30)) ] ); s:Seedling(h) ==> if (notOutcompeted(s) && s[Location.X] >= 0 && s[Location.Y] >= 0 && s[Location.X] <= x_extens && s[Location.Y] <= y_extens)
( {double hnew = factor * h + normal(0, 20);} Tree(hnew, 0.4 * h)
) else (); ]
![Page 13: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/13.jpg)
![Page 14: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/14.jpg)
Tree(length, diameter) ==> F(length, diameter, 2) Cone(length, length/3);
a (slightly) improved tree architecture
![Page 15: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/15.jpg)
Tree(length, diameter) ==> F(length, diameter, 2) Cone(length, length/3);
![Page 16: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/16.jpg)
better: instantiation rule
module Tree(float length, float diameter) ==> F(length, diameter, 2) Cone(length, length/3);
Tree(length, diameter) ==> F(length, diameter, 2) Cone(length, length/3);
![Page 17: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/17.jpg)
more complex tree architecture can also be used
![Page 18: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/18.jpg)
Behaviour of plants
Modelling seed dispersal and plant-herbivore interaction
![Page 19: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/19.jpg)
public void growPlants() [ Plant(t, r), (t > pmaxage) ==> ; Plant(t, r), (r < 0) ==> ; p:Plant, (* q:Plant *), (distance(p, q) < q[radius] && p[radius] <= q[radius]) ==> ; Plant(t, r), ((t == pgenage1 || t == pgenage2) && r >= pminrad) ==> for ((1 : (int) (pgenfac*r))) ( [ RH(random(0, 360)) RU(90) M(random(distmin, distmax)) RU(-90) Plant(0, seed_rad) ] ) Plant(t+1, r); Plant(t, r) ==> Plant(t+1, r+pgrow); ]
![Page 20: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/20.jpg)
test the examples
sm09_e23.rgg model for spreading (1 species)
sm09_e24.rgg model for spreading (2 species)
Competition is not taken into account in these examples.
It is also demonstrated how population strength values can be plotted in charts during the simulation runtime.
![Page 21: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/21.jpg)
![Page 22: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/22.jpg)
Behaviour of animals
![Page 23: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/23.jpg)
public void growAnimals() [ Animal(t, e), (t < 0) ==> Animal(t+1, e); /* start lag */ Animal(t, e), (e <= 0) ==> ; Animal(t, e), (e > f_e*thr) ==> [ RH(random(0, 360)) RU(90) M(shortstep) RU(-90) Animal(0, e/2 - f_e*respi) ] RH(random(0, 360)) RU(90) M(shortstep) RU(-90) Animal(0, e/2 - f_e*respi); a:Animal(t, e), (* p:Plant(u, r) *), (distance(a, p) < p[radius]) ==> RH(random(0, 360)) RU(90) M(shortstep) RU(-90) Animal(t+1, e + f_e*eat - f_e*respi) { p[radius] :-= eat; }; Animal(t, e) ==> RH(random(0, 360)) RU(90) M(longstep) RU(-90) Animal(t+1, e - f_e*respi); ]
![Page 24: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/24.jpg)
protected void init() [ Axiom ==> Plant(0, seed_rad) [ RH(random(0, 360)) RU(90) M(10) RU(-90) Animal(-lag, f_e*init_e) ]; ]
public void make() { growAnimals(); derive(); growPlants(); }
![Page 25: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/25.jpg)
![Page 26: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/26.jpg)
proposed model extensions:
• preferred direction of seed spreading (wind)
• sighted movement of animals (towards nearest plant)
• more realistic reproduction (and lifespan) rules for the animals
• 3-d plant architecture and animal movement
• introduction of predator animals
• mutation enhancing plant resistance (at cost of growth)
![Page 27: Summer School „Modelling and Simulation with GroIMP“ / Tutorial for beginners University of Göttingen (Germany), 27-28 September, 2010 Winfried Kurth Modelling.](https://reader036.fdocuments.in/reader036/viewer/2022062314/56649de45503460f94adb862/html5/thumbnails/27.jpg)
Thank you for your attention!