Plant Growth

Plant Growth preview image

1 collaborator

Uri_dolphin3 Uri Wilensky (Author)

Tags

biology 

Tagged by Reuven M. Lerner over 11 years ago

Model group CCL | Visible to everyone | Changeable by group members (CCL)
Model was written in NetLogo 5.0.4 • Viewed 581 times • Downloaded 63 times • Run 0 times
Download the 'Plant Growth' modelDownload this modelEmbed this model

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.

CC BY-NC-SA 3.0

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

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

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.

Uploaded by When Description Download
Uri Wilensky over 11 years ago Updated to NetLogo 5.0.4 Download this version
Uri Wilensky about 12 years ago Updated version tag Download this version
Uri Wilensky about 12 years ago Updated to version from NetLogo 5.0.3 distribution Download this version
Uri Wilensky almost 13 years ago Updated to NetLogo 5.0 Download this version
Uri Wilensky over 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 14 years ago Model from NetLogo distribution Download this version
Uri Wilensky over 14 years ago Plant Growth Download this version

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.