Plant Growth
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
Plants have the interesting tendency to "find" resources in their environment. It is not uncommon to see plants whose leaves and stalks have bent over time in the direction of nearby sunlight, or plants that have grown long roots directed to a nearby source of moisture. It almost seems as if these plants are actually scanning the environment around them to find stable sources of nutrients. Since plants do not have eyes, we might ask how they are able to accomplish this.
This model addresses the question of how a plant is able to effectively locate resources in its environment, generally focusing growth in 'promising' areas. It is not intended to be biologically realistic.
HOW IT WORKS
The plant is composed of two kinds of cells --- light collecting (leaves), and water collecting (roots). The plant germinates with only one leaf cell and one root cell, and will grow itself by adding new cells as long as it has the nutrients to sustain itself. Nutrients (sunlight and moisture) are concentrated in randomly-determined areas of the environment, and are collected wherever a root or leaf of the plant is located. These nutrients are then circulated around the plant as 'sugar' and 'water', when, in each turn, cells exchange resources with adjacent cells. This circulation is critical, since leaf cells do not collect any water and root cells do not produce sugar, and yet both root and leaf cells each need both water and sugar --- a cell dies if it runs out of either resource. All cells of the plant use up a fixed amount of both sugar and water every turn.
The main problem that confronts the plant is that in order to explore the environment it needs to grow outwards in many directions, but the roots/leaves that result from this may be bad investments. That is, they take up nutrients but do not contribute any. What rules can we introduce so that the plant will focus growth mainly in sunny or watery areas?
The strategy employed here is to allow sugar to propagate down to the roots more effectively than it propagates up to other leaves, and to allow water to propagate up to the leaves more effectively than it propagates down to other roots. That is, we have intentionally privileged the traffic of nutrients both in specific directions and according to the nature of the nutrient. This tends to isolate subsections of the plant that fail to collect adequate nutrients.
HOW TO USE IT
First click the SETUP-PATCHES button to allocate moisture and light and to setup the environment. You may want to click it again if you are not satisfied with the allocation of these nutrients. To adjust how these nutrients are distributed among the patches 1) use the NUTRIENT-DENSITY slider to determine the density of loci of light/moisture, 2) the NUTRIENT-CONCENTRATION slider to determine the concentration of light/moisture at each locus.
Second, click the SETUP-PLANT button to create a "seed". This can be clicked at any time to create a new plant so that it is possible to test multiple plants over the same environment.
Finally, click the GO button to watch the seed develop.
Very often, due to a lack of nutrients in the immediate environment of the seed, a new plant will fail. The plant (seed) begins with enough reserve nutrients to explore some of the area around it, but it will quickly die if it does not otherwise locate adequate nutrients in the environment. In this case, try creating a new plant to see if perhaps another plant will take hold (because of the use of a random function in the model, no two plants fare the same - even in an identical environment). If this does not work, then try resetting the environment, or even try increasing the concentration or density of nutrients in the environment.
Also, for variety, the CACTUS? switch controls whether the plant will grow only up and down instead of in all directions.
THINGS TO NOTICE
Observe the location of nutrients within the environment before running a plant. The colors in the environment are scaled to reveal where sources of nutrients are. Squares of yellow with a dark center indicate sunny areas, squares of blue with a dark center indicate watery areas.
How large do you expect a plant to grow (if at all) with the given setup?
Are plants more likely to grow (i.e. not die) in cactus mode or bush mode?
What happens when a cell in the middle of a branch, formerly connecting other cells to the rest of the plant, dies? Why does this happen?
THINGS TO TRY
Try growing different plants with the same patch setup (nutrient allocation). Can you generalize about the growth of a plant in a given environment?
Try growing a plant in different environments, and with different CACTUS? settings. Do you notice any limits to how large the plant can grow?
EXTENDING THE MODEL
Sunlight and water are presented in this model as dots along a flat landscape. Real sunlight beams down from above though, and real water is generally present in a continuous gradient beneath the ground. Come up with an alternative scheme for representing sunlight and water in this model.
In order to be able to explore a larger range of ecologies, it may be useful to add interface features (sliders) and code that allows a separate setup of sun and water resources.
Currently, water resources are not depleted -- they are not even replenished, they are simply held at constant values. You can try making the model more realistic by addressing this issue.
Improve the growth rules used in this model. A simple way to explore this would be to try and improve upon the parameters in the procedures share-up
, share-down
, and share-side
(which are fixed). For this, it may be useful to set these parameters as values of sliders on the Interface. A more in depth way would be to come up with an entirely new set of sharing or growth rules, or a different strategy altogether.
This model explores rules that will cause an artificial plant to grow in an "efficient" manner. Efficiency can be roughly defined here as the number of leaves in the plant that are "good investments" for the plant as opposed to those that only use up resources but do not contribute any. An alternative approach is to equate efficiency with the total amount of water and sunlight collected by a plant in a given environment. Think of a quantifiable measure ( a "metric") of efficiency for a plant and add this measure to the model. Now, use this measure in order to improve upon the growth rules of the plant? Does any one set of such rules work better than all others for all tested environments?
The settings in this model allow plants to grow in two varieties (cactus and bush) by varying the rules for where a new cell can be located relative to its parent cell. Can you come up with rules that will yield alternative shapes for the plant (i.e. palm tree, ivy...)?
NETLOGO FEATURES
Note the use of the diffuse
primitive to spread out the water and sunlight.
HOW TO CITE
If you mention this model in a publication, we ask that you include these citations for the model itself and for the NetLogo software:
- Wilensky, U. (1998). NetLogo Plant Growth model. http://ccl.northwestern.edu/netlogo/models/PlantGrowth. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.
COPYRIGHT AND LICENSE
Copyright 1998 Uri Wilensky.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.
This model was created as part of the project: CONNECTED MATHEMATICS: MAKING SENSE OF COMPLEX PHENOMENA THROUGH BUILDING OBJECT-BASED PARALLEL MODELS (OBPML). The project gratefully acknowledges the support of the National Science Foundation (Applications of Advanced Technologies Program) -- grant numbers RED #9552950 and REC #9632612.
This model was converted to NetLogo as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227. Converted from StarLogoT to NetLogo, 2002.
Comments and Questions
turtles-own [ water ;; Amount of stored water sugar ;; Amount of stored sugar adjacent ;; Holds the identity of the adjacent turtles when nutrients are being shared ] patches-own [ moisture ;; Amount of water in the soil light ;; Amount of light available for the leaves to turn into sugar ] to setup-patches clear-all ask patches [ ifelse pycor > 0 [ ;; Allocate Light ifelse (random (world-width ^ 2)) < (nutrient-density * world-width) [ set light random nutrient-concentration ] [ set light 0 ] ] [ ;; Allocate Moisture ifelse (random (world-width ^ 2)) < (nutrient-density * world-width) [ set moisture random nutrient-concentration ] [ set moisture 0 ] ] ] diffuse-light diffuse-moisture ask patches [ ifelse pycor > 0 [ set pcolor scale-color yellow light 14 -1 set moisture 0 ;; No moisture in the light area ] [ set pcolor scale-color blue moisture 14 -1 set light 0 ;; No light in the moisture area ] ;; draw the ground if pycor = 0 and abs pxcor > 2 [ set pcolor gray ] ] reset-ticks end to diffuse-light diffuse light 0.1 if max [light] of patches > 15 [ diffuse-light ] end to diffuse-moisture diffuse moisture 0.1 if max [moisture] of patches > 15 [ diffuse-moisture ] end to setup-plant set-default-shape turtles "circle" ;; Kill the old Plant ask turtles [ die ] ;; Create the new Plant crt 1 [ set color brown set sugar 5000 set water 5000 set heading 0 hatch 1 [ set color green fd 1 ] ] end to grow ask turtles [ ;; Get Nutrients from environment ifelse color = green [ set sugar sugar + light ] [ set water water + moisture ] ;; Grow Plant if random 100 < 1 [ hatch 1 [ move ;; Five Conditions under which the new growth should be aborted if sum [count turtles-here] of neighbors >= 3 [ die ] ;; Overcrowding if any? other turtles-here [ die ] ;; Overlapping if color = green and pycor < 1 [ die ] ;; Leaves Underground if color = brown and pycor > 0 [ die ] ;; Roots Aboveground if pcolor = gray [ die ] ;; In the ground set sugar 1 set water 1 ] ] share-with-gs ;; Use Resources set sugar sugar - 0.1 set water water - 0.1 if sugar <= 0 or water <= 0 [ die ] ] tick end to move ifelse cactus? [ ;; Plant grows up and down only set heading 180 * random 2 rt 30 - 30 * random 3 ] [ ;; Plant grows in all directions rt random-float 360 ] ;; if this is the edge of the world obviously don't grow there. ifelse can-move? 1 [ fd 1 ] [ die ] end to share-with-gs set adjacent nobody if any? turtles-at 1 1 [ set adjacent one-of turtles-at 1 1 share-up ] if any? turtles-at 0 1 [ set adjacent one-of turtles-at 0 1 share-up ] if any? turtles-at -1 1 [ set adjacent one-of turtles-at -1 1 share-up ] if any? turtles-at 1 0 [ set adjacent one-of turtles-at 1 0 share-side ] if any? turtles-at 1 -1 [ set adjacent one-of turtles-at 1 -1 share-down ] if any? turtles-at 0 -1 [ set adjacent one-of turtles-at 0 -1 share-down ] if any? turtles-at -1 -1 [ set adjacent one-of turtles-at -1 -1 share-down ] end to share-up let old-water water set water 0.95 * water + 0.02 * [water] of adjacent ask adjacent [ set water 0.98 * water + 0.02 * old-water ] end ;; Nutrients are shared equally, but the sharing is executed by the left turtle to share-side let old-water water set water 0.95 * water + 0.05 * [water] of adjacent ask adjacent [ set water 0.95 * water + 0.05 * old-water ] let old-sugar sugar set sugar 0.95 * sugar + 0.05 * [sugar] of adjacent ask adjacent [ set sugar 0.95 * sugar + 0.05 * old-sugar ] end to share-down let old-sugar sugar set sugar 0.95 * sugar + 0.02 * [sugar] of adjacent ask adjacent [ set sugar 0.98 * sugar + 0.05 * old-sugar ] end ; Copyright 1998 Uri Wilensky. ; See Info tab for full copyright and license.
There are 10 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Plant Growth.png | preview | Preview for 'Plant Growth' | over 11 years ago, by Uri Wilensky | Download |
This model does not have any ancestors.
This model does not have any descendants.