Jump to content

Producer Consumer: Difference between revisions

From SELESwiki
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Summary==


==Screenshot==
[[Image:Consumer.gif]]
==Download Model==
Download the .scn, .sel and .lse files by clicking on the following link: [[Image:ProducerConsumer.zip]]
==Model Code Exploration==
In the following sections we will examine all of the model files for this model. Note that instead of downloading the zip file above, you could just copy the text in the boxes below into a text editor and save it with the appropriate name (Section title). Opening the resulting .scn file in the SELES simulator would run this model.
===Consume.scn===
Seles Scenario
Model.sel
SimPriority Low Priority
===Model.sel===
Seles Model
Time Units: Step kiloStep 1000 1000
Landscape Events:
  Producer.lse DEBUG
  Consumer.lse DEBUG
  Update.lse DEBUG
Spatial Variables:
  LSState[3]
  PrevLSState[3]
Legends:
  LSStateTypes = {0:Uncolonised,    1:Producer, 2:Consumer}
Global Variables:
  pInitialProducer = 0.01
  pInitialConsumer = 0.01
  pSpreadProducer = 0.1
  pSpreadConsumer = 0.2
  pDeathProducer = 0.01
  pDeathConsumer = 0.05
//  SpreadRateProducer = 1
//  SpreadRateConsumer = 1
Output Frequency: 1
===consumer.lse===
  // Process based definition for  consumber behaviour in producer/consumer  model
LSEVENT: Consumder
DEFINITIONS
  LAYER: LSState, PrevLSState
  GLOBAL CONSTANT: Uncolonised, Producer,  Consumer
  GLOBAL VARIABLE: pInitialConsumer,  pSpreadConsumer, pDeathConsumer //,  SpreadRateConsumer
ENDDEF
// Just start once
RETURNTIME = 0
// Initialize in an empty cell
PROBINIT = IF LSState EQ Uncolonised THEN  pInitialConsumer ELSE 0
TRANSITIONS
  // Decide if this cell survives
  Dies = UNIFORM(0,1) < pDeathConsumer
  // If the consumer is dying
  IF Dies
      LSState = Uncolonised
  ENDFN
  TRANSITIONS = !Dies
  LSState = Consumer
ENDTR
SPREADTIMESTEP = 1 //SpreadRateConsumer
SPREADLOCATION
  REGION CENTRED(0,1, WRAPPED)
ENDSL
SPREADPROB
  // Always spread to the same cell  (self), and spread probabilistical to  neighbouring producer cells
  SPREADPROB = IF Location EQ (SOURCE  Location) THEN 1
              ELSE IF PrevLSState EQ  Producer  THEN pSpreadConsumer
              ELSE 0
ENDSP
===producer.lse===
===update.lse===
==Suggested Experiments==
To explore this cellular automata model further, try the following:

Latest revision as of 21:02, 15 November 2006