Tabonuco Yagrumo Hybrid

Tabonuco Yagrumo Hybrid preview image

1 collaborator

Uri_dolphin3 Uri Wilensky (Author)

Tags

biology 

Tagged by Reuven M. Lerner over 11 years ago

system dynamics 

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 611 times • Downloaded 109 times • Run 1 time
Download the 'Tabonuco Yagrumo Hybrid' 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?

This is a model of a simple ecosystem of two species of trees that compete for space in a forest canopy. Tabonuco Yagrumo Hybrid is different from Tabonuco Yagrumo in that the competition for space is explicitly modeled using turtles and patches, as opposed to being modeled as a relationship between stocks in the System Dynamics Modeler. It is intended to be a simple example of how the two approaches can be combined into a hybrid model, and its behavior is similar to the non-hybrid version.

HOW IT WORKS

The TABONUCO and YAGRUMO stocks represent the population of the two tree species. The rate at which the stocks of both trees grow or die is represented by the TABONUCO-GROWS and YAGRUMO-GROWS flows. These values come from the agent-based part of the model, where the trees compete for open pace in the forest. The forest is modeled using turtles and patches. Each tree is a turtle and lives on a patch. It can only grow into an open patch immediately next to it. If more trees grow, there are fewer gaps in the forest. If trees die then there are more gaps.

Tabonuco trees grow slower than yagrumo trees, these rates are represented by the TABONUCO-GROWTH-RATE and YAGRUMO-GROWTH-RATE variables. In each tick of the model, the two tree species attempt to grow into the available spaces. However, tabonuco trees outlive yagrumo trees. This relationship is represented by the TABONUCO-OUTGROWS-YAGRUMO flow from the YAGRUMO stock to the TABONUCO stock. To represent this in the agent-based portion of the model, yagrumo trees are turned into tabonuco trees in the forest.

The YAGRUMO-DIES and TABONUCO-DIES flows are connected to the DISTURBANCE variable. This variable represents the destruction of trees by hurricanes. The HURRICANE-STRENGTH and HURRICANE-FREQUENCY variables determine the timing and amount of disturbance, which can be controlled by sliders.

The model also tracks the amount of carbon and nitrogen produced by the trees. The trees produce resources via photosynthesis. The rest of the living things in the forest use these resources. The CARBON and NITROGEN variables calculate how much of those chemicals are produced by the trees.

HOW TO USE IT

Press the SETUP button to initialize the model.

To run the model continuously, press GO.

To run the model for one time step, press STEP.

Alternatively, you can run only 250 steps by pressing the SETUP REPEAT 250 [ GO ] button.

Adjust the USER-HURRICANE-FREQUENCY slider to determine how many time units occur between hurricanes.

Adjust the USER-HURRICANE-STRENGTH slider to determine how many trees are destroyed by the hurricanes

THINGS TO NOTICE

Hurricanes play an important role in the ecosystem. The relative amount of each tree is highly sensitive to both the rate and strength of hurricanes. Both species co-exist only within a certain range of hurricane frequency and strength.

The results of the model is different from Tabonuco Yagrumo in several ways. First, the curves are not smooth, because they are not generated only by a function, but have have random events generating the results. Second, the modeling of Tabonuco outgrowing Yagrumo in this model causes the Yagrumo to grow less, because the available spaces for it to grow into are reduced.

THINGS TO TRY

Change the USER-HURRICANE-FREQUENCY slider, observe what happens to the YAGRUMO population, and the productivity. Do the same with USER-HURRICANE-STRENGTH.

Use the BehaviorSpace Tool to sweep the parameter space for the USER-HURRICANE-FREQUENCY and USER-HURRICANE-STRENGTH.

Use the GLOBALS monitor to observe the value of stocks, constants, model time, and model dt.

EXTENDING THE MODEL

Experiment with trying different rules for competition for space.

Vary the strength of the hurricanes, randomly, across an interval.

NETLOGO FEATURES

This model provides a simple example of combining agent-based and system dynamics modeling.

RELATED MODELS

Tabonuco Yagrumo

CREDITS AND REFERENCES

The following model is based on the work of The Learning Partnership in the Journey to El Yunque project (PI's include Steven McGee, Jess Zimmerman, and Steven Croft). To view the original materials or to learn more about that project, visit http://elyunque.net/journey.html.

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:

COPYRIGHT AND LICENSE

Copyright 2006 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.

Comments and Questions

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

Click to Run Model

;; To see the rest of this model, look in the System Dynamics Modeler
;; window.  (If the window isn't showing, you can open it from the
;; Tools menu.)

globals [ previous-carbon
          tabonuco-growth
          yagrumo-growth
          tabonuco-death
          yagrumo-death
          converted-to-tabonuco ]

breed [ tabonucos tabonuco ]
breed [ yagrumos yagrumo ]

to setup
  ca
  set-default-shape yagrumos "plant"
  set-default-shape tabonucos "tree"
  set previous-carbon 0
  system-dynamics-setup             ;; defined by System Dynamics Modeler
  agent-setup
  do-plot
end 

to go
  agent-go
  system-dynamics-go                ;; defined by System Dynamics Modeler
  do-plot
  set previous-carbon carbon
end 

;; Agent-Based rule setup for model.

to agent-setup
  ask n-of tabonuco-stock patches [ sprout-tabonucos 1 [ set color sky ] ]
  ask n-of yagrumo-stock patches with [ not any? turtles-here ] [ sprout-yagrumos 1 [ set color pink ] ]
end 


;; Agent-Based rules for the model
;; These are only run oncce per cycle of the model, and the order is important
;; Tabonuco trees get first shot at open patches.

to agent-go
  set yagrumo-growth agent-yagrumo-growth yagrumo-stock
  set tabonuco-growth agent-tabonuco-growth tabonuco-stock

  set tabonuco-death agent-tabonuco-death disturbance
  set yagrumo-death agent-yagrumo-death disturbance
  set converted-to-tabonuco agent-tabonuco-conversion tabonuco-outgrowth-rate
end 

to-report empty-patches
  report patches with [ not any? turtles-here ]
end 

;; Rules governing the conversion of yagrumo trees to tabonuco trees
;; Only yagrumo trees next to an existing tabonuco tree can be converted
;; and only tabonuco-outgrowth-rate are converted.

to-report agent-tabonuco-conversion [ rate ]
  let total-converted 0
  let convertables yagrumos with [ any? neighbors with [ any? tabonucos-here ] ]
  ask n-of (count convertables * rate) convertables
    [ set total-converted total-converted + 1
      set breed tabonucos set color sky ]
  report total-converted
end 


;; Rules governing the growth of Tabonuco trees
;; only trees with an empty patch next to them get a chance to reproduce
;; and only tabonuco-growth-rate of those trees can reproduce

to-report agent-tabonuco-growth [ current ]
  let total-grown 0
  let growable tabonucos with [ not all? neighbors [ any? turtles-here ] ]
  ask n-of ( count growable * tabonuco-growth-rate ) growable
    [ let seedpatch one-of neighbors with [ not any? turtles-here ]
      if ( seedpatch != nobody )
        [ ask seedpatch
            [ sprout-tabonucos 1 [ set color sky ]
              set total-grown total-grown + 1
            ]
        ]
    ]
    report total-grown
end 

;; Rules governing the growth of Yagrumo trees
;; only trees with an empty patch next to them get a chance to reproduce
;; and only tabonuco-growth-rate of those trees can reproduce

to-report agent-yagrumo-growth [ current ]
 let total-grown 0
  let growable yagrumos with [ not all? neighbors [ any? turtles-here ] ]
  ask n-of ( count growable  * yagrumo-growth-rate ) growable
    [ let seedpatch one-of neighbors with [ not any? turtles-here ]
      if ( seedpatch != nobody )
        [ ask seedpatch
            [ sprout-yagrumos 1 [ set color pink ]
              set total-grown total-grown + 1
            ]
        ]
    ]
    report total-grown
end 


;; Rules governing destruction of Tabonuco trees

to-report agent-tabonuco-death [ dist ]
  let total-dead 0
  ask n-of min (list (count tabonucos) ( tabonuco-stock * dist ) ) tabonucos
    [ set total-dead total-dead + 1
      die
    ]
  report total-dead
end 

;; Rules governing destruction of Yagrumo trees

to-report agent-yagrumo-death [ dist ]
  let total-dead 0
  ask n-of min (list (count yagrumos) ( yagrumo-stock * dist ) ) yagrumos
    [ set total-dead total-dead + 1
      die
    ]
  report total-dead
end 

to do-plot
  set-current-plot "output"
  set-current-plot-pen "carbon"
  plotxy ticks carbon
  set-current-plot-pen "nitrogen"
  plotxy ticks nitrogen
  set-current-plot "productivity"
  set-current-plot-pen "productivity"
  plotxy ticks productivity
  set-current-plot "trees"
  set-current-plot-pen "tabonuco"
  plotxy ticks amount-of-tabonuco
  set-current-plot-pen "yagrumo"
  plotxy ticks amount-of-yagrumo
end 

to-report pulse [ volume initial interval ]
  set interval abs interval
  let our-x ticks - initial
  let peak volume / dt
  let slope peak / ( dt / 2 )
  let offset abs our-x
  ;; if we have passed the initial pulse, then recalibrate
  ;; to the next pulse interval, if there IS an interval given
  if ( interval > 0 and our-x > ( dt / 2 ) )
    [ set offset  ( our-x mod interval )
      if ( offset > dt / 2 ) [ set offset 0 + offset - interval ]  ]
  ;; the down side of the pulse
  if ( offset >= 0 and offset <= dt / 2  )
     [ report peak - ( slope * offset ) ]
  ;; the upside of the pulse
  if ( offset < 0 and offset >= ( 0 - ( dt / 2 ) ) )
     [ report slope * min (list ( dt / 2 ) ( abs ( interval - offset ) ) ) ]
  report 0
end 

to test-pulse [ volume initial interval ]
  setup
  repeat 250 [
    let y pulse volume initial interval
    output-print y
    set-current-plot "productivity"
    plotxy ticks y
    tick-advance dt ]
end 


; Copyright 2006 Uri Wilensky.
; See Info tab for full copyright and license.

There are 15 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 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 Model from NetLogo distribution Download this version
Uri Wilensky over 14 years ago Tabonuco Yagrumo Hybrid Download this version

Attached files

File Type Description Last updated
Tabonuco Yagrumo Hybrid.png preview Preview for 'Tabonuco Yagrumo Hybrid' over 11 years ago, by Uri Wilensky Download

This model does not have any ancestors.

This model does not have any descendants.