Producer Consumer: Difference between revisions
Appearance
No edit summary |
|||
| Line 43: | Line 43: | ||
===consumer.lse=== | ===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=== | ===producer.lse=== | ||
Revision as of 23:17, 8 November 2006
Summary
Screenshot
Download Model
Download the .scn, .sel and .lse files by clicking on the following link: File: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:
